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.
Enabled the distro in meta-cmf-raspberrypi layer:
diff --git a/conf/distro/include/rdk-rpi.inc b/conf/distro/include/rdk-rpi.inc index 29e387e..4978f8e 100644 --- a/conf/distro/include/rdk-rpi.inc +++ b/conf/distro/include/rdk-rpi.inc @@ -223,3 +223,4 @@ DISTRO_FEATURES_remove_raspberrypi3 = " ripple2.0" #REFPLTB-2784 : easymesh controller arch only supports with wifiagent MACHINEOVERRIDES_append =. "${@bb.utils.contains('DISTRO_FEATURES', 'OneWifi', ':onewifi', '' ,d)}" DISTRO_FEATURES_remove_onewifi = " easymesh-controller" +DISTRO_FEATURES_append_broadband = " rdkb_configurable_wan_interface"
Faced compilation issues in Utopia and RdkWanmanager(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; }