60#define SICSLOWPAN_UDP_4_BIT_PORT_MIN 0xF0B0
61#define SICSLOWPAN_UDP_4_BIT_PORT_MAX 0xF0BF
62#define SICSLOWPAN_UDP_8_BIT_PORT_MIN 0xF000
63#define SICSLOWPAN_UDP_8_BIT_PORT_MAX 0xF0FF
73#define SICSLOWPAN_COMPRESSION_IPV6 0
74#define SICSLOWPAN_COMPRESSION_IPHC 1
75#define SICSLOWPAN_COMPRESSION_6LORH 2
84#define SICSLOWPAN_DISPATCH_IPV6 0x41
85#define SICSLOWPAN_DISPATCH_HC1 0x42
86#define SICSLOWPAN_DISPATCH_IPHC 0x60
87#define SICSLOWPAN_DISPATCH_IPHC_MASK 0xe0
88#define SICSLOWPAN_DISPATCH_FRAG1 0xc0
89#define SICSLOWPAN_DISPATCH_FRAGN 0xe0
90#define SICSLOWPAN_DISPATCH_FRAG_MASK 0xf8
91#define SICSLOWPAN_DISPATCH_PAGING 0xf0
92#define SICSLOWPAN_DISPATCH_PAGING_MASK 0xf0
98#define SICSLOWPAN_HC1_NH_UDP 0x02
99#define SICSLOWPAN_HC1_NH_TCP 0x06
100#define SICSLOWPAN_HC1_NH_ICMP6 0x04
106#define SICSLOWPAN_HC_UDP_ALL_C 0xE0
117#define SICSLOWPAN_IPHC_FL_C 0x10
118#define SICSLOWPAN_IPHC_TC_C 0x08
119#define SICSLOWPAN_IPHC_NH_C 0x04
120#define SICSLOWPAN_IPHC_TTL_1 0x01
121#define SICSLOWPAN_IPHC_TTL_64 0x02
122#define SICSLOWPAN_IPHC_TTL_255 0x03
123#define SICSLOWPAN_IPHC_TTL_I 0x00
127#define SICSLOWPAN_IPHC_CID 0x80
129#define SICSLOWPAN_IPHC_SAC 0x40
130#define SICSLOWPAN_IPHC_SAM_00 0x00
131#define SICSLOWPAN_IPHC_SAM_01 0x10
132#define SICSLOWPAN_IPHC_SAM_10 0x20
133#define SICSLOWPAN_IPHC_SAM_11 0x30
135#define SICSLOWPAN_IPHC_SAM_BIT 4
137#define SICSLOWPAN_IPHC_M 0x08
138#define SICSLOWPAN_IPHC_DAC 0x04
139#define SICSLOWPAN_IPHC_DAM_00 0x00
140#define SICSLOWPAN_IPHC_DAM_01 0x01
141#define SICSLOWPAN_IPHC_DAM_10 0x02
142#define SICSLOWPAN_IPHC_DAM_11 0x03
144#define SICSLOWPAN_IPHC_DAM_BIT 0
147#define SICSLOWPAN_IPHC_ADDR_CONTEXT_LL 0
149#define SICSLOWPAN_IPHC_MCAST_RANGE 0xA0
153#define SICSLOWPAN_NHC_MASK 0xF0
154#define SICSLOWPAN_NHC_EXT_HDR 0xE0
155#define SICSLOWPAN_NHC_BIT 0x01
158#define SICSLOWPAN_NHC_ETX_HDR_HBHO 0x00
159#define SICSLOWPAN_NHC_ETX_HDR_ROUTING 0x01
160#define SICSLOWPAN_NHC_ETX_HDR_FRAG 0x02
161#define SICSLOWPAN_NHC_ETX_HDR_DESTO 0x03
162#define SICSLOWPAN_NHC_ETX_HDR_MOH 0x04
163#define SICSLOWPAN_NHC_ETX_HDR_IPV6 0x07
169#define SICSLOWPAN_NHC_UDP_MASK 0xF8
170#define SICSLOWPAN_NHC_UDP_ID 0xF0
171#define SICSLOWPAN_NHC_UDP_CHECKSUMC 0x04
172#define SICSLOWPAN_NHC_UDP_CHECKSUMI 0x00
174#define SICSLOWPAN_NHC_UDP_CS_P_00 0xF0
175#define SICSLOWPAN_NHC_UDP_CS_P_01 0xF1
176#define SICSLOWPAN_NHC_UDP_CS_P_10 0xF2
177#define SICSLOWPAN_NHC_UDP_CS_P_11 0xF3
186#define SICSLOWPAN_IPV6_HDR_LEN 1
187#define SICSLOWPAN_HC1_HDR_LEN 3
188#define SICSLOWPAN_HC1_HC_UDP_HDR_LEN 7
189#define SICSLOWPAN_FRAG1_HDR_LEN 4
190#define SICSLOWPAN_FRAGN_HDR_LEN 5
253#define sicslowpan_is_iid_16_bit_compressable(a) \
254 ((((a)->u16[4]) == 0) && \
255 (((a)->u8[10]) == 0)&& \
256 (((a)->u8[11]) == 0xff)&& \
257 (((a)->u8[12]) == 0xfe)&& \
258 (((a)->u8[13]) == 0))
267#define sicslowpan_is_mcast_addr_decompressable(a) \
268 (((*a & 0x01) == 0) && \
269 ((*(a + 1) == 0x01) || (*(a + 1) == 0x02)))
277#define sicslowpan_is_mcast_addr_compressable(a) \
278 ((((a)->u16[1]) == 0) && \
279 (((a)->u16[2]) == 0) && \
280 (((a)->u16[3]) == 0) && \
281 (((a)->u16[4]) == 0) && \
282 (((a)->u16[5]) == 0) && \
283 (((a)->u16[6]) == 0) && \
284 (((a)->u8[14]) == 0) && \
285 ((((a)->u8[15]) == 1) || (((a)->u8[15]) == 2)))
288#define sicslowpan_is_mcast_addr_compressable48(a) \
289 ((((a)->u16[1]) == 0) && \
290 (((a)->u16[2]) == 0) && \
291 (((a)->u16[3]) == 0) && \
292 (((a)->u16[4]) == 0) && \
293 (((a)->u8[10]) == 0))
296#define sicslowpan_is_mcast_addr_compressable32(a) \
297 ((((a)->u16[1]) == 0) && \
298 (((a)->u16[2]) == 0) && \
299 (((a)->u16[3]) == 0) && \
300 (((a)->u16[4]) == 0) && \
301 (((a)->u16[5]) == 0) && \
302 (((a)->u8[12]) == 0))
305#define sicslowpan_is_mcast_addr_compressable8(a) \
306 ((((a)->u8[1]) == 2) && \
307 (((a)->u16[1]) == 0) && \
308 (((a)->u16[2]) == 0) && \
309 (((a)->u16[3]) == 0) && \
310 (((a)->u16[4]) == 0) && \
311 (((a)->u16[5]) == 0) && \
312 (((a)->u16[6]) == 0) && \
313 (((a)->u8[14]) == 0))
323 int (* is_compressable)(uint8_t next_header);
327 int (*
compress)(uint8_t *compressed, uint8_t *uncompressed_len);
331 int (*
uncompress)(uint8_t *compressed, uint8_t *lowpanbuf, uint8_t *uncompressed_len);
The structure of a network driver in Contiki.
The header for fragments.
The structure of a next header compressor.
int(* compress)(uint8_t *compressed, uint8_t *uncompressed_len)
compress next header (TCP/UDP, etc) - ptr points to next header to compress
int(* uncompress)(uint8_t *compressed, uint8_t *lowpanbuf, uint8_t *uncompressed_len)
uncompress next header (TCP/UDP, etc) - ptr points to next header to uncompress
Header file for the uIP TCP/IP stack.