]>
Commit | Line | Data |
---|---|---|
7240cdec AA |
1 | #ifndef __IEEE802154_6LOWPAN_REASSEMBLY_H__ |
2 | #define __IEEE802154_6LOWPAN_REASSEMBLY_H__ | |
3 | ||
4 | #include <net/inet_frag.h> | |
5 | ||
6 | struct lowpan_create_arg { | |
7 | __be16 tag; | |
8 | u16 d_size; | |
376b7bd3 PB |
9 | const struct ieee802154_addr_sa *src; |
10 | const struct ieee802154_addr_sa *dst; | |
7240cdec AA |
11 | }; |
12 | ||
13 | /* Equivalent of ipv4 struct ip | |
14 | */ | |
15 | struct lowpan_frag_queue { | |
16 | struct inet_frag_queue q; | |
17 | ||
18 | __be16 tag; | |
19 | u16 d_size; | |
376b7bd3 PB |
20 | struct ieee802154_addr_sa saddr; |
21 | struct ieee802154_addr_sa daddr; | |
7240cdec AA |
22 | }; |
23 | ||
376b7bd3 | 24 | static inline u32 ieee802154_addr_hash(const struct ieee802154_addr_sa *a) |
7240cdec AA |
25 | { |
26 | switch (a->addr_type) { | |
27 | case IEEE802154_ADDR_LONG: | |
28 | return (__force u32)((((u32 *)a->hwaddr))[0] ^ | |
29 | ((u32 *)(a->hwaddr))[1]); | |
30 | case IEEE802154_ADDR_SHORT: | |
31 | return (__force u32)(a->short_addr); | |
32 | default: | |
33 | return 0; | |
34 | } | |
35 | } | |
36 | ||
376b7bd3 PB |
37 | static inline bool |
38 | ieee802154_addr_addr_equal(const struct ieee802154_addr_sa *a1, | |
39 | const struct ieee802154_addr_sa *a2) | |
7240cdec AA |
40 | { |
41 | if (a1->pan_id != a2->pan_id) | |
42 | return false; | |
43 | ||
44 | if (a1->addr_type != a2->addr_type) | |
45 | return false; | |
46 | ||
47 | switch (a1->addr_type) { | |
48 | case IEEE802154_ADDR_LONG: | |
49 | if (memcmp(a1->hwaddr, a2->hwaddr, IEEE802154_ADDR_LEN)) | |
50 | return false; | |
51 | break; | |
52 | case IEEE802154_ADDR_SHORT: | |
53 | if (a1->short_addr != a2->short_addr) | |
54 | return false; | |
55 | break; | |
56 | default: | |
57 | return false; | |
58 | } | |
59 | ||
60 | return true; | |
61 | } | |
62 | ||
63 | int lowpan_frag_rcv(struct sk_buff *skb, const u8 frag_type); | |
64 | void lowpan_net_frag_exit(void); | |
65 | int lowpan_net_frag_init(void); | |
66 | ||
67 | #endif /* __IEEE802154_6LOWPAN_REASSEMBLY_H__ */ |