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
101104void * bus_handle ;
102105int 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