[Add meta-cmf-filogic sdk cmf for rdkb development]
[Description]
Add meta-cmf-filogic sdk cmf for rdkb development
1. rdkb base on dunfell rdkb-next (> 2022q1)
2. cmf is mostly from meta-turris implementation
3. some 64bit support are port from rp4-64 cmf
4. arm64/arm 32bit bsp both can run on rdkb
[Release-log]
N/A
diff --git a/recipes-ccsp/ccsp/files/CcspWebUI.service b/recipes-ccsp/ccsp/files/CcspWebUI.service
new file mode 100644
index 0000000..19056b5
--- /dev/null
+++ b/recipes-ccsp/ccsp/files/CcspWebUI.service
@@ -0,0 +1,35 @@
+##########################################################################
+# If not stated otherwise in this file or this component's Licenses.txt
+# file the following copyright and licenses apply:
+#
+# Copyright 2019 RDK Management
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+##########################################################################
+
+[Unit]
+Description=CcspWebUI service
+After=gwprovethwan.service
+Wants=gwprovethwan.service
+
+[Service]
+Type=forking
+WorkingDirectory=/usr/www
+ExecStart=/bin/sh /lib/rdk/CcspWebUI.sh
+Restart=always
+StandardOutput=syslog+console
+
+[Install]
+WantedBy=multi-user.target
+
+
diff --git a/recipes-ccsp/ccsp/files/CcspWebUI.sh b/recipes-ccsp/ccsp/files/CcspWebUI.sh
new file mode 100644
index 0000000..b2d269b
--- /dev/null
+++ b/recipes-ccsp/ccsp/files/CcspWebUI.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+##########################################################################
+# If not stated otherwise in this file or this component's Licenses.txt
+# file the following copyright and licenses apply:
+#
+# Copyright 2019 RDK Management
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+##########################################################################
+
+
+sleep 10
+
+LIGHTTPD_PROCESS=`ps aux | grep lighttpd | grep -v grep | wc -l`
+
+if [ $LIGHTTPD_PROCESS = 0 ]; then
+ /bin/sh /etc/webgui.sh
+else
+ echo "Lighttpd process was already running"
+ exit 0
+fi
diff --git a/recipes-ccsp/ccsp/files/set-uplink-for-turris.patch b/recipes-ccsp/ccsp/files/set-uplink-for-turris.patch
new file mode 100644
index 0000000..8a838fa
--- /dev/null
+++ b/recipes-ccsp/ccsp/files/set-uplink-for-turris.patch
@@ -0,0 +1,25 @@
+diff --git a/source/gw_prov_sm.c b/source/gw_prov_sm.c
+index 76cf208..983d1fa 100644
+--- a/source/gw_prov_sm.c
++++ b/source/gw_prov_sm.c
+@@ -88,7 +88,7 @@ char log_buff[1024];
+ #define NETUTILS_IPv6_GLOBAL_ADDR_LEN 128
+ #define ER_NETDEVNAME "erouter0"
+ #define IFNAME_WAN_0 "wan0"
+-#define IFNAME_ETH_0 "eth0"
++#define IFNAME_ETH_0 "eth2"
+ #define TLV202_42_FAVOR_DEPTH 1
+ #define TLV202_42_FAVOR_WIDTH 2
+
+@@ -2449,9 +2449,9 @@ static int GWP_act_ProvEntry_callback()
+ return -1;
+ }
+
+- system("ifconfig eth0 down");
++ system("ifconfig eth2 down");
+ memset(command,0,sizeof(command));
+- sprintf(command, "ip link set eth0 name %s", wanPhyName);
++ sprintf(command, "ip link set eth2 name %s", wanPhyName);
+ printf("****************value of command = %s**********************\n", command);
+ system(command);
+
diff --git a/recipes-ccsp/ccsp/files/turris-macro-gwprov.patch b/recipes-ccsp/ccsp/files/turris-macro-gwprov.patch
new file mode 100644
index 0000000..a23f320
--- /dev/null
+++ b/recipes-ccsp/ccsp/files/turris-macro-gwprov.patch
@@ -0,0 +1,350 @@
+diff --git a/configure.ac b/configure.ac
+index c4aeb55..7eded47 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -53,5 +53,6 @@ AC_CONFIG_FILES(
+ Makefile
+ )
+ AM_CONDITIONAL([PLATFORM_RASPBERRYPI_ENABLED], [test $PLATFORM_RASPBERRYPI_ENABLED = yes])
++AM_CONDITIONAL([PLATFORM_TURRIS_ENABLED], [test $PLATFORM_TURRIS_ENABLED = yes])
+ AC_OUTPUT
+
+diff --git a/source/Makefile.am b/source/Makefile.am
+index d7d99da..4cb1847 100644
+--- a/source/Makefile.am
++++ b/source/Makefile.am
+@@ -23,9 +23,13 @@ AM_CFLAGS += -DCONFIG_PRIMARY_NET_BRIDGE_MODE
+ if PLATFORM_RASPBERRYPI_ENABLED
+ AM_LDFLAGS = -lsysevent
+ else
++if PLATFORM_TURRIS_ENABLED
++AM_LDFLAGS = -lsysevent
++else
+ AM_LDFLAGS = -lgwprovappabs
+ AM_LDFLAGS += -lsysevent
+ endif
++endif
+ AM_LDFLAGS += -lsyscfg
+ AM_LDFLAGS += -lulog
+
+@@ -38,5 +42,11 @@ gw_prov_utopia_SOURCES = gw_prov_sm.c
+ if PLATFORM_RASPBERRYPI_ENABLED
+ gw_prov_utopia_LDFLAGS = -lsysevent -lsyscfg -lulog
+ else
++if PLATFORM_TURRIS_ENABLED
++gw_prov_utopia_LDFLAGS = -lsysevent -lsyscfg -lulog
++else
+ gw_prov_utopia_LDFLAGS = -lgwprovappabs -lsysevent -lsyscfg -lulog
+ endif
++endif
++gw_prov_utopia_LDFLAGS += -pthread
++gw_prov_utopia_LDFLAGS += -pthread
+diff --git a/source/gw_prov_sm.c b/source/gw_prov_sm.c
+index 7117be3..a8c154f 100644
+--- a/source/gw_prov_sm.c
++++ b/source/gw_prov_sm.c
+@@ -55,11 +55,11 @@
+ #include <sys/socket.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ #include <sys/types.h>
+ #endif
+ #include <unistd.h>
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ #include <ruli.h>
+ #endif
+ #include <sysevent/sysevent.h>
+@@ -68,7 +68,7 @@
+ #include "gw_prov_abstraction.h"
+ #include "Tr69_Tlv.h"
+ #include <autoconf.h>
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ #include "docsis_esafe_db.h"
+ #endif
+ #include <time.h>
+@@ -197,7 +197,7 @@ static token_t sysevent_token;
+ static int sysevent_fd_gs;
+ static token_t sysevent_token_gs;
+ static pthread_t sysevent_tid;
+-#if defined(_PLATFORM_RASPBERRYPI_)
++#if defined(_PLATFORM_RASPBERRYPI_) || defined(_PLATFORM_TURRIS_)
+ static pthread_t linkstate_tid;
+ #endif
+ static int phylink_wan_state = 0;
+@@ -264,7 +264,7 @@ static int getSyseventBridgeMode(int erouterMode, int bridgeMode) {
+ }
+
+
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ /**************************************************************************/
+ /*! \fn STATUS GW_TlvParserInit(void)
+ **************************************************************************
+@@ -736,7 +736,7 @@ static int GWP_SysCfgSetInt(const char *name, int int_value)
+ return syscfg_set(NULL, name, value);
+ }
+
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ /**************************************************************************/
+ /*! \fn static STATUS GWP_UpdateEsafeAdminMode()
+ **************************************************************************
+@@ -788,7 +788,7 @@ validate_mode(int* bridge_mode, int* eRouterMode)
+ GWPROV_PRINT(" %s : bridge_mode = %d , eRouterMode = %d \n", __FUNCTION__, *bridge_mode, *eRouterMode);
+ }
+
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ void docsis_gotEnable_callback(Uint8 state)
+ {
+ GWPROV_PRINT(" Entry %s , state = %d \n", __FUNCTION__, state);
+@@ -840,7 +840,7 @@ static void GWP_DocsisInited(void)
+ **************************************************************************/
+ static void GWP_EnableERouter(void)
+ {
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ GWPROV_PRINT(" Entry %s \n", __FUNCTION__);
+ /* Update ESAFE state */
+ GWP_UpdateEsafeAdminMode(eRouterMode);
+@@ -903,7 +903,7 @@ static void GWP_EnterRouterMode(void)
+ **************************************************************************/
+ static void GWP_DisableERouter(void)
+ {
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ GWPROV_PRINT(" Entry %s \n", __FUNCTION__);
+ /* Update ESAFE state */
+ GWP_UpdateEsafeAdminMode(eRouterMode);
+@@ -1049,7 +1049,7 @@ static void GWP_UpdateERouterMode(void)
+ }
+ else // remain enabled, switch mode
+ {
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ /* Update ESAFE state */
+ GWP_UpdateEsafeAdminMode(eRouterMode);
+ #endif
+@@ -1121,7 +1121,7 @@ static void GWP_ProcessUtopiaRestart(void)
+ // }
+ }
+
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ /**************************************************************************/
+ /*! \fn int GWP_ProcessIpv4Down();
+ **************************************************************************
+@@ -1428,13 +1428,13 @@ static void *GWP_sysevent_threadfunc(void *data)
+ {
+ if (strcmp(val, "up")==0)
+ {
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ GWP_ProcessIpv4Up();
+ #endif
+ }
+ else if (strcmp(val, "down")==0)
+ {
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ GWP_ProcessIpv4Down();
+ #endif
+ }
+@@ -1443,13 +1443,13 @@ static void *GWP_sysevent_threadfunc(void *data)
+ {
+ if (strcmp(val, "up")==0)
+ {
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ GWP_ProcessIpv6Up();
+ #endif
+ }
+ else if (strcmp(val, "down")==0)
+ {
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ GWP_ProcessIpv6Down();
+ #endif
+ }
+@@ -1492,7 +1492,7 @@ static void *GWP_sysevent_threadfunc(void *data)
+ {
+ if (strcmp(val, "started") == 0) {
+ if (!webui_started) {
+-#if defined(_PLATFORM_RASPBERRYPI_)
++#if defined(_PLATFORM_RASPBERRYPI_) || defined(_PLATFORM_TURRIS_)
+ if(strcmp(name, "bridge-status") == 0) {
+ GWP_DisableERouter();
+ }
+@@ -1536,7 +1536,7 @@ static void *GWP_sysevent_threadfunc(void *data)
+ Uint8 v6addr[ NETUTILS_IPv6_GLOBAL_ADDR_LEN / sizeof(Uint8) ];
+ Uint8 soladdr[ NETUTILS_IPv6_GLOBAL_ADDR_LEN / sizeof(Uint8) ];
+ inet_pton(AF_INET6, val, v6addr);
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ getMultiCastGroupAddress(v6addr,soladdr);
+ #endif
+ inet_ntop(AF_INET6, soladdr, val, sizeof(val));
+@@ -1621,7 +1621,7 @@ static int GWP_act_DocsisLinkUp_callback()
+ printf("\n**************************\n\n");
+
+
+-#if defined(_PLATFORM_RASPBERRYPI_)
++#if defined(_PLATFORM_RASPBERRYPI_) || defined(_PLATFORM_TURRIS_)
+ char *temp;
+ char command[128];
+ char wanPhyName[20];
+@@ -1678,7 +1678,7 @@ static int GWP_act_DocsisLinkUp_callback()
+ }
+
+
+-#if defined(_PLATFORM_RASPBERRYPI_)
++#if defined(_PLATFORM_RASPBERRYPI_) || defined(_PLATFORM_TURRIS_)
+ /**************************************************************************/
+ /*! \fn void *GWP_linkstate_threadfunc(void *)
+ **************************************************************************
+@@ -1796,7 +1796,7 @@ void GWP_Util_get_shell_output( char * cmd, char *out, int len )
+ }
+
+ /* GWP_UpdateTr069CfgThread() */
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ void GWP_UpdateTr069CfgThread( void *data )
+ {
+ int IsNeedtoProceedFurther = TRUE;
+@@ -1911,7 +1911,7 @@ void GWP_UpdateTr069CfgThread( void *data )
+ GWPROV_PRINT(" Exit %s \n", __FUNCTION__);
+ }
+ #endif
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ /**************************************************************************/
+ /*! \fn int GWP_act_DocsisCfgfile(SME_APP_T *app, SME_EVENT_T *event);
+ **************************************************************************
+@@ -2144,7 +2144,7 @@ static int GWP_act_DocsisInited_callback()
+ {
+ esafeErouterOperModeExtIf_e operMode;
+ //DOCSIS_Esafe_Db_Enable_e eRouterModeTmp;
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ DOCSIS_Esafe_Db_extIf_e eRouterModeTmp;
+ #endif
+ char macstr[20];
+@@ -2154,7 +2154,7 @@ static int GWP_act_DocsisInited_callback()
+ char soladdrStr[64];
+ int sysevent_bridge_mode = 0;
+ GWPROV_PRINT(" Entry %s \n", __FUNCTION__);
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ /* Docsis initialized */
+ printf("Got DOCSIS Initialized\n");
+
+@@ -2198,7 +2198,7 @@ static int GWP_act_DocsisInited_callback()
+ // }
+ #if !defined(INTEL_PUMA7) && !defined(_COSA_BCM_MIPS_) && !defined(_COSA_BCM_ARM_)
+ printf("Not Initializing bridge_mode and eRouterMode for XB3\n");
+-#elif defined(_PLATFORM_RASPBERRYPI_)
++#elif defined(_PLATFORM_RASPBERRYPI_) || defined(_PLATFORM_TURRIS_)
+ printf("Not Initializing bridge_mode and eRouterMode for Raspberry Pi\n");
+ #else
+ bridge_mode = GWP_SysCfgGetInt("bridge_mode");
+@@ -2212,12 +2212,12 @@ static int GWP_act_DocsisInited_callback()
+ system(sysevent_cmd);
+ #endif
+
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ GWP_DocsisInited();
+ #endif
+
+ system("sysevent set docsis-initialized 1");
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+
+ /* Must set the ESAFE Enable state before replying to the DocsisInit event */
+ eRouterModeTmp = eRouterMode;
+@@ -2279,7 +2279,7 @@ static int GWP_act_DocsisInited_callback()
+ }
+
+ //calculate cm base solicited node address
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ getInterfaceLinkLocalAddress(IFNAME_WAN_0, lladdr);
+
+
+@@ -2482,7 +2482,7 @@ static int GWP_act_DocsisInited_callback()
+ **************************************************************************/
+ static int GWP_act_ProvEntry_callback()
+ {
+-#if defined(_PLATFORM_RASPBERRYPI_)
++#if defined(_PLATFORM_RASPBERRYPI_) || defined(_PLATFORM_TURRIS_)
+ int uid = 0;
+ uid = getuid();
+ #endif
+@@ -2491,7 +2491,7 @@ static int GWP_act_ProvEntry_callback()
+ #ifdef MULTILAN_FEATURE
+ macaddr_t macAddr;
+ #endif
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ GWPROV_PRINT(" Entry %s \n", __FUNCTION__);
+ //system("sysevent set lan-start");
+
+@@ -2411,14 +2411,14 @@ static int GWP_act_ProvEntry_callback()
+
+ /* Now that we have the ICC que (SME) and we are registered on the docsis INIT */
+ /* event, we can notify PCD to continue */
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ sendProcessReadySignal();
+ #endif
+
+ /* Initialize Switch */
+ // VEN_SWT_InitSwitch();
+
+-#if defined(_PLATFORM_RASPBERRYPI_)
++#if defined(_PLATFORM_RASPBERRYPI_) || defined(_PLATFORM_TURRIS_)
+ printf("Thread to monitor link status \n");
+ pthread_create(&linkstate_tid, NULL, GWP_linkstate_threadfunc, NULL);
+ #endif
+@@ -2426,7 +2426,7 @@ static int GWP_act_ProvEntry_callback()
+ return 0;
+ }
+
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+ static int GWP_act_DocsisTftpOk_callback(){
+ GWPROV_PRINT(" Entry %s \n", __FUNCTION__);
+ gDocTftpOk = 1;
+@@ -2735,13 +2735,13 @@ int main(int argc, char *argv[])
+ #ifdef MULTILAN_FEATURE
+ char sysevent_cmd[80];
+ #endif
+-#if defined(_PLATFORM_RASPBERRYPI_)
++#if defined(_PLATFORM_RASPBERRYPI_) || defined(_PLATFORM_TURRIS_)
+ int uid = 0;
+ uid = getuid();
+ #endif
+ printf("Started gw_prov_utopia\n");
+
+-#if !defined(_PLATFORM_RASPBERRYPI_)
++#if !defined(_PLATFORM_RASPBERRYPI_) && !defined(_PLATFORM_TURRIS_)
+
+ #ifdef FEATURE_SUPPORT_RDKLOG
+ setenv("LOG4C_RCPATH","/rdklogger",1);
+diff --git a/source/include/gw_prov_abstraction.h b/source/include/gw_prov_abstraction.h
+index e5a45e0..536191a 100644
+--- a/source/include/gw_prov_abstraction.h
++++ b/source/include/gw_prov_abstraction.h
+@@ -62,7 +62,7 @@
+ #define GW_SUBTLV_TR069_CONNREQ_PASSWORD_EXTIF 6
+ #define GW_SUBTLV_TR069_ACS_OVERRIDE_EXTIF 7
+
+-#if defined(_PLATFORM_RASPBERRYPI_)
++#if defined(_PLATFORM_RASPBERRYPI_) || defined(_PLATFORM_TURRIS_)
+ typedef enum
+ {
+ False = 0,