Lines Matching refs:guehdr
88 static struct guehdr *gue_remcsum(struct sk_buff *skb, struct guehdr *guehdr, in gue_remcsum() argument
99 return guehdr; in gue_remcsum()
103 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_remcsum()
105 skb_remcsum_process(skb, (void *)guehdr + hdrlen, in gue_remcsum()
108 return guehdr; in gue_remcsum()
111 static int gue_control_message(struct sk_buff *skb, struct guehdr *guehdr) in gue_control_message() argument
122 struct guehdr *guehdr; in gue_udp_recv() local
130 len = sizeof(struct udphdr) + sizeof(struct guehdr); in gue_udp_recv()
134 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_udp_recv()
136 switch (guehdr->version) { in gue_udp_recv()
145 switch (((struct iphdr *)guehdr)->version) { in gue_udp_recv()
166 optlen = guehdr->hlen << 2; in gue_udp_recv()
173 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_udp_recv()
175 if (validate_gue_flags(guehdr, optlen)) in gue_udp_recv()
178 hdrlen = sizeof(struct guehdr) + optlen; in gue_udp_recv()
191 data = &guehdr[1]; in gue_udp_recv()
193 if (guehdr->flags & GUE_FLAG_PRIV) { in gue_udp_recv()
199 guehdr = gue_remcsum(skb, guehdr, data + doffset, in gue_udp_recv()
200 hdrlen, guehdr->proto_ctype, in gue_udp_recv()
203 if (!guehdr) in gue_udp_recv()
206 data = &guehdr[1]; in gue_udp_recv()
212 if (unlikely(guehdr->control)) in gue_udp_recv()
213 return gue_control_message(skb, guehdr); in gue_udp_recv()
215 proto_ctype = guehdr->proto_ctype; in gue_udp_recv()
281 static struct guehdr *gue_gro_remcsum(struct sk_buff *skb, unsigned int off, in gue_gro_remcsum()
282 struct guehdr *guehdr, void *data, in gue_gro_remcsum() argument
291 return guehdr; in gue_gro_remcsum()
296 guehdr = skb_gro_remcsum_process(skb, (void *)guehdr, off, hdrlen, in gue_gro_remcsum()
301 return guehdr; in gue_gro_remcsum()
312 struct guehdr *guehdr; in gue_gro_receive() local
324 len = off + sizeof(*guehdr); in gue_gro_receive()
326 guehdr = skb_gro_header(skb, len, off); in gue_gro_receive()
327 if (unlikely(!guehdr)) in gue_gro_receive()
330 switch (guehdr->version) { in gue_gro_receive()
334 switch (((struct iphdr *)guehdr)->version) { in gue_gro_receive()
349 optlen = guehdr->hlen << 2; in gue_gro_receive()
353 guehdr = skb_gro_header_slow(skb, len, off); in gue_gro_receive()
354 if (unlikely(!guehdr)) in gue_gro_receive()
358 if (unlikely(guehdr->control) || guehdr->version != 0 || in gue_gro_receive()
359 validate_gue_flags(guehdr, optlen)) in gue_gro_receive()
362 hdrlen = sizeof(*guehdr) + optlen; in gue_gro_receive()
367 skb_gro_postpull_rcsum(skb, guehdr, hdrlen); in gue_gro_receive()
369 data = &guehdr[1]; in gue_gro_receive()
371 if (guehdr->flags & GUE_FLAG_PRIV) { in gue_gro_receive()
377 guehdr = gue_gro_remcsum(skb, off, guehdr, in gue_gro_receive()
382 if (!guehdr) in gue_gro_receive()
385 data = &guehdr[1]; in gue_gro_receive()
394 const struct guehdr *guehdr2; in gue_gro_receive()
399 guehdr2 = (struct guehdr *)(p->data + off); in gue_gro_receive()
404 if (guehdr->word != guehdr2->word) { in gue_gro_receive()
410 if (guehdr->hlen && memcmp(&guehdr[1], &guehdr2[1], in gue_gro_receive()
411 guehdr->hlen << 2)) { in gue_gro_receive()
417 proto = guehdr->proto_ctype; in gue_gro_receive()
448 struct guehdr *guehdr = (struct guehdr *)(skb->data + nhoff); in gue_gro_complete() local
455 switch (guehdr->version) { in gue_gro_complete()
457 proto = guehdr->proto_ctype; in gue_gro_complete()
458 guehlen = sizeof(*guehdr) + (guehdr->hlen << 2); in gue_gro_complete()
461 switch (((struct iphdr *)guehdr)->version) { in gue_gro_complete()
945 len = sizeof(struct udphdr) + sizeof(struct guehdr); in gue_encap_hlen()
977 struct guehdr *guehdr; in __gue_build_header() local
1000 hdrlen = sizeof(struct guehdr) + optlen; in __gue_build_header()
1004 guehdr = (struct guehdr *)skb->data; in __gue_build_header()
1006 guehdr->control = 0; in __gue_build_header()
1007 guehdr->version = 0; in __gue_build_header()
1008 guehdr->hlen = optlen >> 2; in __gue_build_header()
1009 guehdr->flags = 0; in __gue_build_header()
1010 guehdr->proto_ctype = *protocol; in __gue_build_header()
1012 data = &guehdr[1]; in __gue_build_header()
1017 guehdr->flags |= GUE_FLAG_PRIV; in __gue_build_header()
1117 struct guehdr *guehdr; in gue_err() local
1121 len = sizeof(struct udphdr) + sizeof(struct guehdr); in gue_err()
1125 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_err()
1127 switch (guehdr->version) { in gue_err()
1134 switch (((struct iphdr *)guehdr)->version) { in gue_err()
1152 if (guehdr->control) in gue_err()
1155 optlen = guehdr->hlen << 2; in gue_err()
1160 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_err()
1161 if (validate_gue_flags(guehdr, optlen)) in gue_err()
1168 if (guehdr->proto_ctype == IPPROTO_UDP || in gue_err()
1169 guehdr->proto_ctype == IPPROTO_UDPLITE) in gue_err()
1173 ret = gue_err_proto_handler(guehdr->proto_ctype, skb, info); in gue_err()