gtp.h (1418B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _GTP_H_ 3#define _GTP_H_ 4 5/* General GTP protocol related definitions. */ 6 7#define GTP0_PORT 3386 8#define GTP1U_PORT 2152 9 10/* GTP messages types */ 11#define GTP_ECHO_REQ 1 /* Echo Request */ 12#define GTP_ECHO_RSP 2 /* Echo Response */ 13#define GTP_TPDU 255 14 15#define GTPIE_RECOVERY 14 16 17struct gtp0_header { /* According to GSM TS 09.60. */ 18 __u8 flags; 19 __u8 type; 20 __be16 length; 21 __be16 seq; 22 __be16 flow; 23 __u8 number; 24 __u8 spare[3]; 25 __be64 tid; 26} __attribute__ ((packed)); 27 28struct gtp1_header { /* According to 3GPP TS 29.060. */ 29 __u8 flags; 30 __u8 type; 31 __be16 length; 32 __be32 tid; 33} __attribute__ ((packed)); 34 35struct gtp1_header_long { /* According to 3GPP TS 29.060. */ 36 __u8 flags; 37 __u8 type; 38 __be16 length; 39 __be32 tid; 40 __be16 seq; 41 __u8 npdu; 42 __u8 next; 43} __packed; 44 45/* GTP Information Element */ 46struct gtp_ie { 47 __u8 tag; 48 __u8 val; 49} __packed; 50 51struct gtp0_packet { 52 struct gtp0_header gtp0_h; 53 struct gtp_ie ie; 54} __packed; 55 56struct gtp1u_packet { 57 struct gtp1_header_long gtp1u_h; 58 struct gtp_ie ie; 59} __packed; 60 61struct gtp_pdu_session_info { /* According to 3GPP TS 38.415. */ 62 u8 pdu_type; 63 u8 qfi; 64}; 65 66static inline bool netif_is_gtp(const struct net_device *dev) 67{ 68 return dev->rtnl_link_ops && 69 !strcmp(dev->rtnl_link_ops->kind, "gtp"); 70} 71 72#define GTP1_F_NPDU 0x01 73#define GTP1_F_SEQ 0x02 74#define GTP1_F_EXTHDR 0x04 75#define GTP1_F_MASK 0x07 76 77#endif