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()
287 static struct guehdr *gue_gro_remcsum(struct sk_buff *skb, unsigned int off, in gue_gro_remcsum()
288 struct guehdr *guehdr, void *data, in gue_gro_remcsum() argument
297 return guehdr; in gue_gro_remcsum()
302 guehdr = skb_gro_remcsum_process(skb, (void *)guehdr, off, hdrlen, in gue_gro_remcsum()
307 return guehdr; in gue_gro_remcsum()
318 struct guehdr *guehdr; in gue_gro_receive() local
330 len = off + sizeof(*guehdr); in gue_gro_receive()
332 guehdr = skb_gro_header_fast(skb, off); in gue_gro_receive()
334 guehdr = skb_gro_header_slow(skb, len, off); in gue_gro_receive()
335 if (unlikely(!guehdr)) in gue_gro_receive()
339 switch (guehdr->version) { in gue_gro_receive()
343 switch (((struct iphdr *)guehdr)->version) { in gue_gro_receive()
358 optlen = guehdr->hlen << 2; in gue_gro_receive()
362 guehdr = skb_gro_header_slow(skb, len, off); in gue_gro_receive()
363 if (unlikely(!guehdr)) in gue_gro_receive()
367 if (unlikely(guehdr->control) || guehdr->version != 0 || in gue_gro_receive()
368 validate_gue_flags(guehdr, optlen)) in gue_gro_receive()
371 hdrlen = sizeof(*guehdr) + optlen; in gue_gro_receive()
376 skb_gro_postpull_rcsum(skb, guehdr, hdrlen); in gue_gro_receive()
378 data = &guehdr[1]; in gue_gro_receive()
380 if (guehdr->flags & GUE_FLAG_PRIV) { in gue_gro_receive()
386 guehdr = gue_gro_remcsum(skb, off, guehdr, in gue_gro_receive()
391 if (!guehdr) in gue_gro_receive()
394 data = &guehdr[1]; in gue_gro_receive()
403 const struct guehdr *guehdr2; in gue_gro_receive()
408 guehdr2 = (struct guehdr *)(p->data + off); in gue_gro_receive()
413 if (guehdr->word != guehdr2->word) { in gue_gro_receive()
419 if (guehdr->hlen && memcmp(&guehdr[1], &guehdr2[1], in gue_gro_receive()
420 guehdr->hlen << 2)) { in gue_gro_receive()
426 proto = guehdr->proto_ctype; in gue_gro_receive()
461 struct guehdr *guehdr = (struct guehdr *)(skb->data + nhoff); in gue_gro_complete() local
467 switch (guehdr->version) { in gue_gro_complete()
469 proto = guehdr->proto_ctype; in gue_gro_complete()
470 guehlen = sizeof(*guehdr) + (guehdr->hlen << 2); in gue_gro_complete()
473 switch (((struct iphdr *)guehdr)->version) { in gue_gro_complete()
958 len = sizeof(struct udphdr) + sizeof(struct guehdr); in gue_encap_hlen()
990 struct guehdr *guehdr; in __gue_build_header() local
1013 hdrlen = sizeof(struct guehdr) + optlen; in __gue_build_header()
1017 guehdr = (struct guehdr *)skb->data; in __gue_build_header()
1019 guehdr->control = 0; in __gue_build_header()
1020 guehdr->version = 0; in __gue_build_header()
1021 guehdr->hlen = optlen >> 2; in __gue_build_header()
1022 guehdr->flags = 0; in __gue_build_header()
1023 guehdr->proto_ctype = *protocol; in __gue_build_header()
1025 data = &guehdr[1]; in __gue_build_header()
1030 guehdr->flags |= GUE_FLAG_PRIV; in __gue_build_header()
1130 struct guehdr *guehdr; in gue_err() local
1134 len = sizeof(struct udphdr) + sizeof(struct guehdr); in gue_err()
1138 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_err()
1140 switch (guehdr->version) { in gue_err()
1147 switch (((struct iphdr *)guehdr)->version) { in gue_err()
1165 if (guehdr->control) in gue_err()
1168 optlen = guehdr->hlen << 2; in gue_err()
1173 guehdr = (struct guehdr *)&udp_hdr(skb)[1]; in gue_err()
1174 if (validate_gue_flags(guehdr, optlen)) in gue_err()
1181 if (guehdr->proto_ctype == IPPROTO_UDP || in gue_err()
1182 guehdr->proto_ctype == IPPROTO_UDPLITE) in gue_err()
1186 ret = gue_err_proto_handler(guehdr->proto_ctype, skb, info); in gue_err()