1#ifndef __IEEE802154_6LOWPAN_REASSEMBLY_H__ 2#define __IEEE802154_6LOWPAN_REASSEMBLY_H__ 3 4#include <net/inet_frag.h> 5 6struct lowpan_create_arg { 7 __be16 tag; 8 u16 d_size; 9 const struct ieee802154_addr *src; 10 const struct ieee802154_addr *dst; 11}; 12 13/* Equivalent of ipv4 struct ip 14 */ 15struct lowpan_frag_queue { 16 struct inet_frag_queue q; 17 18 __be16 tag; 19 u16 d_size; 20 struct ieee802154_addr saddr; 21 struct ieee802154_addr daddr; 22}; 23 24static inline u32 ieee802154_addr_hash(const struct ieee802154_addr *a) 25{ 26 switch (a->mode) { 27 case IEEE802154_ADDR_LONG: 28 return (((__force u64)a->extended_addr) >> 32) ^ 29 (((__force u64)a->extended_addr) & 0xffffffff); 30 case IEEE802154_ADDR_SHORT: 31 return (__force u32)(a->short_addr); 32 default: 33 return 0; 34 } 35} 36 37int lowpan_frag_rcv(struct sk_buff *skb, const u8 frag_type); 38void lowpan_net_frag_exit(void); 39int lowpan_net_frag_init(void); 40 41#endif /* __IEEE802154_6LOWPAN_REASSEMBLY_H__ */ 42