diff --git a/source/firewall/Makefile.am b/source/firewall/Makefile.am index 0af5c826..6ac566cf 100644 --- a/source/firewall/Makefile.am +++ b/source/firewall/Makefile.am @@ -29,6 +29,9 @@ firewall_SOURCES += firewall_lib.c firewall_dsl.c rabid.c AM_LDFLAGS += -lrdkconfig endif +if ONESTACK_PRODUCT_REQ +AM_LDFLAGS += -ldevicemode -lonestack_syscfg -lonestack_log -lrdkb_feature_mode_gate +endif nfq_handler_SOURCES = raw_socket_send.c nfq_handler.c firewall_LDADD = $(top_builddir)/source/syscfg/lib/libsyscfg.la \ diff --git a/source/firewall/firewall.h b/source/firewall/firewall.h index 2d3bc2a4..b2fffee3 100644 --- a/source/firewall/firewall.h +++ b/source/firewall/firewall.h @@ -619,7 +619,8 @@ int prepare_multinet_filter_output_v6(FILE *fp); */ int prepare_ipv6_rule_ex_mode(FILE *raw_fp, FILE *mangle_fp, FILE *nat_fp, FILE *filter_fp); #endif -#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) && !defined(_CBR_PRODUCT_REQ_) +#if (defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) && !defined(_CBR_PRODUCT_REQ_)) \ + || defined(_ONESTACK_PRODUCT_REQ_) /** * @brief Prepare IPv6 MultiNet rules with DHCPv6 prefix delegation support. * diff --git a/source/firewall/firewall_ipv6.c b/source/firewall/firewall_ipv6.c index 442402c7..f019776e 100644 --- a/source/firewall/firewall_ipv6.c +++ b/source/firewall/firewall_ipv6.c @@ -98,6 +98,9 @@ #include #endif +#ifdef _ONESTACK_PRODUCT_REQ_ +#include +#endif void* bus_handle ; int sysevent_fd; char sysevent_ip[19]; @@ -862,11 +865,17 @@ void do_ipv6_filter_table(FILE *fp){ } #endif /*_HUB4_PRODUCT_REQ_*/ - #if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) && ! defined(_CBR_PRODUCT_REQ_) +#if (defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) && !defined(_CBR_PRODUCT_REQ_)) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if ( isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION) == true) + #endif + { + /*Add a simple logic here to make traffic allowed for lan interfaces * exclude primary lan*/ prepare_ipv6_multinet(fp); - #endif + } +#endif #if !defined(_XER5_PRODUCT_REQ_) && !defined (_SCER11BEL_PRODUCT_REQ_) && !defined(_COSA_QCA_ARM_) //wan0 is not applicable for XER5 /* not allow ping wan0 from brlan0 */ int i; @@ -1705,9 +1714,17 @@ void do_ipv6_filter_table(FILE *fp){ FIREWALL_DEBUG("Exiting prepare_ipv6_firewall \n"); } -#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) && ! defined(_CBR_PRODUCT_REQ_) -static int prepare_ipv6_multinet(FILE *fp) +#if (defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) && !defined(_CBR_PRODUCT_REQ_)) \ + || defined(_ONESTACK_PRODUCT_REQ_) +int prepare_ipv6_multinet(FILE *fp) { +#ifdef _ONESTACK_PRODUCT_REQ_ + if (!isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + { + /* PD feature disabled */ + return 0; + } +#endif char active_insts[32] = {0}; char lan_pd_if[128] = {0}; char *p = NULL; diff --git a/source/scripts/init/c_registration/15_dhcpv6_client.c b/source/scripts/init/c_registration/15_dhcpv6_client.c index 0ec17f83..b33d10f1 100644 --- a/source/scripts/init/c_registration/15_dhcpv6_client.c +++ b/source/scripts/init/c_registration/15_dhcpv6_client.c @@ -57,7 +57,7 @@ const char* SERVICE_CUSTOM_EVENTS[] = { "lan-status|/usr/bin/service_dhcpv6_client", NULL }; -#elif defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) +#elif defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) const char* SERVICE_CUSTOM_EVENTS[] = { "erouter_mode-updated|/etc/utopia/service.d/service_dhcpv6_client.sh", "phylink_wan_state|/etc/utopia/service.d/service_dhcpv6_client.sh", diff --git a/source/scripts/init/c_registration/15_dhcpv6_server.c b/source/scripts/init/c_registration/15_dhcpv6_server.c index 0c45dfcd..c44e0fb1 100644 --- a/source/scripts/init/c_registration/15_dhcpv6_server.c +++ b/source/scripts/init/c_registration/15_dhcpv6_server.c @@ -47,7 +47,7 @@ const char* SERVICE_CUSTOM_EVENTS[] = { "dhcpv6_server-restart|/usr/bin/service_ipv6", NULL }; -#elif defined (CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) +#elif defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) const char* SERVICE_CUSTOM_EVENTS[] = { "dhcpv6_option_changed|/etc/utopia/service.d/service_dhcpv6_server.sh|NULL|"TUPLE_FLAG_EVENT, NULL diff --git a/source/scripts/init/c_registration/20_routing.c b/source/scripts/init/c_registration/20_routing.c index b68ce5fc..a410aa7e 100644 --- a/source/scripts/init/c_registration/20_routing.c +++ b/source/scripts/init/c_registration/20_routing.c @@ -44,7 +44,7 @@ #define SERVICE_NAME "routed" #define SERVICE_DEFAULT_HANDLER "/etc/utopia/service.d/service_routed.sh" -#ifdef CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) const char* SERVICE_CUSTOM_EVENTS[] = { "wan-status|/etc/utopia/service.d/service_routed.sh", "lan-status|/etc/utopia/service.d/service_routed.sh", diff --git a/source/service_ipv6/Makefile.am b/source/service_ipv6/Makefile.am index 8e96cfff..6f4c7f9d 100644 --- a/source/service_ipv6/Makefile.am +++ b/source/service_ipv6/Makefile.am @@ -25,6 +25,9 @@ AM_CPPFLAGS = -I$(top_srcdir)/source/include \ AM_LDFLAGS = -lccsp_common -lsecure_wrapper $(DBUS_LIBS) +if ONESTACK_PRODUCT_REQ +AM_LDFLAGS += -ldevicemode -lonestack_syscfg -lonestack_log -lrdkb_feature_mode_gate +endif service_ipv6_SOURCES = service_ipv6.c service_ipv6_main.c service_ipv6_LDADD = $(top_builddir)/source/util/utils/libutopiautil.la \ diff --git a/source/service_ipv6/service_ipv6.c b/source/service_ipv6/service_ipv6.c index a8d99354..f2f4fdb9 100644 --- a/source/service_ipv6/service_ipv6.c +++ b/source/service_ipv6/service_ipv6.c @@ -53,6 +53,9 @@ #include "ccsp_memory.h" #endif +#ifdef _ONESTACK_PRODUCT_REQ_ +#include +#endif #ifdef _HUB4_PRODUCT_REQ_ #include "ccsp_dm_api.h" #include "ccsp_custom.h" @@ -391,10 +394,21 @@ STATIC int get_dhcpv6s_pool_cfg(struct serv_ipv6 *si6, dhcpv6s_pool_cfg_t *cfg) DHCPV6S_SYSCFG_GETI(DHCPV6S_NAME, "pool", cfg->index, "", 0, "X_RDKCENTRAL_COM_DNSServersEnabled", cfg->X_RDKCENTRAL_COM_DNSServersEnabled); #ifdef MULTILAN_FEATURE -#ifdef CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION - DHCPV6S_SYSCFG_GETS(DHCPV6S_NAME, "pool", cfg->index, "", 0, "IAInterface", iface_name); -#else - DHCPV6S_SYSCFG_GETS(DHCPV6S_NAME, "pool", cfg->index, "", 0, "Interface", iface_name); +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION) == true) + #endif + { + DHCPV6S_SYSCFG_GETS(DHCPV6S_NAME, "pool", cfg->index, "", 0, "IAInterface", iface_name); + } +#endif +#if !defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION) == false) + #endif + { + DHCPV6S_SYSCFG_GETS(DHCPV6S_NAME, "pool", cfg->index, "", 0, "Interface", iface_name); + } #endif #else DHCPV6S_SYSCFG_GETS(DHCPV6S_NAME, "pool", cfg->index, "", 0, "IAInterface", cfg->interface); @@ -606,7 +620,7 @@ STATIC int get_prefix_info(const char *prefix, char *value, unsigned int val_le STATIC int get_active_lanif(struct serv_ipv6 *si6, unsigned int insts[], unsigned int *num) { int i = 0; -#if !defined(MULTILAN_FEATURE) || defined CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION +#if !defined(MULTILAN_FEATURE) || defined CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION || defined(_ONESTACK_PRODUCT_REQ_) char active_insts[32] = {0}; char lan_pd_if[128] = {0}; char *p = NULL; @@ -628,7 +642,11 @@ STATIC int get_active_lanif(struct serv_ipv6 *si6, unsigned int insts[], unsigne unsigned int max_active_if_count = 0; int primary_l3_instance = 0; -#ifdef CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { syscfg_get(NULL, "lan_pd_interfaces", lan_pd_if, sizeof(lan_pd_if)); if (lan_pd_if[0] == '\0') { *num = 0; @@ -648,7 +666,14 @@ STATIC int get_active_lanif(struct serv_ipv6 *si6, unsigned int insts[], unsigne p = strtok(NULL, " "); } -#else + } +#endif +#if !defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (!isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { + /* Get active bridge count from PSM */ if (!bus_handle) { fprintf(stderr, "DBUS not connected, returning \n"); @@ -718,6 +743,7 @@ STATIC int get_active_lanif(struct serv_ipv6 *si6, unsigned int insts[], unsigne } /* Set active IPv6 instances */ sysevent_set(si6->sefd, si6->setok, "ipv6_active_inst", active_if_list, 0); + } #endif diff --git a/source/service_routed/Makefile.am b/source/service_routed/Makefile.am index e869e8de..5cf9aa9d 100644 --- a/source/service_routed/Makefile.am +++ b/source/service_routed/Makefile.am @@ -19,7 +19,11 @@ bin_PROGRAMS = service_routed -AM_LDFLAGS = -lsecure_wrapper +AM_CPPFLAGS = -I$(top_srcdir)/source/include \ + -I$(top_srcdir)/source/util/utils \ + $(DBUS_CFLAGS) + +AM_LDFLAGS = -lsecure_wrapper -lccsp_common $(DBUS_LIBS) service_routed_SOURCES = service_routed.c service_routed_main.c @@ -29,8 +33,8 @@ service_routed_CFLAGS = -I$(top_srcdir)/source \ -I$(top_srcdir)/source/utapi/lib \ -I$(top_srcdir)/source/util/utils \ -I${PKG_CONFIG_SYSROOT_DIR}$(includedir)/dbus-1.0 \ - -I${PKG_CONFIG_SYSROOT_DIR}$(libdir)/dbus-1.0/include - + -I${PKG_CONFIG_SYSROOT_DIR}$(libdir)/dbus-1.0/include \ + -I${PKG_CONFIG_SYSROOT_DIR}$(includedir) service_routed_LDADD = $(top_builddir)/source/util/utils/libutopiautil.la \ $(top_builddir)/source/services/lib/libsrvmgr.la \ @@ -40,6 +44,10 @@ service_routed_LDADD = $(top_builddir)/source/util/utils/libutopiautil.la \ $(top_builddir)/source/utctx/lib/libutctx.la \ $(top_builddir)/source/ulog/libulog.la \ -ltelemetry_msgsender +service_routed_LDFLAGS = -L${PKG_CONFIG_SYSROOT_DIR}${libdir} +if ONESTACK_PRODUCT_REQ +service_routed_LDFLAGS += -ldevicemode -lonestack_syscfg -lonestack_log -lrdkb_feature_mode_gate +endif if CORE_NET_LIB_FEATURE_SUPPORT -service_routed_LDFLAGS = -lnet +service_routed_LDFLAGS += -lnet endif diff --git a/source/service_routed/service_routed.c b/source/service_routed/service_routed.c index 34e7ca35..14417781 100644 --- a/source/service_routed/service_routed.c +++ b/source/service_routed/service_routed.c @@ -59,6 +59,9 @@ #include #endif +#ifdef _ONESTACK_PRODUCT_REQ_ +#include +#endif #include "util.h" #include #include "sysevent/sysevent.h" @@ -425,8 +428,11 @@ STATIC int get_active_lanif(int sefd, token_t setok, unsigned int *insts, unsign char *p = NULL; int i = 0; -#ifdef CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION - +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { char lan_pd_if[128] = {0}; char if_name[16] = {0}; char buf[64] = {0}; @@ -449,8 +455,13 @@ STATIC int get_active_lanif(int sefd, token_t setok, unsigned int *insts, unsign p = strtok(NULL, " "); } - -#else + } +#endif +#if !defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (!isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { /* service_ipv6 sets active IPv6 interfaces instances. */ sysevent_get(sefd, setok, "ipv6_active_inst", active_insts, sizeof(active_insts)); @@ -459,14 +470,14 @@ STATIC int get_active_lanif(int sefd, token_t setok, unsigned int *insts, unsign insts[i++] = atoi(p); p = strtok(NULL, " "); } - + } #endif *num = i; return *num; } #else -#ifdef CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) STATIC int get_active_lanif(int sefd, token_t setok, unsigned int *insts, unsigned int *num) { char active_insts[32] = {0}; @@ -505,7 +516,11 @@ STATIC int get_active_lanif(int sefd, token_t setok, unsigned int *insts, unsign STATIC int route_set(struct serv_routed *sr) { -#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(MULTILAN_FEATURE) +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(MULTILAN_FEATURE) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { unsigned int l2_insts[4] = {0}; unsigned int enabled_iface_num = 0; char evt_name[64] = {0}; @@ -560,6 +575,7 @@ STATIC int route_set(struct serv_routed *sr) lan_if, lan_if, lan_if, lan_if); #endif } + } #endif #if defined (_HUB4_PRODUCT_REQ_) && (!defined (_WNXL11BWL_PRODUCT_REQ_)) || defined(_SCER11BEL_PRODUCT_REQ_) @@ -657,7 +673,11 @@ STATIC int route_unset(struct serv_routed *sr) #ifdef CORE_NET_LIB libnet_status status; #endif -#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(MULTILAN_FEATURE) +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(MULTILAN_FEATURE) || defined(_ONESTACK_PRODUCT_REQ_) +#ifdef _ONESTACK_PRODUCT_REQ_ + if (isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) +#endif + { unsigned int l2_insts[4] = {0}; unsigned int enabled_iface_num = 0; char evt_name[64] = {0}; @@ -689,7 +709,8 @@ STATIC int route_unset(struct serv_routed *sr) #endif } -#elif !defined(WAN_MANAGER_UNIFICATION_ENABLED) //Default route is configured WanManager. + } +#elif !defined(WAN_MANAGER_UNIFICATION_ENABLED) #if defined (_HUB4_PRODUCT_REQ_) && (!defined (_WNXL11BWL_PRODUCT_REQ_)) || defined(_RDKB_GLOBAL_PRODUCT_REQ_) #ifdef CORE_NET_LIB status = rule_delete("-6 iif brlan0 table erouter"); @@ -901,7 +922,7 @@ STATIC int gen_zebra_conf(int sefd, token_t setok) "!log stdout\n" "log file /var/tmp/zebra.log errors\n" "table 255\n"; -#if defined(MULTILAN_FEATURE) || defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) +#if defined(MULTILAN_FEATURE) || defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) int i = 0; unsigned int l2_insts[4] = {0}; unsigned int enabled_iface_num = 0; @@ -1000,15 +1021,27 @@ STATIC int gen_zebra_conf(int sefd, token_t setok) #endif syscfg_get(NULL, "ra_interval", ra_interval, sizeof(ra_interval)); -#ifdef CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION + +#ifdef WAN_FAILOVER_SUPPORTED + char last_broadcasted_prefix[64] = {0}; +#endif +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { sysevent_get(sefd, setok, "previous_ipv6_prefix", orig_prefix, sizeof(orig_prefix)); sysevent_get(sefd, setok, "ipv6_prefix_prdtime", preferred_lft, sizeof(preferred_lft)); sysevent_get(sefd, setok, "ipv6_prefix_vldtime", valid_lft, sizeof(valid_lft)); -#else - + } +#endif +#if !defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (!isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { #ifdef WAN_FAILOVER_SUPPORTED - char last_broadcasted_prefix[64] ; memset(last_broadcasted_prefix,0,sizeof(last_broadcasted_prefix)); if (gIpv6AddrAssignment == ULA_IPV6) { @@ -1119,6 +1152,7 @@ STATIC int gen_zebra_conf(int sefd, token_t setok) sysevent_get(sefd, setok, "ipv6_prefix_vldtime", valid_lft, sizeof(valid_lft)); #endif syscfg_get(NULL, "lan_ifname", lan_if, sizeof(lan_if)); + } #endif if (atoi(preferred_lft) <= 0) snprintf(preferred_lft, sizeof(preferred_lft), "300"); @@ -1131,7 +1165,24 @@ STATIC int gen_zebra_conf(int sefd, token_t setok) sysevent_get(sefd, setok, "wan-status", wan_st, sizeof(wan_st)); syscfg_get(NULL, "last_erouter_mode", rtmod, sizeof(rtmod)); -#if defined(MULTILAN_FEATURE) || defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) + +#if defined(MULTILAN_FEATURE) || defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined (_ONESTACK_PRODUCT_REQ_) + int multilan_enabled = 0; + int pd_enabled = 0; + +#if defined(MULTILAN_FEATURE) + multilan_enabled = 1; +#endif +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) + pd_enabled = 1; +#endif + + #ifdef _ONESTACK_PRODUCT_REQ_ + pd_enabled = isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION); + #endif + + if (pd_enabled || multilan_enabled) + { get_active_lanif(sefd, setok, l2_insts, &enabled_iface_num); for (i = 0; i < enabled_iface_num; i++) { @@ -1438,11 +1489,22 @@ STATIC int gen_zebra_conf(int sefd, token_t setok) if ((strncmp(buf,"true",4) == 0) && iresCode == 204) { #if defined (_COSA_BCM_MIPS_) -#ifdef CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { // For CBR platform, the captive portal redirection feature was removed // inWifiCp = 1; -#else + } +#endif +#if !defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (!isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { inWifiCp = 1; + } #endif #else inWifiCp = 1; @@ -1557,16 +1619,32 @@ STATIC int gen_zebra_conf(int sefd, token_t setok) } #endif /* static IPv6 DNS */ -#ifdef CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { snprintf(rec, sizeof(rec), "dhcpv6spool%d0::optionnumber", i); syscfg_get(NULL, rec, val, sizeof(val)); -#else + } +#endif +#if !defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (!isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { syscfg_get(NULL, "dhcpv6spool00::optionnumber", val, sizeof(val)); + } #endif nopt = atoi(val); for (j = 0; j < nopt; j++) { -#ifdef CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION +#if defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) + #if defined(_ONESTACK_PRODUCT_REQ_) + if (isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) + #endif + { memset(name_servs, 0, sizeof(name_servs)); + } #endif snprintf(rec, sizeof(rec), "dhcpv6spool0option%d::bEnabled", j); /*RDKB-12965 & CID:-34147*/ syscfg_get(NULL, rec, val, sizeof(val)); @@ -1709,11 +1787,16 @@ STATIC int gen_zebra_conf(int sefd, token_t setok) fprintf(fp, "interface %s\n", lan_if); fprintf(fp, " ip irdp multicast\n"); -#if defined(MULTILAN_FEATURE) || defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) +#if defined(MULTILAN_FEATURE) || defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) } //for (i = 0; i < enabled_iface_num; i++) + } #endif -#ifndef CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION +#if !defined(CISCO_CONFIG_DHCPV6_PREFIX_DELEGATION) || defined(_ONESTACK_PRODUCT_REQ_) +#ifdef _ONESTACK_PRODUCT_REQ_ +if (!isFeatureSupportedInCurrentMode(FEATURE_IPV6_DELEGATION)) +#endif +{ char cmd[100]; char out[100]; char interface_name[32] = {0}; @@ -1925,6 +2008,7 @@ if(!strncmp(out,"true",strlen(out))) memset(out,0,sizeof(out)); } } +} #endif fclose(fp); return 0;