Lines Matching refs:gtp0

391 static bool gtp0_validate_echo_hdr(struct gtp0_header *gtp0)  in gtp0_validate_echo_hdr()  argument
393 return !(gtp0->tid || (gtp0->flags ^ 0x1e) || in gtp0_validate_echo_hdr()
394 gtp0->number != 0xff || gtp0->flow); in gtp0_validate_echo_hdr()
455 struct gtp0_header *gtp0; in gtp0_send_echo_resp() local
458 gtp0 = (struct gtp0_header *)(skb->data + sizeof(struct udphdr)); in gtp0_send_echo_resp()
460 if (!gtp0_validate_echo_hdr(gtp0)) in gtp0_send_echo_resp()
463 seq = gtp0->seq; in gtp0_send_echo_resp()
528 struct gtp0_header *gtp0; in gtp0_handle_echo_resp() local
533 gtp0 = (struct gtp0_header *)(skb->data + sizeof(struct udphdr)); in gtp0_handle_echo_resp()
535 if (!gtp0_validate_echo_hdr(gtp0)) in gtp0_handle_echo_resp()
580 struct gtp0_header *gtp0; in gtp0_udp_encap_recv() local
587 gtp0 = (struct gtp0_header *)(skb->data + sizeof(struct udphdr)); in gtp0_udp_encap_recv()
589 if ((gtp0->flags >> 5) != GTP_V0) in gtp0_udp_encap_recv()
596 if (gtp0->type == GTP_ECHO_REQ && gtp->sk_created) in gtp0_udp_encap_recv()
599 if (gtp0->type == GTP_ECHO_RSP && gtp->sk_created) in gtp0_udp_encap_recv()
602 if (gtp0->type != GTP_TPDU) in gtp0_udp_encap_recv()
610 pctx = gtp0_pdp_find(gtp, be64_to_cpu(gtp0->tid), in gtp0_udp_encap_recv()
947 struct gtp0_header *gtp0; in gtp0_push_header() local
949 gtp0 = skb_push(skb, sizeof(*gtp0)); in gtp0_push_header()
951 gtp0->flags = 0x1e; /* v0, GTP-non-prime. */ in gtp0_push_header()
952 gtp0->type = GTP_TPDU; in gtp0_push_header()
953 gtp0->length = htons(payload_len); in gtp0_push_header()
954 gtp0->seq = htons((atomic_inc_return(&pctx->tx_seq) - 1) % 0xffff); in gtp0_push_header()
955 gtp0->flow = htons(pctx->u.v0.flow); in gtp0_push_header()
956 gtp0->number = 0xff; in gtp0_push_header()
957 gtp0->spare[0] = gtp0->spare[1] = gtp0->spare[2] = 0xff; in gtp0_push_header()
958 gtp0->tid = cpu_to_be64(pctx->u.v0.tid); in gtp0_push_header()