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()
101 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()
121 struct lowpan_nhc *nhc; in lowpan_nhc_do_compression() local
125 nhc = lowpan_nexthdr_nhcs[hdr->nexthdr]; in lowpan_nhc_do_compression()
136 if (unlikely(!nhc || !nhc->compress)) { in lowpan_nhc_do_compression()
147 ret = nhc->compress(skb, hc_ptr); in lowpan_nhc_do_compression()
152 skb_pull(skb, nhc->nexthdrlen); in lowpan_nhc_do_compression()
163 struct lowpan_nhc *nhc; in lowpan_nhc_do_uncompression() local
168 nhc = lowpan_nhc_by_nhcid(skb); in lowpan_nhc_do_uncompression()
169 if (nhc) { in lowpan_nhc_do_uncompression()
170 if (nhc->uncompress) { in lowpan_nhc_do_uncompression()
171 ret = nhc->uncompress(skb, sizeof(struct ipv6hdr) + in lowpan_nhc_do_uncompression()
172 nhc->nexthdrlen); in lowpan_nhc_do_uncompression()
180 nhc->name); in lowpan_nhc_do_uncompression()
189 hdr->nexthdr = nhc->nexthdr; in lowpan_nhc_do_uncompression()
192 skb_transport_header(skb), nhc->nexthdrlen); in lowpan_nhc_do_uncompression()
199 int lowpan_nhc_add(struct lowpan_nhc *nhc) in lowpan_nhc_add() argument
203 if (!nhc->idlen || !nhc->idsetup) in lowpan_nhc_add()
206 WARN_ONCE(nhc->idlen > LOWPAN_NHC_MAX_ID_LEN, in lowpan_nhc_add()
208 nhc->idlen); in lowpan_nhc_add()
210 nhc->idsetup(nhc); in lowpan_nhc_add()
214 if (lowpan_nexthdr_nhcs[nhc->nexthdr]) { in lowpan_nhc_add()
219 ret = lowpan_nhc_insert(nhc); in lowpan_nhc_add()
223 lowpan_nexthdr_nhcs[nhc->nexthdr] = nhc; in lowpan_nhc_add()
230 void lowpan_nhc_del(struct lowpan_nhc *nhc) in lowpan_nhc_del() argument
234 lowpan_nhc_remove(nhc); in lowpan_nhc_del()
235 lowpan_nexthdr_nhcs[nhc->nexthdr] = NULL; in lowpan_nhc_del()