reassembly.h 924 B

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