blob: 1433621c551be28ce52c839da5cfe390ef64259e [file] [log] [blame]
Pablo Neira Ayuso14506662014-02-20 18:43:15 +01001#ifndef INTERNAL_H
2#define INTERNAL_H 1
3
4#include "config.h"
5#ifdef HAVE_VISIBILITY_HIDDEN
6# define __visible __attribute__((visibility("default")))
7# define EXPORT_SYMBOL(x) typeof(x) (x) __visible
8#else
9# define EXPORT_SYMBOL
10#endif
11
Pablo Neira Ayuso18532952014-02-22 22:09:59 +010012#include <stdint.h>
13#include <netinet/in.h>
14
Oliver Smith717db092023-10-18 15:16:12 +020015struct gtp_addr {
16 sa_family_t family;
17 union {
18 struct in_addr ip4;
19 struct in6_addr ip6;
20 };
21};
22
Pablo Neira Ayuso6f1c38f2024-01-31 13:40:35 +010023enum {
24 GTP_TUN_IFNS = (1 << 0),
25 GTP_TUN_IFIDX = (1 << 1),
26 GTP_TUN_FAMILY = (1 << 2),
27 GTP_TUN_MS_ADDR = (1 << 3),
28 GTP_TUN_SGSN_ADDR = (1 << 4),
29 GTP_TUN_VERSION = (1 << 5),
30 GTP_TUN_V0_TID = (1 << 6),
31 GTP_TUN_V0_FLOWID = (1 << 7),
32 GTP_TUN_V1_I_TEI = (1 << 8),
33 GTP_TUN_V1_O_TEI = (1 << 9),
34};
35
Pablo Neira Ayuso18532952014-02-22 22:09:59 +010036struct gtp_tunnel {
Andreas Schultz49773302016-04-11 16:09:56 +020037 int ifns;
Pablo Neira Ayuso18532952014-02-22 22:09:59 +010038 uint32_t ifidx;
Oliver Smith717db092023-10-18 15:16:12 +020039 struct gtp_addr ms_addr;
40 struct gtp_addr sgsn_addr;
Pablo Neira Ayuso18532952014-02-22 22:09:59 +010041 int gtp_version;
Andreas Schultz17c816f2016-04-11 16:10:03 +020042 union {
43 struct {
44 uint64_t tid;
45 uint16_t flowid;
46 } v0;
47 struct {
48 uint32_t i_tei;
49 uint32_t o_tei;
50 } v1;
51 } u;
Pablo Neira Ayuso6f1c38f2024-01-31 13:40:35 +010052 uint32_t flags;
Pablo Neira Ayuso18532952014-02-22 22:09:59 +010053};
54
Pablo Neira Ayuso14506662014-02-20 18:43:15 +010055#endif