Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions source/scripts/init/service.d/lan_handler.sh
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,9 @@ case "$1" in
fi
;;
ipv4_*-status)
echo_t "LAN HANDLER : Received $1 event with status $2"
if [ x"up" = x${2} ]; then
echo_t "LAN HANDLER : Handling LAN up event for instance ${1}"
INST=${1#*_}
INST=${INST%-*}
Comment thread
aj970-crypto marked this conversation as resolved.
RG_MODE=`syscfg get last_erouter_mode`
Expand All @@ -184,12 +186,14 @@ case "$1" in


if [ xbrlan0 = x${LAN_IFNAME} ]; then
echo_t "LAN HANDLER : Handling LAN up event for brlan0, configuring IPv6 address if needed"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

XB7 uses lan_handler.c ,check if the changes are needed in c file as well

SYSEVT_lan_ipaddr_v6_prev=`sysevent get lan_ipaddr_v6_prev`

if [ "1" = "$(sysevent get ula_ipv6_enabled)" ] && [ "1" != "$(syscfg get Device_Mode)" ]; then
SYSEVT_lan_ipaddr_v6=$(sysevent get ipv6_prefix_ula | cut -d "/" -f 1)
SYSEVT_lan_ipaddr_v6=${SYSEVT_lan_ipaddr_v6}1
else
echo_t "LAN HANDLER : Using global IPv6 address for LAN"
SYSEVT_lan_ipaddr_v6=`sysevent get lan_ipaddr_v6`
fi
SYSEVT_lan_prefix_v6=`sysevent get lan_prefix_v6`
Expand Down Expand Up @@ -255,6 +259,7 @@ case "$1" in
elif [ x"ready" != x`sysevent get start-misc` ] && ( [ "$MANUFACTURE" = "Technicolor" ] || [ "$MANUFACTURE" = "Sercomm" ] ) ; then
#TCH XBx/TCCBR based startup post.d scripts which includes Firewall restart and dhcp start.
sysevent set lan-status started
echo_t "LAN HANDLER : lan status set to started"
firewall
if [ ! -f "$POSTD_START_FILE" ];
then
Expand All @@ -264,6 +269,7 @@ case "$1" in
else
echo_t "LAN HANDLER : Triggering DHCP server using LAN status"
sysevent set lan-status started
echo_t "LAN HANDLER : lan status set to started"
echo_t "LAN HANDLER : Triggering RDKB_FIREWALL_RESTART"
t2CountNotify "RF_INFO_RDKB_FIREWALL_RESTART"
sysevent set firewall-restart
Expand Down Expand Up @@ -314,6 +320,8 @@ case "$1" in
sysevent set firewall-restart
if [ -e "/usr/bin/print_uptime" ]; then
/usr/bin/print_uptime "Laninit_complete"
echo_t "LAN HANDLER : Laninit_complete uptime: $(cut -d. -f1 /proc/uptime)"
echo_t "LAN HANDLER : Checking lan-status after lan init complete, lan-status = $(sysevent get lan-status)"
fi
Comment thread
aj970-crypto marked this conversation as resolved.

uptime=$(cut -d. -f1 /proc/uptime)
Comment thread
aj970-crypto marked this conversation as resolved.
Expand Down Expand Up @@ -344,7 +352,7 @@ case "$1" in
pnm-status | bring-lan)
if [ -e "/usr/bin/print_uptime" ]; then
/usr/bin/print_uptime "Lan_init_start"
fi
fi
uptime=$(cut -d. -f1 /proc/uptime)
if [ -e "/usr/bin/onboarding_log" ]; then
/usr/bin/onboarding_log "Lan_init_start:$uptime"
Expand All @@ -354,7 +362,6 @@ case "$1" in
if [ -z "$INST" ]
then
echo_t "THE INSTANT=$INST"
echo_t "THE INSTANT=$INST"
#(use a simpler test than this -- but Hacky, since it assumes everything we want is not XB3!!)if [ "$BOX_TYPE" = "TCCBR" ] || [ "$BOX_TYPE" = "XB6" -a "$MANUFACTURE" = "Technicolor" ] || [ "$BOX_TYPE" = "XB7" -a "$MANUFACTURE" = "Technicolor" ] ; then
if ( [ "$BOX_TYPE" != "XB3" ] && ( [ "$MANUFACTURE" = "Technicolor" ] || [ "$MANUFACTURE" = "Sercomm" ] ) ) || [ "$BOX_TYPE" = "rpi" ] || [ "$BOX_TYPE" = "bpi" ]; then
COUNTER=1
Expand All @@ -371,7 +378,7 @@ case "$1" in
echo_t "THE COUNTER =$COUNTER"
done
else
echo_t "RDKB_SYSTEM_BOOT_UP_LOG : INST rerurned null, retrying"
echo_t "RDKB_SYSTEM_BOOT_UP_LOG : INST returned null, retrying"
INST=`psmcli get dmsb.MultiLAN.PrimaryLAN_l3net`
fi

Expand Down
45 changes: 39 additions & 6 deletions source/service_dhcp/lan_handler.c
Original file line number Diff line number Diff line change
Expand Up @@ -409,6 +409,10 @@ void bring_lan_up()
sysevent_set(g_iSyseventfd, g_tSysevent_token, "homesecurity_lan_l3net", l_cHomeSecurity_L3net, 0);
#endif
}
else
{
fprintf(g_fArmConsoleLog, "LAN HANDLER FAILURE : PrimaryLAN_l3net is empty after all PSM retries, LAN start cannot proceed\n");
}
}
else
{
Expand Down Expand Up @@ -449,6 +453,13 @@ void ipv4_status(int l3_inst, char *status)

sysevent_get(g_iSyseventfd, g_tSysevent_token, "primary_lan_l3net",
primary_l3net, sizeof(primary_l3net));
if (primary_l3net[0] == '\0')
{
fprintf(g_fArmConsoleLog, "LAN HANDLER FAILURE : primary_lan_l3net sysevent is empty, LAN start decision cannot be made for l3_inst=%d\n", l3_inst);
}

fprintf(g_fArmConsoleLog, "LAN HANDLER DEBUG: ipv4_status entry - l3_inst=%d, status=%s, primary_lan_l3net=%s, is_primary=%d\n",
l3_inst, status, primary_l3net, (l3_inst == atoi(primary_l3net)));

#if defined (WAN_FAILOVER_SUPPORTED) || defined(RDKB_EXTENDER_ENABLED)
int devMode=0, ulaEnable=0;
Expand All @@ -465,6 +476,10 @@ void ipv4_status(int l3_inst, char *status)
}
sysevent_get(g_iSyseventfd, g_tSysevent_token, l_cSysevent_Cmd, l_cLanIfName, sizeof(l_cLanIfName));

if (l_cLanIfName[0] == '\0')
{
fprintf(g_fArmConsoleLog, "LAN HANDLER FAILURE : LAN interface name is empty for l3_inst=%d, LAN start may fail\n", l3_inst);
}
// if it's ipv4 only, not enable link local
if (!strncmp(l_cLast_Erouter_Mode, "1", 1))
{
Expand Down Expand Up @@ -595,7 +610,11 @@ void ipv4_status(int l3_inst, char *status)
snprintf(l_cSysevent_Cmd, sizeof(l_cSysevent_Cmd), "ipv4_%d-ipv4addr", l3_inst);
sysevent_get(g_iSyseventfd, g_tSysevent_token, l_cSysevent_Cmd,
l_cCur_Ipv4_Addr, sizeof(l_cCur_Ipv4_Addr));


if (l_cCur_Ipv4_Addr[0] == '\0')
{
fprintf(g_fArmConsoleLog, "LAN HANDLER FAILURE : IPv4 address is empty for l3_inst=%d, LAN may not function correctly\n", l3_inst);
}
if ( l3_inst == 4 )
{
sysevent_set(g_iSyseventfd, g_tSysevent_token, "current_lan_ipaddr", l_cCur_Ipv4_Addr, 0);
Expand All @@ -611,13 +630,14 @@ void ipv4_status(int l3_inst, char *status)
char l_cParcon_Nfq_Status[16] = {0};
sysevent_get(g_iSyseventfd, g_tSysevent_token, "parcon_nfq_status",
l_cParcon_Nfq_Status, sizeof(l_cParcon_Nfq_Status));

fprintf(g_fArmConsoleLog, "LAN HANDLER DEBUG: Decision inputs - last_erouter_mode=%s, start_misc=%s, current_wan_ipaddr=%s, parcon_nfq=%s\n",
l_cLast_Erouter_Mode, l_cStart_Misc, l_cCurrentWan_IpAddr, l_cParcon_Nfq_Status);

if ((!strncmp(l_cLast_Erouter_Mode, "2", 1)) && (strncmp(l_cStart_Misc, "ready", 5)))
{
if ( l3_inst == atoi(primary_l3net))
{
fprintf(g_fArmConsoleLog, "LAN HANDLER : Triggering DHCP server using LAN status based on RG_MODE:2");
fprintf(g_fArmConsoleLog, "LAN HANDLER : Setting LAN start (Branch1-RG_MODE2) and Triggering DHCP server using LAN status based on RG_MODE:2");
sysevent_set(g_iSyseventfd, g_tSysevent_token, "lan-status", "started", 0);
}
system("firewall");
Expand All @@ -635,7 +655,7 @@ void ipv4_status(int l3_inst, char *status)

if ( l3_inst == atoi(primary_l3net))
{
fprintf(g_fArmConsoleLog, "LAN HANDLER : Triggering DHCP server using LAN status based on start misc\n");
fprintf(g_fArmConsoleLog, "LAN HANDLER : Starting LAN (primary l3net) and Triggering DHCP server using LAN status based on start misc\n");
sysevent_set(g_iSyseventfd, g_tSysevent_token, "lan-status", "started", 0);
}
if (strncmp(l_cParcon_Nfq_Status, "started", 7))
Expand Down Expand Up @@ -690,9 +710,11 @@ void ipv4_status(int l3_inst, char *status)
}
else
{
fprintf(g_fArmConsoleLog, "LAN HANDLER DEBUG: Entered ELSE/fallback branch - erouter_mode=%s, start_misc=%s, wan_ip=%s\n",
l_cLast_Erouter_Mode, l_cStart_Misc, l_cCurrentWan_IpAddr);
if ( l3_inst == atoi(primary_l3net))
{
fprintf(g_fArmConsoleLog, "LAN HANDLER : Triggering DHCP server using LAN status\n");
fprintf(g_fArmConsoleLog, "LAN HANDLER : setting lan-status=started, Triggering DHCP server using LAN status\n");
sysevent_set(g_iSyseventfd, g_tSysevent_token, "lan-status", "started", 0);
}
fprintf(g_fArmConsoleLog, "LAN HANDLER : Triggering RDKB_FIREWALL_RESTART\n");
Expand All @@ -704,7 +726,8 @@ void ipv4_status(int l3_inst, char *status)
// system("firewall_nfq_handler.sh &");
sysinfo(&l_sSysInfo);
snprintf(l_cLan_Uptime, sizeof(l_cLan_Uptime), "%ld", l_sSysInfo.uptime);
sysevent_set(g_iSyseventfd, g_tSysevent_token, "lan_start_time", l_cLan_Uptime, 0);
sysevent_set(g_iSyseventfd, g_tSysevent_token, "lan_start_time", l_cLan_Uptime, 0);
fprintf(g_fArmConsoleLog, "LAN HANDLER DEBUG: lan_start_time=%s, l3_inst=%d, setting ipv4_%d_status_configured\n", l_cLan_Uptime, l3_inst, l3_inst);

if (4 == l3_inst)
{
Expand All @@ -725,6 +748,7 @@ void ipv4_status(int l3_inst, char *status)
fprintf(g_fArmConsoleLog, "LAN HANDLER : DHCP configuration status got is:%s\n", l_cDhcp_Server_Prog);
if (!strncmp(l_cLast_Erouter_Mode, "2", 1) && (strncmp(l_cDsLite_Enabled, "1", 1)))
{
fprintf(g_fArmConsoleLog, "LAN HANDLER : Stopping DHCP server - IPv6 only mode (erouter_mode=2) and DSlite disabled\n");
sysevent_set(g_iSyseventfd, g_tSysevent_token, "dhcp_server-stop", "", 0);
}
else if ((strncmp(l_cLast_Erouter_Mode, "0", 1)) &&
Expand All @@ -733,6 +757,14 @@ void ipv4_status(int l3_inst, char *status)
fprintf(g_fArmConsoleLog, "LAN HANDLER : Triggering dhcp start based on last erouter mode\n");
sysevent_set(g_iSyseventfd, g_tSysevent_token, "dhcp_server-start", "", 0);
}
else if (!strncmp(l_cLast_Erouter_Mode, "0", 1))
{
fprintf(g_fArmConsoleLog, "LAN HANDLER FAILURE : DHCP server not started - erouter_mode is 0 (disabled), LAN clients will not get IP addresses\n");
}
else
{
fprintf(g_fArmConsoleLog, "LAN HANDLER WARNING : DHCP server start skipped - already in progress (dhcp_server_prog=%s)\n", l_cDhcp_Server_Prog);
}

if (0 != l_cIpv6_Prefix[0])
{
Expand All @@ -745,6 +777,7 @@ void ipv4_status(int l3_inst, char *status)
}
else
{
fprintf(g_fArmConsoleLog, "LAN HANDLER DEBUG: ipv4_status - status is NOT 'up' (status=%s), l3_inst=%d\n", status, l3_inst);
if ( l3_inst == atoi(primary_l3net))
{
sysevent_get(g_iSyseventfd, g_tSysevent_token, "lan-status",
Expand Down
9 changes: 9 additions & 0 deletions source/service_routed/service_routed.c
Original file line number Diff line number Diff line change
Expand Up @@ -2075,6 +2075,7 @@ STATIC void checkIfModeIsSwitched(int sefd, token_t setok)
#endif
STATIC int radv_start(struct serv_routed *sr)
{
fprintf(logfptr, "%s: Entering\n", __FUNCTION__);
Comment thread
aj970-crypto marked this conversation as resolved.
Comment thread
aj970-crypto marked this conversation as resolved.

#ifdef RDKB_EXTENDER_ENABLED
int deviceMode = GetDeviceNetworkMode();
Expand Down Expand Up @@ -2114,6 +2115,7 @@ STATIC int radv_start(struct serv_routed *sr)
char aBridgeMode[8];
syscfg_get(NULL, "bridge_mode", aBridgeMode, sizeof(aBridgeMode));

fprintf(logfptr, "%s: bridge_mode %s and LAN ready = %d \n", __FUNCTION__, aBridgeMode, sr->lan_ready);
Comment thread
aj970-crypto marked this conversation as resolved.
if ((!strcmp(aBridgeMode, "0")) && (!sr->lan_ready)) {
fprintf(logfptr, "%s: LAN is not ready !\n", __FUNCTION__);
return -1;
Expand Down Expand Up @@ -2177,6 +2179,7 @@ STATIC int radv_start(struct serv_routed *sr)
printf("DHCPv6 is %s. Starting zebra Process\n", (bEnabled?"Enabled":"Disabled"));
#else
v_secure_system("zebra -d -f %s -P 0 2> /tmp/.zedra_error", ZEBRA_CONF_FILE);
fprintf(logfptr, "%s: zebra started\n", __FUNCTION__);
Comment thread
aj970-crypto marked this conversation as resolved.
Comment thread
aj970-crypto marked this conversation as resolved.
#endif

return 0;
Expand Down Expand Up @@ -2411,11 +2414,17 @@ STATIC int serv_routed_init(struct serv_routed *sr)

sysevent_get(sr->sefd, sr->setok, "wan-status", wan_st, sizeof(wan_st));
if (strcmp(wan_st, "started") == 0)
{
sr->wan_ready = true;
fprintf(logfptr, "%s: WAN is ready and value = %d\n", __FUNCTION__, sr->wan_ready);
Comment thread
aj970-crypto marked this conversation as resolved.
Comment thread
aj970-crypto marked this conversation as resolved.
}

sysevent_get(sr->sefd, sr->setok, "lan-status", lan_st, sizeof(lan_st));
if (strcmp(lan_st, "started") == 0)
{
sr->lan_ready = true;
fprintf(logfptr, "%s: LAN is ready and value = %d\n", __FUNCTION__, sr->lan_ready);
Comment thread
aj970-crypto marked this conversation as resolved.
}

return 0;
}
Expand Down
Loading