Skip to content

Commit 33c34ce

Browse files
committed
Firewall rules changes for new sysevent
1 parent 9280c3f commit 33c34ce

File tree

1 file changed

+54
-6
lines changed

1 file changed

+54
-6
lines changed

source/firewall/firewall_ipv6.c

Lines changed: 54 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@
9797
#include <netinet/in.h>
9898
#include <net/if.h>
9999
#endif
100+
#ifdef _ONESTACK_PRODUCT_REQ_
101+
#include <rdkb_feature_mode_gate.h>
102+
#endif
100103

101104
void* bus_handle ;
102105
int sysevent_fd;
@@ -1246,18 +1249,41 @@ void do_ipv6_filter_table(FILE *fp){
12461249
sysevent_get(sysevent_fd, sysevent_token, "previous_ipv6_prefix", prev_prefix, sizeof(prev_prefix));
12471250
#endif
12481251

1249-
#ifdef WAN_FAILOVER_SUPPORTED
1252+
#ifdef WAN_FAILOVER_SUPPORTED
12501253
if (0 == checkIfULAEnabled())
12511254
{
12521255
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix_ula", prefix, sizeof(prefix));
12531256
}
12541257
else
12551258
{
1259+
#ifdef _ONESTACK_PRODUCT_REQ_
1260+
if(isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION))
1261+
{
1262+
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix_delegation", prefix, sizeof(prefix));
1263+
}
1264+
else
1265+
{
1266+
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix", prefix, sizeof(prefix));
1267+
}
1268+
#else
1269+
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix", prefix, sizeof(prefix));
1270+
#endif
1271+
}
1272+
1273+
#else
1274+
#ifdef _ONESTACK_PRODUCT_REQ_
1275+
if(isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION))
1276+
{
1277+
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix_delegation", prefix, sizeof(prefix));
1278+
}
1279+
else
1280+
{
12561281
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix", prefix, sizeof(prefix));
12571282
}
1258-
#else
1283+
#else
12591284
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix", prefix, sizeof(prefix));
1260-
#endif
1285+
#endif
1286+
#endif
12611287
#ifdef FEATURE_MAPE
12621288
if (prev_prefix[0] != '\0' && prefix[0] != '\0' && strcmp(prev_prefix, prefix) != 0)
12631289
{
@@ -1267,8 +1293,14 @@ void do_ipv6_filter_table(FILE *fp){
12671293
if ( '\0' != prefix[0] ) {
12681294
//fprintf(fp, "-A FORWARD ! -s %s -i %s -m limit --limit 10/sec -j LOG --log-level %d --log-prefix \"UTOPIA: FW. IPv6 FORWARD anti-spoofing\"\n", prefix, lan_ifname,syslog_level);
12691295
//fprintf(fp, "-A FORWARD ! -s %s -i %s -m limit --limit 10/sec -j REJECT --reject-with icmp6-adm-prohibited\n", prefix, lan_ifname);
1270-
#ifdef _COSA_FOR_BCI_
1296+
#if defined (_COSA_FOR_BCI_) || defined (_ONESTACK_PRODUCT_REQ_)
12711297
/* adding forward rule for PD traffic */
1298+
#ifdef _ONESTACK_PRODUCT_REQ_
1299+
if(isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION))
1300+
{
1301+
fprintf(fp, "-A FORWARD -s %s -i %s -j ACCEPT\n", prefix, lan_ifname);
1302+
}
1303+
#else
12721304
fprintf(fp, "-A FORWARD -s %s -i %s -j ACCEPT\n", prefix, lan_ifname);
12731305
if (strncasecmp(firewall_levelv6, "Custom", strlen("Custom")) == 0)
12741306
{
@@ -1280,6 +1312,7 @@ void do_ipv6_filter_table(FILE *fp){
12801312
fprintf(fp, "-A FORWARD -d %s -o %s -j ACCEPT\n", prefix, lan_ifname);
12811313
}
12821314
}
1315+
#endif
12831316
#endif
12841317
FIREWALL_DEBUG("current_wan_ifname is %s default_wan_ifname is %s lan_ifname is %s wan6_ifname %s \n" COMMA current_wan_ifname COMMA default_wan_ifname COMMA lan_ifname COMMA wan6_ifname);
12851318
if (strcmp(current_wan_ifname,default_wan_ifname ) == 0)
@@ -2053,10 +2086,25 @@ void applyRoutingRules(FILE* fp,ipv6_type type)
20532086
memset(prefix,0,sizeof(prefix));
20542087
int i ;
20552088
if ( ULA_IPV6 == type)
2089+
{
20562090
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix_ula", prefix, sizeof(prefix));
2091+
}
20572092
else
2058-
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix", prefix, sizeof(prefix));
2059-
if (strlen(prefix) != 0 )
2093+
{
2094+
#ifdef _ONESTACK_PRODUCT_REQ_
2095+
if(isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION))
2096+
{
2097+
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix_delegation", prefix, sizeof(prefix));
2098+
}
2099+
else
2100+
{
2101+
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix", prefix, sizeof(prefix));
2102+
}
2103+
#else
2104+
sysevent_get(sysevent_fd, sysevent_token, "ipv6_prefix", prefix, sizeof(prefix));
2105+
#endif
2106+
}
2107+
if (strlen(prefix) != 0 )
20602108
{
20612109
char *token_pref =NULL;
20622110
token_pref = strtok(prefix,"/");

0 commit comments

Comments
 (0)