Lines Matching refs:nhc

24 static int lowpan_nhc_insert(struct lowpan_nhc *nhc)  in lowpan_nhc_insert()  argument
34 len_dif = nhc->idlen - this->idlen; in lowpan_nhc_insert()
36 if (nhc->idlen < this->idlen) in lowpan_nhc_insert()
37 len = nhc->idlen; in lowpan_nhc_insert()
41 result = memcmp(nhc->id, this->id, len); in lowpan_nhc_insert()
55 rb_link_node(&nhc->node, parent, new); in lowpan_nhc_insert()
56 rb_insert_color(&nhc->node, &rb_root); in lowpan_nhc_insert()
61 static void lowpan_nhc_remove(struct lowpan_nhc *nhc) in lowpan_nhc_remove() argument
63 rb_erase(&nhc->node, &rb_root); in lowpan_nhc_remove()
72 struct lowpan_nhc *nhc = container_of(node, struct lowpan_nhc, in lowpan_nhc_by_nhcid() local
77 if (nhcid_skb_ptr + nhc->idlen > skb->data + skb->len) in lowpan_nhc_by_nhcid()
81 memcpy(nhcid_skb_ptr_masked, nhcid_skb_ptr, nhc->idlen); in lowpan_nhc_by_nhcid()
82 for (i = 0; i < nhc->idlen; i++) in lowpan_nhc_by_nhcid()
83 nhcid_skb_ptr_masked[i] &= nhc->idmask[i]; in lowpan_nhc_by_nhcid()
85 result = memcmp(nhcid_skb_ptr_masked, nhc->id, nhc->idlen); in lowpan_nhc_by_nhcid()
91 return nhc; in lowpan_nhc_by_nhcid()
100 struct lowpan_nhc *nhc; in lowpan_nhc_check_compression() local
105 nhc = lowpan_nexthdr_nhcs[hdr->nexthdr]; in lowpan_nhc_check_compression()
106 if (!(nhc && nhc->compress)) in lowpan_nhc_check_compression()
118 struct lowpan_nhc *nhc; in lowpan_nhc_do_compression() local
122 nhc = lowpan_nexthdr_nhcs[hdr->nexthdr]; in lowpan_nhc_do_compression()
133 if (unlikely(!nhc || !nhc->compress)) { in lowpan_nhc_do_compression()
144 ret = nhc->compress(skb, hc_ptr); in lowpan_nhc_do_compression()
149 skb_pull(skb, nhc->nexthdrlen); in lowpan_nhc_do_compression()
161 struct lowpan_nhc *nhc; in lowpan_nhc_do_uncompression() local
166 nhc = lowpan_nhc_by_nhcid(skb); in lowpan_nhc_do_uncompression()
167 if (nhc) { in lowpan_nhc_do_uncompression()
168 if (nhc->uncompress) { in lowpan_nhc_do_uncompression()
169 ret = nhc->uncompress(skb, sizeof(struct ipv6hdr) + in lowpan_nhc_do_uncompression()
170 nhc->nexthdrlen); in lowpan_nhc_do_uncompression()
178 nhc->name); in lowpan_nhc_do_uncompression()
187 hdr->nexthdr = nhc->nexthdr; in lowpan_nhc_do_uncompression()
190 skb_transport_header(skb), nhc->nexthdrlen); in lowpan_nhc_do_uncompression()
197 int lowpan_nhc_add(struct lowpan_nhc *nhc) in lowpan_nhc_add() argument
201 if (!nhc->idlen || !nhc->idsetup) in lowpan_nhc_add()
204 WARN_ONCE(nhc->idlen > LOWPAN_NHC_MAX_ID_LEN, in lowpan_nhc_add()
206 nhc->idlen); in lowpan_nhc_add()
208 nhc->idsetup(nhc); in lowpan_nhc_add()
212 if (lowpan_nexthdr_nhcs[nhc->nexthdr]) { in lowpan_nhc_add()
217 ret = lowpan_nhc_insert(nhc); in lowpan_nhc_add()
221 lowpan_nexthdr_nhcs[nhc->nexthdr] = nhc; in lowpan_nhc_add()
228 void lowpan_nhc_del(struct lowpan_nhc *nhc) in lowpan_nhc_del() argument
232 lowpan_nhc_remove(nhc); in lowpan_nhc_del()
233 lowpan_nexthdr_nhcs[nhc->nexthdr] = NULL; in lowpan_nhc_del()