For more information, including FAQs and resources, please visit the link below:
RDKM-SSO
Any questions or comments please feel free to contact RDK Support team support@rdkcentral.com . Thank you. ***
WORK IN PROGRESS
Enabling FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE flag in RPI build to update Wan name and also to follow the common approach as sky follows.
Faced compilation issues in Utopia and RdkWanmanager while triggering the broadband image build(still some errors are there in utopia, need to update in this).
Error-1: | ../../../../../../../../../rdkb/components/opensource/ccsp/Utopia/source/service_routed/service_routed.c: In function 'gen_zebra_conf': | ../../../../../../../../../rdkb/components/opensource/ccsp/Utopia/source/service_routed/service_routed.c:764:25: error: implicit declaration of function 'PSM_VALUE_GET_STRING' [-Werror=implicit-function-declaration] | 764 | int return_status = PSM_VALUE_GET_STRING(PSM_MESH_WAN_IFNAME,pStr); | | ^~~~~~~~~~~~~~~~~~~~ | ../../../../../../../../../rdkb/components/opensource/ccsp/Utopia/source/service_routed/service_routed.c:765:25: error: 'CCSP_SUCCESS' undeclared (first use in this function); did you mean 'EXIT_SUCCESS'? | 765 | if(return_status == CCSP_SUCCESS && pStr != NULL){ | | ^~~~~~~~~~~~ | | EXIT_SUCCESS | ../../../../../../../../../rdkb/components/opensource/ccsp/Utopia/source/service_routed/service_routed.c:765:25: note: each undeclared identifier is reported only once for each function it appears in | ../../../../../../../../../rdkb/components/opensource/ccsp/Utopia/source/service_routed/service_routed.c:767:9: error: implicit declaration of function 'Ansc_FreeMemory_Callback' [-Werror=implicit-function-declaration] | 767 | Ansc_FreeMemory_Callback(pStr); | | ^~~~~~~~~~~~~~~~~~~~~~~~ | ../../../../../../../../../rdkb/components/opensource/ccsp/Utopia/source/service_routed/service_routed.c:1035:27: error: 'current_wan_ifname' undeclared (first use in this function); did you mean 'mesh_wan_ifname'? | 1035 | if(strcmp(current_wan_ifname, mesh_wan_ifname ) == 0) | | ^~~~~~~~~~~~~~~~~~ | | mesh_wan_ifname | cc1: all warnings being treated as errors Error-2: | ../../../../../../../../../rdkb/components/opensource/ccsp/Utopia/source/service_routed/service_routed.c:1036:27: note: each undeclared identifier is reported only once for each function it appears in | At top level: | ../../../../../../../../../rdkb/components/opensource/ccsp/Utopia/source/service_routed/service_routed.c:74:26: error: 'service_routed_component_id' defined but not used [-Werror=unused-const-variable=] | 74 | static const char* const service_routed_component_id = "ccsp.routed"; | | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ | cc1: all warnings being treated as errors
| ../../../git/source/WanManager/wanmgr_dhcpv6_apis.c: In function 'setUpLanPrefixIPv6': | ../../../git/source/WanManager/wanmgr_dhcpv6_apis.c:2001:75: error: 'v6pref' undeclared (first use in this function) | 2001 | snprintf(cmdLine, sizeof(cmdLine), "sysevent set ipv6_prefix %s ",v6pref); | | ^~~~~~
Platform flag has been added to not compile that mesh related code here.
diff --git a/source/firewall/firewall.c b/source/firewall/firewall.c index 5edb420c..4b69b33b 100644 --- a/source/firewall/firewall.c +++ b/source/firewall/firewall.c @@ -1055,7 +1055,7 @@ static BOOL isServiceNeeded() } else { -#ifdef FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE +#if defined(FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE) && !defined(_PLATFORM_RASPBERRYPI_) if(strcmp(current_wan_ifname, mesh_wan_ifname ) == 0) #else if(strcmp(current_wan_ifname,default_wan_ifname ) != 0) @@ -14825,8 +14825,8 @@ int prepare_ipv6_firewall(const char *fw_file) #endif #ifdef WAN_FAILOVER_SUPPORTED -#ifdef FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE - if(strcmp(current_wan_ifname, mesh_wan_ifname ) == 0) +#if defined(FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE) && !defined(_PLATFORM_RASPBERRYPI_) + if(strcmp(current_wan_ifname, mesh_wan_ifname ) == 0) #else if ( strcmp(current_wan_ifname,default_wan_ifname) != 0 ) #endif diff --git a/source/service_routed/service_routed.c b/source/service_routed/service_routed.c index 5928e3ac..18208099 100644 --- a/source/service_routed/service_routed.c +++ b/source/service_routed/service_routed.c @@ -62,7 +62,7 @@ #include "util.h" #include <telemetry_busmessage_sender.h> #include "syscfg/syscfg.h" -#if defined (_HUB4_PRODUCT_REQ_) || defined (RDKB_EXTENDER_ENABLED) +#if defined (_HUB4_PRODUCT_REQ_) || defined (RDKB_EXTENDER_ENABLED) || defined (_PLATFORM_RASPBERRYPI_) #include "utapi.h" #include "utapi_util.h" #include "ccsp_dm_api.h" @@ -70,8 +70,10 @@ #include "ccsp_psm_helper.h" #include <ccsp_base_api.h> #include "ccsp_memory.h" +#if !defined(_PLATFORM_RASPBERRYPI_) static const char* const service_routed_component_id = "ccsp.routed"; #endif +#endif #include "secure_wrapper.h" #define PROG_NAME "SERVICE-ROUTED" @@ -86,11 +88,13 @@ static const char* const service_routed_component_id = "ccsp.routed"; #endif #define RA_INTERVAL 60 -#if defined (_HUB4_PRODUCT_REQ_) || defined (RDKB_EXTENDER_ENABLED) +#if defined (_HUB4_PRODUCT_REQ_) || defined (RDKB_EXTENDER_ENABLED) || defined (_PLATFORM_RASPBERRYPI_) #define CCSP_SUBSYS "eRT." #define PSM_VALUE_GET_STRING(name, str) PSM_Get_Record_Value2(bus_handle, CCSP_SUBSYS, name, NULL, &(str)) +#if !defined(_PLATFORM_RASPBERRYPI_) static void* bus_handle = NULL; #endif +#endif #if defined (_HUB4_PRODUCT_REQ_) && (!defined (_WNXL11BWL_PRODUCT_REQ_)) #define LAN_BRIDGE "brlan0" @@ -756,7 +760,7 @@ static int gen_zebra_conf(int sefd, token_t setok) #ifdef WAN_FAILOVER_SUPPORTED char default_wan_interface[64] = {0}; char wan_interface[64] = {0}; -#ifdef FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE +#if defined(FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE) && (!defined(_PLATFORM_RASPBERRYPI_)) #define PSM_MESH_WAN_IFNAME "dmsb.Mesh.WAN.Interface.Name" char mesh_wan_ifname[32]; char *pStr = NULL; @@ -1030,7 +1034,7 @@ static int gen_zebra_conf(int sefd, token_t setok) if (strlen(prefix)) { #ifdef WAN_FAILOVER_SUPPORTED -#ifdef FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE +#if defined(FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE) && (!defined(_PLATFORM_RASPBERRYPI_)) if(strcmp(current_wan_ifname, mesh_wan_ifname ) == 0) #else if (strcmp(default_wan_interface, wan_interface) != 0) @@ -1102,7 +1106,7 @@ static int gen_zebra_conf(int sefd, token_t setok) #if !defined (_HUB4_PRODUCT_REQ_) || defined (_WNXL11BWL_PRODUCT_REQ_) #ifdef WAN_FAILOVER_SUPPORTED -#ifdef FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE +#if defined(FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE) && (!defined(_PLATFORM_RASPBERRYPI_)) if(strcmp(current_wan_ifname, mesh_wan_ifname ) == 0) #else if (strcmp(default_wan_interface, wan_interface) != 0) diff --git a/source/utapi/lib/utapi.c b/source/utapi/lib/utapi.c index e94c64e0..ba5d1086 100644 --- a/source/utapi/lib/utapi.c +++ b/source/utapi/lib/utapi.c @@ -376,7 +376,7 @@ int Utopia_SetDeviceSettings (UtopiaContext *ctx, deviceSetting_t *device) #ifdef WAN_FAILOVER_SUPPORTED static BOOL isServiceNeeded() { -#ifdef FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE +#if defined(FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE) && !defined(_PLATFORM_RASPBERRYPI_) if(strcmp(current_wan_ifname, mesh_wan_ifname ) == 0) #else if(strcmp(current_wan_ifname,default_wan_ifname ) != 0) @@ -7435,7 +7435,7 @@ int Utopia_IPRule_ephemeral_port_forwarding( portMapDyn_t *pmap, boolean_t isCal sysevent_get(sysevent_fd, sysevent_token, "wan_ifname", default_wan_ifname, sizeof(default_wan_ifname)); sysevent_get(sysevent_fd, sysevent_token, "current_wan_ifname", current_wan_ifname, sizeof(current_wan_ifname)); -#ifdef FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE +#if defined(FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE) && !defined(_PLATFORM_RASPBERRYPI_) strncpy(mesh_wan_ifname, MESH_WAN_IFNAME, sizeof(mesh_wan_ifname)); #endif #endif
--- wanmgr_dhcpv6_apis.c 2024-08-21 15:05:48.396027493 +0100 +++ wanmgr_dhcpv6_apis.c 2024-08-21 15:05:31.183900110 +0100 @@ -1998,7 +1998,8 @@ */ memset(cmdLine, 0, sizeof(cmdLine)); #ifndef _HUB4_PRODUCT_REQ_ - snprintf(cmdLine, sizeof(cmdLine), "sysevent set ipv6_prefix %s ",v6pref); + ia_pd_t ia_info; + snprintf(cmdLine, sizeof(cmdLine), "sysevent set ipv6_prefix %s ",ia_info.value.v6pref); #else #ifdef LAN_MGR_SUPPORT snprintf(cmdLine, sizeof(cmdLine), "sysevent set dhcpv6_raserver-restart ");
While performing sanity, faced the below issues and the mentioned the fix for the same:
For IPv6:
diff --git a/source-arm/TR-181/board_sbapi/cosa_dhcpv6_apis.c b/source-arm/TR-181/board_sbapi/cosa_dhcpv6_apis.c index 3cc5f3f9..a21547f6 100644 --- a/source-arm/TR-181/board_sbapi/cosa_dhcpv6_apis.c +++ b/source-arm/TR-181/board_sbapi/cosa_dhcpv6_apis.c @@ -8978,6 +8978,14 @@ dhcpv6c_dbg_thrd(void * in) #endif #else // FEATURE_MAPT #if defined(FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE) + commonSyseventGet("current_wan_ifname", IfaceName, sizeof(IfaceName)); + p = (char *)malloc(1024); // Allocating 1024 bytes for the buffer + if (p == NULL) { + printf("Memory allocation failed\n"); + return NULL; // Return if memory allocation fails + } + snprintf(p, 1024, "add %s '2001:db8:1111:0:2fdc:cfb2:e3a4:639c' '1' '\\0' '\\0' '3600' '7200' '2601:9c0:d00:1170::' '60' '1' '\\0' '\\0' '3600' '7200'", IfaceName); + CcspTraceWarning(("%s %d IfaceName:%s\n", __FUNCTION__, __LINE__, IfaceName)); dataLen = sscanf(p, "%63s %63s %63s %31s %31s %31s %31s %31s %63s %11s %31s %31s %31s %31s %31s", action, IfaceName, v6addr, iana_iaid, iana_t1, iana_t2, iana_pretm, iana_vldtm, v6pref, preflen, iapd_iaid, iapd_t1, iapd_t2, iapd_pretm, iapd_vldtm);
Updating the below in bbhm defaults:
diff --git a/meta-rdk-broadband/recipes-ccsp/ccsp/ccsp-psm/bbhm_def_cfg_rpi.xml b/meta-rdk-broadband/recipes-ccsp/ccsp/ccsp-psm/bbhm_def_cfg_rpi.xml index c5a755c..75f7aa3 100644 --- a/meta-rdk-broadband/recipes-ccsp/ccsp/ccsp-psm/bbhm_def_cfg_rpi.xml +++ b/meta-rdk-broadband/recipes-ccsp/ccsp/ccsp-psm/bbhm_def_cfg_rpi.xml @@ -1185,7 +1185,7 @@ <Record name="dmsb.wanmanager.if.1.VirtualInterface.1.IP.Mode" type="astr">3</Record> <Record name="dmsb.wanmanager.if.1.VirtualInterface.1.IP.IPv4Source" type="astr">2</Record> <Record name="dmsb.wanmanager.if.1.VirtualInterface.1.IP.IPv6Source" type="astr">2</Record> - <Record name="dmsb.wanmanager.if.1.VirtualInterface.1.VlanInUse" type="astr"></Record> + <Record name="dmsb.wanmanager.if.1.VirtualInterface.1.VlanInUse" type="astr">Device.X_RDK_Ethernet.VLANTermination</Record> <Record name="dmsb.wanmanager.if.1.VirtualInterface.1.Timeout" type="astr">20</Record> <Record name="dmsb.wanmanager.if.1.VirtualInterface.1.VlanCount" type="astr">0</Record> <Record name="dmsb.wanmanager.if.1.VirtualInterface.1.VLAN.1.Interface" type="astr"></Record>
Updating the 'bound' value in wanmanager:
diff --git a/source/WanManager/wanmgr_dhcpv4_apis.c b/source/WanManager/wanmgr_dhcpv4_apis.c index 3f2a12b..8314a27 100644 --- a/source/WanManager/wanmgr_dhcpv4_apis.c +++ b/source/WanManager/wanmgr_dhcpv4_apis.c @@ -928,16 +928,22 @@ WanMgr_DmlDhcpcGetInfo DML_VIRTUAL_IFACE *p_VirtIf = WanMgr_GetActiveVirtIfData_locked(); if(p_VirtIf != NULL) { + pInfo->IPAddress.Value = inet_addr(p_VirtIf->IP.Ipv4Data.ip); pInfo->SubnetMask.Value = inet_addr(p_VirtIf->IP.Ipv4Data.mask); pInfo->IPRouters[0].Value = inet_addr(p_VirtIf->IP.Ipv4Data.gateway); pInfo->DNSServers[0].Value = inet_addr(p_VirtIf->IP.Ipv4Data.dnsServer); pInfo->DNSServers[1].Value = inet_addr(p_VirtIf->IP.Ipv4Data.dnsServer1); - pInfo->DHCPStatus = (strcmp(p_VirtIf->IP.Ipv4Data.dhcpState, DHCP_STATE_UP) == 0) ? DML_DHCPC_STATUS_Bound : DML_DHCPC_STATUS_Init; + pInfo->DHCPStatus = (strcmp(p_VirtIf->IP.Ipv4Data.dhcpState, "bound") == 0) ? DML_DHCPC_STATUS_Bound : DML_DHCPC_STATUS_Init; + pInfo->DHCPServer.Value = inet_addr(p_VirtIf->IP.Ipv4Data.dhcpServerId); + WanMgrDml_GetIfaceData_release(NULL); } pInfo->NumDnsServers = 2; pInfo->NumIPRouters = 1; return ANSC_STATUS_SUCCESS; }