check dest address for ping requests.
This commit is contained in:
@@ -48,6 +48,7 @@ AppRouter_Init:
|
|||||||
ldi r17, (appRouterDataEnd-appRouterDataBegin)
|
ldi r17, (appRouterDataEnd-appRouterDataBegin)
|
||||||
rcall Utils_FillSram
|
rcall Utils_FillSram
|
||||||
|
|
||||||
|
#ifndef APP_ROUTER_NO_ADDR_MGR
|
||||||
ldi r16, 0xe0 ; default range from 0xe0-0xef (will be changed later)
|
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 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
|
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
|
sts appRouterRangeEnd, r16
|
||||||
|
|
||||||
rcall appRouterReadConfFromEeprom ; try to read config from EEPROM
|
rcall appRouterReadConfFromEeprom ; try to read config from EEPROM
|
||||||
|
#endif
|
||||||
|
|
||||||
; set interface number for NETDEV0
|
; set interface number for NETDEV0
|
||||||
ldi r16, NETDEV0_IFACENUM
|
ldi r16, NETDEV0_IFACENUM
|
||||||
@@ -65,9 +67,11 @@ AppRouter_Init:
|
|||||||
ldi r16, NETDEV1_IFACENUM
|
ldi r16, NETDEV1_IFACENUM
|
||||||
sts netInterfaceData2+NET_IFACE_OFFS_IFACENUM, r16
|
sts netInterfaceData2+NET_IFACE_OFFS_IFACENUM, r16
|
||||||
|
|
||||||
|
#ifndef APP_ROUTER_NO_ADDR_MGR
|
||||||
ldi r18, NETMSG_CMD_ADDRESS_RANGE
|
ldi r18, NETMSG_CMD_ADDRESS_RANGE
|
||||||
rcall appRouterSendRangeMsgToDev1
|
rcall appRouterSendRangeMsgToDev1
|
||||||
|
#endif
|
||||||
|
|
||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
|
|
||||||
@@ -140,6 +144,7 @@ appRouterHandleMsgAnyDev_handleSetValue:
|
|||||||
breq appRouterHandleMsgAnyDev_handleSetRange
|
breq appRouterHandleMsgAnyDev_handleSetRange
|
||||||
rjmp appRouterHandleMsgAnyDev_clcRet
|
rjmp appRouterHandleMsgAnyDev_clcRet
|
||||||
appRouterHandleMsgAnyDev_handleSetRange:
|
appRouterHandleMsgAnyDev_handleSetRange:
|
||||||
|
#ifndef APP_ROUTER_NO_ADDR_MGR
|
||||||
sts netInterfaceData+NET_IFACE_OFFS_ADDRESS, r18 ; use first address for router itself
|
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
|
sts netInterfaceData2+NET_IFACE_OFFS_ADDRESS, r18 ; use same address for both interfaces to save on addresses
|
||||||
inc r18 ; start range after router
|
inc r18 ; start range after router
|
||||||
@@ -152,6 +157,7 @@ appRouterHandleMsgAnyDev_handleSetRange:
|
|||||||
ldi r18, NETMSG_CMD_REENUM
|
ldi r18, NETMSG_CMD_REENUM
|
||||||
rcall appRouterSendRangeMsgToDev1 ; (R16, R17, R18, R19, R20, R21, X, Y)
|
rcall appRouterSendRangeMsgToDev1 ; (R16, R17, R18, R19, R20, R21, X, Y)
|
||||||
rcall appRouterWriteConfToEeprom ; (r16, r17, X)
|
rcall appRouterWriteConfToEeprom ; (r16, r17, X)
|
||||||
|
#endif
|
||||||
sec
|
sec
|
||||||
ret
|
ret
|
||||||
appRouterHandleMsgAnyDev_clcRet:
|
appRouterHandleMsgAnyDev_clcRet:
|
||||||
@@ -172,6 +178,7 @@ appRouterHandleMsgAnyDev_end:
|
|||||||
; @clobbers any, !X
|
; @clobbers any, !X
|
||||||
|
|
||||||
appRouterHandleDev1Msg:
|
appRouterHandleDev1Msg:
|
||||||
|
#ifndef APP_ROUTER_NO_ADDR_MGR
|
||||||
push xl
|
push xl
|
||||||
push xh
|
push xh
|
||||||
rcall appRouterHandleDev1Msg_savedX
|
rcall appRouterHandleDev1Msg_savedX
|
||||||
@@ -202,6 +209,7 @@ appRouterHandleDev1Msg_handleClaimAddr:
|
|||||||
rcall appRouterSendDenyAddrR19ToDev1 ; (R16, R17, R18, R19, R20, R21, X, Y)
|
rcall appRouterSendDenyAddrR19ToDev1 ; (R16, R17, R18, R19, R20, R21, X, Y)
|
||||||
sec
|
sec
|
||||||
rjmp appRouterHandleDev1Msg_end
|
rjmp appRouterHandleDev1Msg_end
|
||||||
|
#endif
|
||||||
appRouterHandleDev1Msg_clcRet:
|
appRouterHandleDev1Msg_clcRet:
|
||||||
clc
|
clc
|
||||||
appRouterHandleDev1Msg_end:
|
appRouterHandleDev1Msg_end:
|
||||||
@@ -340,8 +348,18 @@ appRouterHandleRebootRequest_end:
|
|||||||
; @param X pointer to received message
|
; @param X pointer to received message
|
||||||
|
|
||||||
appRouterHandlePingRequest:
|
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
|
adiw xh:xl, NETMSG_OFFS_SRCADDR
|
||||||
ld r17, X
|
ld r17, X
|
||||||
|
sbiw xh:xl, NETMSG_OFFS_SRCADDR
|
||||||
push r17
|
push r17
|
||||||
bigcall NET_Buffer_Alloc ; (R16, R17, X)
|
bigcall NET_Buffer_Alloc ; (R16, R17, X)
|
||||||
pop r17
|
pop r17
|
||||||
@@ -408,8 +426,10 @@ appRouterHandleRouterMsgWithHdr:
|
|||||||
andi r17, (1<<NET_IFACE_BUFFER_IFACENUM1_BIT) | (1<<NET_IFACE_BUFFER_IFACENUM0_BIT)
|
andi r17, (1<<NET_IFACE_BUFFER_IFACENUM1_BIT) | (1<<NET_IFACE_BUFFER_IFACENUM0_BIT)
|
||||||
cpi r17, NETDEV1_IFACENUM
|
cpi r17, NETDEV1_IFACENUM
|
||||||
brne appRouterHandleRouterMsgWithHdr_any
|
brne appRouterHandleRouterMsgWithHdr_any
|
||||||
|
#ifndef APP_ROUTER_NO_ADDR_MGR
|
||||||
rcall appRouterHandleDev1Msg ; handle messages from controlled subnet
|
rcall appRouterHandleDev1Msg ; handle messages from controlled subnet
|
||||||
brcs appRouterHandleRouterMsgWithHdr_msgHandled
|
brcs appRouterHandleRouterMsgWithHdr_msgHandled
|
||||||
|
#endif
|
||||||
appRouterHandleRouterMsgWithHdr_any:
|
appRouterHandleRouterMsgWithHdr_any:
|
||||||
rcall appRouterHandleMsgAnyDev ; handle any msg
|
rcall appRouterHandleMsgAnyDev ; handle any msg
|
||||||
brcs appRouterHandleRouterMsgWithHdr_msgHandled
|
brcs appRouterHandleRouterMsgWithHdr_msgHandled
|
||||||
|
|||||||
Reference in New Issue
Block a user