Merged in antmerlino/apps (pull request #123)
i8shark: Adds CONFIG_IEEE802154_I8SHARK_XBEE_APPHDR option to remove XBee's application header before sending to Wireshark. This option will corrupt any traffic received that does not include this application header. Approved-by: Gregory Nutt <gnutt@nuttx.org>
This commit is contained in:
parent
0861f821fb
commit
96acb66d6a
@ -22,4 +22,16 @@ config IEEE802154_I8SHARK_HOST_IPADDR
|
|||||||
hex "Host IP address where Wireshark is running"
|
hex "Host IP address where Wireshark is running"
|
||||||
default 0x0a000001
|
default 0x0a000001
|
||||||
|
|
||||||
|
config IEEE802154_I8SHARK_XBEE_APPHDR
|
||||||
|
bool "XBee App Header compensation"
|
||||||
|
default n
|
||||||
|
---help---
|
||||||
|
XBee radios use an optional "application header" to support duplicate
|
||||||
|
frame detection. Wireshark does not know about this header and it causes
|
||||||
|
packets not to be recognized appropriately (6LoWPAN etc.). This option
|
||||||
|
blindly chops the first 2 bytes of payload from all incoming frames to
|
||||||
|
remove the header. This option can only be used when sniffing XBee-only
|
||||||
|
networks, as any frames not containing the application header will have
|
||||||
|
2 arbitrary bytes removed from it.
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
@ -415,8 +415,23 @@ static int i8shark_daemon(int argc, FAR char *argv[])
|
|||||||
|
|
||||||
/* The ZEP header is filled, now copy the frame in */
|
/* The ZEP header is filled, now copy the frame in */
|
||||||
|
|
||||||
|
#ifdef CONFIG_IEEE802154_I8SHARK_XBEE_APPHDR
|
||||||
|
memcpy(&zepframe[ind], frame.payload, frame.offset);
|
||||||
|
ind += frame.offset;
|
||||||
|
|
||||||
|
/* XBee radios use a 2 byte "application header" to support duplicate packet
|
||||||
|
* detection. Wireshark doesn't know how to handle this data, so we provide
|
||||||
|
* a configuration option that drops the first 2 bytes of the payload portion
|
||||||
|
* of the frame for all sniffed frames
|
||||||
|
*/
|
||||||
|
|
||||||
|
memcpy(&zepframe[ind], (frame.payload + frame.offset + 2),
|
||||||
|
(frame.length - frame.offset - 2));
|
||||||
|
ind += frame.length - frame.offset - 2;
|
||||||
|
#else
|
||||||
memcpy(&zepframe[ind], frame.payload, frame.length);
|
memcpy(&zepframe[ind], frame.payload, frame.length);
|
||||||
ind += frame.length;
|
ind += frame.length;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Send the encapsulated frame to Wireshark over UDP */
|
/* Send the encapsulated frame to Wireshark over UDP */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user