Lines Matching defs:guehdr
88 static struct guehdr *gue_remcsum(struct sk_buff *skb, struct guehdr *guehdr,
99 return guehdr;
103 guehdr = (struct guehdr *)&udp_hdr(skb)[1];
105 skb_remcsum_process(skb, (void *)guehdr + hdrlen,
108 return guehdr;
111 static int gue_control_message(struct sk_buff *skb, struct guehdr *guehdr)
122 struct guehdr *guehdr;
130 len = sizeof(struct udphdr) + sizeof(struct guehdr);
134 guehdr = (struct guehdr *)&udp_hdr(skb)[1];
136 switch (guehdr->version) {
145 switch (((struct iphdr *)guehdr)->version) {
166 optlen = guehdr->hlen << 2;
172 /* guehdr may change after pull */
173 guehdr = (struct guehdr *)&udp_hdr(skb)[1];
175 if (validate_gue_flags(guehdr, optlen))
178 hdrlen = sizeof(struct guehdr) + optlen;
186 /* Pull csum through the guehdr now . This can be used if
191 data = &guehdr[1];
193 if (guehdr->flags & GUE_FLAG_PRIV) {
199 guehdr = gue_remcsum(skb, guehdr, data + doffset,
200 hdrlen, guehdr->proto_ctype,
203 if (!guehdr)
206 data = &guehdr[1];
212 if (unlikely(guehdr->control))
213 return gue_control_message(skb, guehdr);
215 proto_ctype = guehdr->proto_ctype;
287 static struct guehdr *gue_gro_remcsum(struct sk_buff *skb, unsigned int off,
288 struct guehdr *guehdr, void *data,
297 return guehdr;
302 guehdr = skb_gro_remcsum_process(skb, (void *)guehdr, off, hdrlen,
307 return guehdr;
318 struct guehdr *guehdr;
330 len = off + sizeof(*guehdr);
332 guehdr = skb_gro_header_fast(skb, off);
334 guehdr = skb_gro_header_slow(skb, len, off);
335 if (unlikely(!guehdr))
339 switch (guehdr->version) {
343 switch (((struct iphdr *)guehdr)->version) {
358 optlen = guehdr->hlen << 2;
362 guehdr = skb_gro_header_slow(skb, len, off);
363 if (unlikely(!guehdr))
367 if (unlikely(guehdr->control) || guehdr->version != 0 ||
368 validate_gue_flags(guehdr, optlen))
371 hdrlen = sizeof(*guehdr) + optlen;
373 /* Adjust NAPI_GRO_CB(skb)->csum to account for guehdr,
376 skb_gro_postpull_rcsum(skb, guehdr, hdrlen);
378 data = &guehdr[1];
380 if (guehdr->flags & GUE_FLAG_PRIV) {
386 guehdr = gue_gro_remcsum(skb, off, guehdr,
391 if (!guehdr)
394 data = &guehdr[1];
403 const struct guehdr *guehdr2;
408 guehdr2 = (struct guehdr *)(p->data + off);
413 if (guehdr->word != guehdr2->word) {
419 if (guehdr->hlen && memcmp(&guehdr[1], &guehdr2[1],
420 guehdr->hlen << 2)) {
426 proto = guehdr->proto_ctype;
461 struct guehdr *guehdr = (struct guehdr *)(skb->data + nhoff);
467 switch (guehdr->version) {
469 proto = guehdr->proto_ctype;
470 guehlen = sizeof(*guehdr) + (guehdr->hlen << 2);
473 switch (((struct iphdr *)guehdr)->version) {
958 len = sizeof(struct udphdr) + sizeof(struct guehdr);
990 struct guehdr *guehdr;
1013 hdrlen = sizeof(struct guehdr) + optlen;
1017 guehdr = (struct guehdr *)skb->data;
1019 guehdr->control = 0;
1020 guehdr->version = 0;
1021 guehdr->hlen = optlen >> 2;
1022 guehdr->flags = 0;
1023 guehdr->proto_ctype = *protocol;
1025 data = &guehdr[1];
1030 guehdr->flags |= GUE_FLAG_PRIV;
1130 struct guehdr *guehdr;
1134 len = sizeof(struct udphdr) + sizeof(struct guehdr);
1138 guehdr = (struct guehdr *)&udp_hdr(skb)[1];
1140 switch (guehdr->version) {
1147 switch (((struct iphdr *)guehdr)->version) {
1165 if (guehdr->control)
1168 optlen = guehdr->hlen << 2;
1173 guehdr = (struct guehdr *)&udp_hdr(skb)[1];
1174 if (validate_gue_flags(guehdr, optlen))
1181 if (guehdr->proto_ctype == IPPROTO_UDP ||
1182 guehdr->proto_ctype == IPPROTO_UDPLITE)
1186 ret = gue_err_proto_handler(guehdr->proto_ctype, skb, info);