Lines Matching refs:gtp0
263 static bool gtp0_validate_echo_hdr(struct gtp0_header *gtp0)
265 return !(gtp0->tid || (gtp0->flags ^ 0x1e) ||
266 gtp0->number != 0xff || gtp0->flow);
298 struct gtp0_header *gtp0;
304 gtp0 = (struct gtp0_header *)(skb->data + sizeof(struct udphdr));
306 if (!gtp0_validate_echo_hdr(gtp0))
309 seq = gtp0->seq;
377 struct gtp0_header *gtp0;
383 gtp0 = (struct gtp0_header *)(skb->data + sizeof(struct udphdr));
385 if (!gtp0_validate_echo_hdr(gtp0))
412 struct gtp0_header *gtp0;
418 gtp0 = (struct gtp0_header *)(skb->data + sizeof(struct udphdr));
420 if ((gtp0->flags >> 5) != GTP_V0)
427 if (gtp0->type == GTP_ECHO_REQ && gtp->sk_created)
430 if (gtp0->type == GTP_ECHO_RSP && gtp->sk_created)
433 if (gtp0->type != GTP_TPDU)
436 pctx = gtp0_pdp_find(gtp, be64_to_cpu(gtp0->tid));
738 struct gtp0_header *gtp0;
740 gtp0 = skb_push(skb, sizeof(*gtp0));
742 gtp0->flags = 0x1e; /* v0, GTP-non-prime. */
743 gtp0->type = GTP_TPDU;
744 gtp0->length = htons(payload_len);
745 gtp0->seq = htons((atomic_inc_return(&pctx->tx_seq) - 1) % 0xffff);
746 gtp0->flow = htons(pctx->u.v0.flow);
747 gtp0->number = 0xff;
748 gtp0->spare[0] = gtp0->spare[1] = gtp0->spare[2] = 0xff;
749 gtp0->tid = cpu_to_be64(pctx->u.v0.tid);