Lines Matching refs:guehdr
86 static struct guehdr *gue_remcsum(struct sk_buff *skb, struct guehdr *guehdr, in gue_remcsum() argument
97 return guehdr; in gue_remcsum()
101 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_remcsum()
103 skb_remcsum_process(skb, (void *)guehdr + hdrlen, in gue_remcsum()
106 return guehdr; in gue_remcsum()
109 static int gue_control_message(struct sk_buff *skb, struct guehdr *guehdr) in gue_control_message() argument
120 struct guehdr *guehdr; in gue_udp_recv() local
127 len = sizeof(struct udphdr) + sizeof(struct guehdr); in gue_udp_recv()
131 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_udp_recv()
133 switch (guehdr->version) { in gue_udp_recv()
142 switch (((struct iphdr *)guehdr)->version) { in gue_udp_recv()
163 optlen = guehdr->hlen << 2; in gue_udp_recv()
170 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_udp_recv()
172 hdrlen = sizeof(struct guehdr) + optlen; in gue_udp_recv()
174 if (guehdr->version != 0 || validate_gue_flags(guehdr, optlen)) in gue_udp_recv()
177 hdrlen = sizeof(struct guehdr) + optlen; in gue_udp_recv()
190 data = &guehdr[1]; in gue_udp_recv()
192 if (guehdr->flags & GUE_FLAG_PRIV) { in gue_udp_recv()
198 guehdr = gue_remcsum(skb, guehdr, data + doffset, in gue_udp_recv()
199 hdrlen, guehdr->proto_ctype, in gue_udp_recv()
202 if (!guehdr) in gue_udp_recv()
205 data = &guehdr[1]; in gue_udp_recv()
211 if (unlikely(guehdr->control)) in gue_udp_recv()
212 return gue_control_message(skb, guehdr); in gue_udp_recv()
220 return -guehdr->proto_ctype; in gue_udp_recv()
285 static struct guehdr *gue_gro_remcsum(struct sk_buff *skb, unsigned int off, in gue_gro_remcsum()
286 struct guehdr *guehdr, void *data, in gue_gro_remcsum() argument
295 return guehdr; in gue_gro_remcsum()
300 guehdr = skb_gro_remcsum_process(skb, (void *)guehdr, off, hdrlen, in gue_gro_remcsum()
305 return guehdr; in gue_gro_remcsum()
316 struct guehdr *guehdr; in gue_gro_receive() local
328 len = off + sizeof(*guehdr); in gue_gro_receive()
330 guehdr = skb_gro_header_fast(skb, off); in gue_gro_receive()
332 guehdr = skb_gro_header_slow(skb, len, off); in gue_gro_receive()
333 if (unlikely(!guehdr)) in gue_gro_receive()
337 switch (guehdr->version) { in gue_gro_receive()
341 switch (((struct iphdr *)guehdr)->version) { in gue_gro_receive()
356 optlen = guehdr->hlen << 2; in gue_gro_receive()
360 guehdr = skb_gro_header_slow(skb, len, off); in gue_gro_receive()
361 if (unlikely(!guehdr)) in gue_gro_receive()
365 if (unlikely(guehdr->control) || guehdr->version != 0 || in gue_gro_receive()
366 validate_gue_flags(guehdr, optlen)) in gue_gro_receive()
369 hdrlen = sizeof(*guehdr) + optlen; in gue_gro_receive()
374 skb_gro_postpull_rcsum(skb, guehdr, hdrlen); in gue_gro_receive()
376 data = &guehdr[1]; in gue_gro_receive()
378 if (guehdr->flags & GUE_FLAG_PRIV) { in gue_gro_receive()
384 guehdr = gue_gro_remcsum(skb, off, guehdr, in gue_gro_receive()
389 if (!guehdr) in gue_gro_receive()
392 data = &guehdr[1]; in gue_gro_receive()
401 const struct guehdr *guehdr2; in gue_gro_receive()
406 guehdr2 = (struct guehdr *)(p->data + off); in gue_gro_receive()
411 if (guehdr->word != guehdr2->word) { in gue_gro_receive()
417 if (guehdr->hlen && memcmp(&guehdr[1], &guehdr2[1], in gue_gro_receive()
418 guehdr->hlen << 2)) { in gue_gro_receive()
424 proto = guehdr->proto_ctype; in gue_gro_receive()
459 struct guehdr *guehdr = (struct guehdr *)(skb->data + nhoff); in gue_gro_complete() local
465 switch (guehdr->version) { in gue_gro_complete()
467 proto = guehdr->proto_ctype; in gue_gro_complete()
468 guehlen = sizeof(*guehdr) + (guehdr->hlen << 2); in gue_gro_complete()
471 switch (((struct iphdr *)guehdr)->version) { in gue_gro_complete()
849 len = sizeof(struct udphdr) + sizeof(struct guehdr); in gue_encap_hlen()
881 struct guehdr *guehdr; in __gue_build_header() local
904 hdrlen = sizeof(struct guehdr) + optlen; in __gue_build_header()
908 guehdr = (struct guehdr *)skb->data; in __gue_build_header()
910 guehdr->control = 0; in __gue_build_header()
911 guehdr->version = 0; in __gue_build_header()
912 guehdr->hlen = optlen >> 2; in __gue_build_header()
913 guehdr->flags = 0; in __gue_build_header()
914 guehdr->proto_ctype = *protocol; in __gue_build_header()
916 data = &guehdr[1]; in __gue_build_header()
921 guehdr->flags |= GUE_FLAG_PRIV; in __gue_build_header()