forked from Minki/linux
459aa660eb
This is an initial implementation of a netdev driver for GTP datapath (GTP-U) v0 and v1, according to the GSM TS 09.60 and 3GPP TS 29.060 standards. This tunneling protocol is used to prevent subscribers from accessing mobile carrier core network infrastructure. This implementation requires a GGSN userspace daemon that implements the signaling protocol (GTP-C), such as OpenGGSN [1]. This userspace daemon updates the PDP context database that represents active subscriber sessions through a genetlink interface. For more context on this tunneling protocol, you can check the slides that were presented during the NetDev 1.1 [2]. Only IPv4 is supported at this time. [1] http://git.osmocom.org/openggsn/ [2] http://www.netdevconf.org/1.1/proceedings/slides/schultz-welte-osmocom-gtp.pdf Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: David S. Miller <davem@davemloft.net>
35 lines
593 B
C
35 lines
593 B
C
#ifndef _GTP_H_
|
|
#define _GTP_H
|
|
|
|
/* General GTP protocol related definitions. */
|
|
|
|
#define GTP0_PORT 3386
|
|
#define GTP1U_PORT 2152
|
|
|
|
#define GTP_TPDU 255
|
|
|
|
struct gtp0_header { /* According to GSM TS 09.60. */
|
|
__u8 flags;
|
|
__u8 type;
|
|
__be16 length;
|
|
__be16 seq;
|
|
__be16 flow;
|
|
__u8 number;
|
|
__u8 spare[3];
|
|
__be64 tid;
|
|
} __attribute__ ((packed));
|
|
|
|
struct gtp1_header { /* According to 3GPP TS 29.060. */
|
|
__u8 flags;
|
|
__u8 type;
|
|
__be16 length;
|
|
__be32 tid;
|
|
} __attribute__ ((packed));
|
|
|
|
#define GTP1_F_NPDU 0x01
|
|
#define GTP1_F_SEQ 0x02
|
|
#define GTP1_F_EXTHDR 0x04
|
|
#define GTP1_F_MASK 0x07
|
|
|
|
#endif
|