check dest address for ping requests.
This commit is contained in:
@@ -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<<NET_IFACE_BUFFER_IFACENUM1_BIT) | (1<<NET_IFACE_BUFFER_IFACENUM0_BIT)
|
||||
cpi r17, NETDEV1_IFACENUM
|
||||
brne appRouterHandleRouterMsgWithHdr_any
|
||||
#ifndef APP_ROUTER_NO_ADDR_MGR
|
||||
rcall appRouterHandleDev1Msg ; handle messages from controlled subnet
|
||||
brcs appRouterHandleRouterMsgWithHdr_msgHandled
|
||||
#endif
|
||||
appRouterHandleRouterMsgWithHdr_any:
|
||||
rcall appRouterHandleMsgAnyDev ; handle any msg
|
||||
brcs appRouterHandleRouterMsgWithHdr_msgHandled
|
||||
|
||||
Reference in New Issue
Block a user