From e8423ae97ff4949dbb680aca4643d3aa18aebb44 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Sat, 19 Jul 2025 17:07:52 +0200 Subject: [PATCH] check dest address for ping requests. --- avr/apps/router/main.asm | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/avr/apps/router/main.asm b/avr/apps/router/main.asm index 05bc1be..b077898 100644 --- a/avr/apps/router/main.asm +++ b/avr/apps/router/main.asm @@ -48,6 +48,7 @@ AppRouter_Init: ldi r17, (appRouterDataEnd-appRouterDataBegin) rcall Utils_FillSram +#ifndef APP_ROUTER_NO_ADDR_MGR ldi r16, 0xe0 ; default range from 0xe0-0xef (will be changed later) sts netInterfaceData+NET_IFACE_OFFS_ADDRESS, r16 ; use first address for router itself sts netInterfaceData2+NET_IFACE_OFFS_ADDRESS, r16 ; use same address for both interfaces to save on addresses @@ -57,6 +58,7 @@ AppRouter_Init: sts appRouterRangeEnd, r16 rcall appRouterReadConfFromEeprom ; try to read config from EEPROM +#endif ; set interface number for NETDEV0 ldi r16, NETDEV0_IFACENUM @@ -65,9 +67,11 @@ AppRouter_Init: ldi r16, NETDEV1_IFACENUM sts netInterfaceData2+NET_IFACE_OFFS_IFACENUM, r16 +#ifndef APP_ROUTER_NO_ADDR_MGR ldi r18, NETMSG_CMD_ADDRESS_RANGE rcall appRouterSendRangeMsgToDev1 - +#endif + ret ; @end @@ -140,6 +144,7 @@ appRouterHandleMsgAnyDev_handleSetValue: breq appRouterHandleMsgAnyDev_handleSetRange rjmp appRouterHandleMsgAnyDev_clcRet appRouterHandleMsgAnyDev_handleSetRange: +#ifndef APP_ROUTER_NO_ADDR_MGR sts netInterfaceData+NET_IFACE_OFFS_ADDRESS, r18 ; use first address for router itself sts netInterfaceData2+NET_IFACE_OFFS_ADDRESS, r18 ; use same address for both interfaces to save on addresses inc r18 ; start range after router @@ -152,6 +157,7 @@ appRouterHandleMsgAnyDev_handleSetRange: ldi r18, NETMSG_CMD_REENUM rcall appRouterSendRangeMsgToDev1 ; (R16, R17, R18, R19, R20, R21, X, Y) rcall appRouterWriteConfToEeprom ; (r16, r17, X) +#endif sec ret appRouterHandleMsgAnyDev_clcRet: @@ -172,6 +178,7 @@ appRouterHandleMsgAnyDev_end: ; @clobbers any, !X appRouterHandleDev1Msg: +#ifndef APP_ROUTER_NO_ADDR_MGR push xl push xh rcall appRouterHandleDev1Msg_savedX @@ -202,6 +209,7 @@ appRouterHandleDev1Msg_handleClaimAddr: rcall appRouterSendDenyAddrR19ToDev1 ; (R16, R17, R18, R19, R20, R21, X, Y) sec rjmp appRouterHandleDev1Msg_end +#endif appRouterHandleDev1Msg_clcRet: clc appRouterHandleDev1Msg_end: @@ -340,8 +348,18 @@ appRouterHandleRebootRequest_end: ; @param X pointer to received message appRouterHandlePingRequest: + ld r17, X + lds r16, (netInterfaceData+NET_IFACE_OFFS_ADDRESS) + cp r16, r17 + breq appRouterHandlePingRequest_forMe + cpi r17, 0xff + breq appRouterHandlePingRequest_forMe + clc + rjmp appRouterHandlePingRequest_end +appRouterHandlePingRequest_forMe: adiw xh:xl, NETMSG_OFFS_SRCADDR ld r17, X + sbiw xh:xl, NETMSG_OFFS_SRCADDR push r17 bigcall NET_Buffer_Alloc ; (R16, R17, X) pop r17 @@ -408,8 +426,10 @@ appRouterHandleRouterMsgWithHdr: andi r17, (1<