Skip to content

Commit

Permalink
RDKB-56195 : Control DNS health check using RFC in VISM (#45)
Browse files Browse the repository at this point in the history
* RDKB-56195 : Control DNS health check using RFC in VISM

Reason for change: Implementaion of Wan health check control from a RFC

Test Procedure:
Updated in Jira.

Risks: none
Priority: P1

Signed-off-by: S-Parthiban-Selvaraj <parthiban.selvaraj@sky.uk>

* Fixing IHC build errors for sky devices

Signed-off-by: Parthiban Selvaraj <parthiban.selvaraj@sky.uk>

* Sending IPOE health check message if restarted dynamically.

Signed-off-by: S-Parthiban-Selvaraj <parthiban.selvaraj@sky.uk>

* Adding WanManager Version log

Signed-off-by: S-Parthiban-Selvaraj <parthiban.selvaraj@sky.uk>

* Removing the test code changes

Signed-off-by: S-Parthiban-Selvaraj <parthiban.selvaraj@sky.uk>

---------

Signed-off-by: S-Parthiban-Selvaraj <parthiban.selvaraj@sky.uk>
Signed-off-by: Parthiban Selvaraj <parthiban.selvaraj@sky.uk>
  • Loading branch information
S-Parthiban-Selvaraj authored Jul 19, 2024
1 parent 322fb17 commit 8d1df80
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 10 deletions.
5 changes: 4 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,10 @@ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],
[AM_DEFAULT_VERBOSITY=1
AC_SUBST(AM_DEFAULT_VERBOSITY)])


m4_define([GIT_VERSION],
m4_esyscmd_s([git describe --tags --always --dirty 2>/dev/null || echo "undefined"])
)
AC_SUBST([GIT_VERSION], [GIT_VERSION])


dnl **********************************
Expand Down
1 change: 1 addition & 0 deletions source/TR-181/include/wanmgr_dml.h
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,7 @@ typedef struct _DML_WANIFACE_IP
DML_WAN_IP_SOURCE IPv6Source;
BOOL ConnectivityCheckRunning;
BOOL RestartConnectivityCheck;
BOOL WCC_TypeChanged; // Flag to notify change in ConnectivityCheckType
BOOL RefreshDHCP;
BOOL RestartV6Client; //This is a workaround to restart dhcpv6 client for the platform where PAM configures IPv6. !FEATURE_RDKB_CONFIGURABLE_WAN_INTERFACE
DML_WAN_IP_MODE Mode;
Expand Down
1 change: 1 addition & 0 deletions source/WanManager/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,6 @@ wanmanager_CPPFLAGS = -I$(top_srcdir)/source/TR-181/middle_layer_src \
-I${PKG_CONFIG_SYSROOT_DIR}$(includedir)/rbus

wanmanager_CFLAGS = -DFEATURE_SUPPORT_RDKLOG $(DBUS_CFLAGS) $(SYSTEMD_CFLAGS)
wanmanager_CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
wanmanager_SOURCES = wanmgr_webconfig_apis.c wanmgr_webconfig.c wanmgr_main.c wanmgr_ssp_action.c wanmgr_ssp_messagebus_interface.c wanmgr_core.c wanmgr_controller.c wanmgr_data.c wanmgr_sysevents.c wanmgr_interface_sm.c wanmgr_utils.c wanmgr_net_utils.c wanmgr_dhcpv4_apis.c wanmgr_dhcpv6_apis.c wanmgr_ipc.c wanmgr_dhcpv4_internal.c wanmgr_dhcpv6_internal.c wanmgr_policy_autowan_impl.c wanmgr_policy_auto_impl.c dm_pack_datamodel.c wanmgr_wan_failover.c wanmgr_policy_parallel_scan_impl.c wanmgr_dhcp_legacy_apis.c
wanmanager_LDADD = $(wanmanager_DEPENDENCIES) -lccsp_common -lrdkloggers $(DBUS_LIBS) $(SYSTEMD_LDFLAGS) -lhal_platform -lapi_dhcpv4c -lnanomsg -lwebconfig_framework -lmsgpackc -ldhcp_client_utils -lprivilege -lrbus -lsecure_wrapper
58 changes: 49 additions & 9 deletions source/WanManager/wanmgr_interface_sm.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@ static eWanState_t wan_transition_exit(WanMgr_IfaceSM_Controller_t* pWanIfaceCtr
static ANSC_STATUS WanMgr_StartConnectivityCheck(WanMgr_IfaceSM_Controller_t* pWanIfaceCtrl);
static ANSC_STATUS WanMgr_StopConnectivityCheck(WanMgr_IfaceSM_Controller_t* pWanIfaceCtrl);
static ANSC_STATUS WanMgr_SendMsgTo_ConnectivityCheck(WanMgr_IfaceSM_Controller_t* pWanIfaceCtrl , CONNECTION_TYPE type, BOOL ConnStatus);
#ifdef FEATURE_IPOE_HEALTH_CHECK
static ANSC_STATUS WanManager_StopIHC(WanMgr_IfaceSM_Controller_t* pWanIfaceCtrl);
#endif

/***************************************************************************
* @brief API used to check the incoming nameserver is valid
Expand Down Expand Up @@ -447,6 +450,46 @@ static void WanMgr_MonitorDhcpApps (WanMgr_IfaceSM_Controller_t* pWanIfaceCtrl)
#endif
}

/* Handling Runtime IP.ConnectivityCheckType change */
if(p_VirtIf->IP.WCC_TypeChanged == TRUE)
{
if(p_VirtIf->IP.ConnectivityCheckRunning == TRUE)
{
/* If IP.WCC_TypeChanged is set, we have lost the previous configuration of ConnectivityCheckType.
* Try to stop the Connectivity check services if running.
*/
#ifdef FEATURE_IPOE_HEALTH_CHECK
if(pWanIfaceCtrl->IhcPid > 0)
{
WanManager_StopIHC(pWanIfaceCtrl);
}
else
#endif
{
WanMgr_Configure_TAD_WCC( p_VirtIf, WCC_STOP);
}
p_VirtIf->IP.ConnectivityCheckRunning = FALSE;
//Since we are stopping Connectivity Check, Reset ConnectivityStatus to UP.
p_VirtIf->IP.Ipv4ConnectivityStatus = WAN_CONNECTIVITY_UP;
p_VirtIf->IP.Ipv6ConnectivityStatus = WAN_CONNECTIVITY_UP;
}

//Start the new connectivity check
WanMgr_StartConnectivityCheck(pWanIfaceCtrl);
p_VirtIf->IP.WCC_TypeChanged = FALSE; //Reset the flag

#ifdef FEATURE_IPOE_HEALTH_CHECK
if ( p_VirtIf->Status == WAN_IFACE_STATUS_UP && pWanIfaceCtrl->IhcPid > 0 )
{
if(p_VirtIf->IP.Ipv4Status == WAN_IFACE_IPV4_STATE_UP)
WanMgr_SendMsgTo_ConnectivityCheck(pWanIfaceCtrl, CONNECTION_MSG_IPV4 , TRUE);

if(p_VirtIf->IP.Ipv6Status == WAN_IFACE_IPV6_STATE_UP)
WanMgr_SendMsgTo_ConnectivityCheck(pWanIfaceCtrl, CONNECTION_MSG_IPV6 , TRUE);
}
#endif
}

#ifdef FEATURE_IPOE_HEALTH_CHECK
if(p_VirtIf->IP.ConnectivityCheckType == WAN_CONNECTIVITY_TYPE_IHC &&
p_VirtIf->IP.ConnectivityCheckRunning == TRUE &&
Expand Down Expand Up @@ -1189,6 +1232,7 @@ static int wan_setUpIPv4(WanMgr_IfaceSM_Controller_t * pWanIfaceCtrl)
#endif
/* Firewall restart. */
sysevent_set(sysevent_fd, sysevent_token, SYSEVENT_FIREWALL_RESTART, NULL, 0);
WanMgr_StartConnectivityCheck(pWanIfaceCtrl);
return ret;
}

Expand Down Expand Up @@ -1343,6 +1387,7 @@ static int wan_setUpIPv6(WanMgr_IfaceSM_Controller_t * pWanIfaceCtrl)
#endif
}

WanMgr_StartConnectivityCheck(pWanIfaceCtrl);
return ret;
}

Expand Down Expand Up @@ -1477,12 +1522,13 @@ static ANSC_STATUS WanMgr_StartConnectivityCheck(WanMgr_IfaceSM_Controller_t* pW
{
CcspTraceInfo(("%s %d ConnectivityCheck Type is TAD \n", __FUNCTION__, __LINE__));
WanMgr_Configure_TAD_WCC( pVirtIf, (pVirtIf->IP.ConnectivityCheckRunning && pVirtIf->IP.RestartConnectivityCheck) ? WCC_RESTART : WCC_START);
pVirtIf->IP.ConnectivityCheckRunning = TRUE;
}
else if(pVirtIf->IP.ConnectivityCheckType == WAN_CONNECTIVITY_TYPE_IHC)
{
CcspTraceInfo(("%s %d ConnectivityCheck Type is IHC \n", __FUNCTION__, __LINE__));
#ifdef FEATURE_IPOE_HEALTH_CHECK
if ( pWanIfaceCtrl->IhcPid <= 0 )
if ( pVirtIf->Status == WAN_IFACE_STATUS_UP && pWanIfaceCtrl->IhcPid <= 0 )
{
// IHC enabled but not running, So Starting IHC
UINT IhcPid = 0;
Expand All @@ -1497,13 +1543,13 @@ static ANSC_STATUS WanMgr_StartConnectivityCheck(WanMgr_IfaceSM_Controller_t* pW
{
CcspTraceError(("%s %d - Failed to start IPoE Health Check for interface %s \n", __FUNCTION__, __LINE__, pVirtIf->Name));
}
pVirtIf->IP.ConnectivityCheckRunning = TRUE;
}
#endif
}else
{
CcspTraceInfo(("[%s:%d] ConnectivityCheck not configured.\n", __FUNCTION__, __LINE__));
}
pVirtIf->IP.ConnectivityCheckRunning = TRUE;

return ANSC_STATUS_SUCCESS;
}
Expand Down Expand Up @@ -2088,7 +2134,6 @@ static eWanState_t wan_transition_ipv4_up(WanMgr_IfaceSM_Controller_t* pWanIface
CcspTraceError(("%s %d - Failed to configure IPv4 successfully \n", __FUNCTION__, __LINE__));
}

WanMgr_StartConnectivityCheck(pWanIfaceCtrl);
WanMgr_SendMsgTo_ConnectivityCheck(pWanIfaceCtrl, CONNECTION_MSG_IPV4 , TRUE);

/* Force reset ipv4 state global flag. */
Expand Down Expand Up @@ -2351,7 +2396,6 @@ static eWanState_t wan_transition_ipv6_up(WanMgr_IfaceSM_Controller_t* pWanIface
CcspTraceError(("%s %d - Failed to configure IPv6 successfully \n", __FUNCTION__, __LINE__));
}

WanMgr_StartConnectivityCheck(pWanIfaceCtrl);
WanMgr_SendMsgTo_ConnectivityCheck(pWanIfaceCtrl, CONNECTION_MSG_IPV6 , TRUE);

Update_Interface_Status();
Expand Down Expand Up @@ -2798,11 +2842,7 @@ static eWanState_t wan_transition_standby(WanMgr_IfaceSM_Controller_t* pWanIface
WanMgr_Publish_WanStatus(pWanIfaceCtrl->interfaceIdx, pWanIfaceCtrl->VirIfIdx);
}

//Start ConnectivityCheck while receiving Ip except IPOE health check case
if(p_VirtIf->IP.ConnectivityCheckType != WAN_CONNECTIVITY_TYPE_IHC)
{
WanMgr_StartConnectivityCheck(pWanIfaceCtrl);
}
WanMgr_StartConnectivityCheck(pWanIfaceCtrl);

Update_Interface_Status();
DmlSetVLANInUseToPSMDB(p_VirtIf);
Expand Down
1 change: 1 addition & 0 deletions source/WanManager/wanmgr_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,7 @@ int main(int argc, char* argv[])
pComponentName = COMPONENT_NAME_WANMANAGER;

rdk_logger_init(DEBUG_INI_NAME);
CcspTraceInfo(("Version : %s \n",GIT_VERSION ));

//DATA INIT
WanMgr_Data_Init();
Expand Down

0 comments on commit 8d1df80

Please sign in to comment.