Define bitmask for 6LoWPAN fragmentation header parsing
This commit is contained in:
parent
d556858570
commit
dce4640af8
@ -56,6 +56,8 @@
|
|||||||
|
|
||||||
#define IPV6_LL_ADDR_LEN (8)
|
#define IPV6_LL_ADDR_LEN (8)
|
||||||
|
|
||||||
|
#define SIXLOWPAN_FRAG_HDR_MASK (0xf8)
|
||||||
|
|
||||||
typedef struct lowpan_interval_list_t {
|
typedef struct lowpan_interval_list_t {
|
||||||
uint8_t start;
|
uint8_t start;
|
||||||
uint8_t end;
|
uint8_t end;
|
||||||
@ -737,14 +739,15 @@ void lowpan_read(uint8_t *data, uint8_t length, ieee_802154_long_t *s_laddr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Fragmented Packet */
|
/* Fragmented Packet */
|
||||||
if (((data[0] & 0xf8) == SIXLOWPAN_FRAG1_DISPATCH) || ((data[0] & 0xf8) == SIXLOWPAN_FRAGN_DISPATCH)) {
|
if (((data[0] & SIXLOWPAN_FRAG_HDR_MASK) == SIXLOWPAN_FRAG1_DISPATCH) ||
|
||||||
|
((data[0] & SIXLOWPAN_FRAG_HDR_MASK) == SIXLOWPAN_FRAGN_DISPATCH)) {
|
||||||
/* get 11-bit from first 2 byte*/
|
/* get 11-bit from first 2 byte*/
|
||||||
datagram_size = (((uint16_t)(data[0] << 8)) | data[1]) & 0x07ff;
|
datagram_size = (((uint16_t)(data[0] << 8)) | data[1]) & 0x07ff;
|
||||||
|
|
||||||
/* get 16-bit datagram tag */
|
/* get 16-bit datagram tag */
|
||||||
datagram_tag = (((uint16_t)(data[2] << 8)) | data[3]);
|
datagram_tag = (((uint16_t)(data[2] << 8)) | data[3]);
|
||||||
|
|
||||||
switch (data[0] & 0xf8) {
|
switch (data[0] & SIXLOWPAN_FRAG_HDR_MASK) {
|
||||||
/* First Fragment */
|
/* First Fragment */
|
||||||
case (SIXLOWPAN_FRAG1_DISPATCH): {
|
case (SIXLOWPAN_FRAG1_DISPATCH): {
|
||||||
datagram_offset = 0;
|
datagram_offset = 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user