aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOliver Smith <osmith@sysmocom.de>2024-02-23 14:35:12 +0100
committerOliver Smith <osmith@sysmocom.de>2024-05-13 14:30:10 +0200
commit1f0446d1592d7e060556d6cd8724b6b8525c0a91 (patch)
tree435719a9293f32f5380eaf6f9645c715c54e0914
parent9b4ddd9e5ac3b82b96895ace6a00dd6fba0c93ec (diff)
gtp/gtp_internal.h: new fileosmith/wip
While at it, move internal functions of gtp.h to a separate file too. The following APIs are unexpectedly public: * imsi_gtp2str gets used by pdp.h * gsna2in_addr, gtp_echo_req gets used by osmo-sgsn Change-Id: I72c40cbdec33449ca8104fb3cad8df1a9e07dfd7
-rw-r--r--ggsn/ggsn.c1
-rw-r--r--ggsn/ggsn_vty.c1
-rw-r--r--ggsn/sgsn.c2
-rw-r--r--gtp/Makefile.am1
-rw-r--r--gtp/gsn_internal.h1
-rw-r--r--gtp/gtp.c1
-rw-r--r--gtp/gtp_internal.h52
-rw-r--r--include/osmocom/gtp/gtp.h51
-rw-r--r--sgsnemu/sgsnemu.c1
9 files changed, 60 insertions, 51 deletions
diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c
index 2e9010e..8d1524c 100644
--- a/ggsn/ggsn.c
+++ b/ggsn/ggsn.c
@@ -58,6 +58,7 @@
#include "../lib/icmpv6.h"
#include "pco.h"
#include "ggsn.h"
+#include "../gtp/gtp_internal.h"
static int ggsn_tun_fd_cb(struct osmo_fd *fd, unsigned int what);
static int cb_tun_ind(struct tun_t *tun, void *pack, unsigned len);
diff --git a/ggsn/ggsn_vty.c b/ggsn/ggsn_vty.c
index a661869..f70daf1 100644
--- a/ggsn/ggsn_vty.c
+++ b/ggsn/ggsn_vty.c
@@ -42,6 +42,7 @@
#include "ggsn.h"
#include "sgsn.h"
+#include "../gtp/gtp_internal.h"
#define PREFIX_STR "Prefix (Network/Netmask)\n"
#define IFCONFIG_STR "GGSN-based interface configuration\n"
diff --git a/ggsn/sgsn.c b/ggsn/sgsn.c
index 15548ef..b324fd7 100644
--- a/ggsn/sgsn.c
+++ b/ggsn/sgsn.c
@@ -1,6 +1,6 @@
#include "sgsn.h"
#include "ggsn.h"
-
+#include "../gtp/gtp_internal.h"
static bool sgsn_peer_attempt_free(struct sgsn_peer *sgsn)
{
diff --git a/gtp/Makefile.am b/gtp/Makefile.am
index 11426a4..a140cee 100644
--- a/gtp/Makefile.am
+++ b/gtp/Makefile.am
@@ -18,6 +18,7 @@ libgtp_la_SOURCES = \
gsn.c \
gsn_internal.h \
gtp.c \
+ gtp_internal.h \
gtpie.c \
lookupa.c \
lookupa.h \
diff --git a/gtp/gsn_internal.h b/gtp/gsn_internal.h
index deb60c3..732cb17 100644
--- a/gtp/gsn_internal.h
+++ b/gtp/gsn_internal.h
@@ -1,3 +1,4 @@
#pragma once
+#include <osmocom/core/in46_addr.h>
void gtp_queue_timer_start(struct gsn_t *gsn);
diff --git a/gtp/gtp.c b/gtp/gtp.c
index bdf7e7d..f426e6d 100644
--- a/gtp/gtp.c
+++ b/gtp/gtp.c
@@ -61,6 +61,7 @@
#include "queue.h"
#include "gsn_internal.h"
+#include "gtp_internal.h"
/* Error reporting functions */
diff --git a/gtp/gtp_internal.h b/gtp/gtp_internal.h
new file mode 100644
index 0000000..826ea59
--- /dev/null
+++ b/gtp/gtp_internal.h
@@ -0,0 +1,52 @@
+#pragma once
+
+int gtp_echo_resp(struct gsn_t *gsn, int version,
+ struct sockaddr_in *peer, int fd,
+ void *pack, unsigned len);
+int gtp_echo_ind(struct gsn_t *gsn, int version,
+ struct sockaddr_in *peer, int fd,
+ void *pack, unsigned len);
+int gtp_echo_conf(struct gsn_t *gsn, int version,
+ struct sockaddr_in *peer, void *pack, unsigned len);
+
+int gtp_unsup_req(struct gsn_t *gsn, int version,
+ struct sockaddr_in *peer,
+ int fd, void *pack, unsigned len);
+int gtp_unsup_ind(struct gsn_t *gsn, struct sockaddr_in *peer,
+ void *pack, unsigned len);
+
+int gtp_create_pdp_resp(struct gsn_t *gsn, int version,
+ struct pdp_t *pdp, uint8_t cause);
+
+int gtp_create_pdp_ind(struct gsn_t *gsn, int version,
+ struct sockaddr_in *peer, int fd,
+ void *pack, unsigned len);
+
+int gtp_create_pdp_conf(struct gsn_t *gsn, int version,
+ struct sockaddr_in *peer,
+ void *pack, unsigned len);
+
+int gtp_update_pdp_req(struct gsn_t *gsn, int version, void *cbp,
+ struct in_addr *inetaddr, struct pdp_t *pdp);
+
+int gtp_delete_pdp_req(struct gsn_t *gsn, int version, void *cbp,
+ struct pdp_t *pdp);
+
+int gtp_delete_pdp_resp(struct gsn_t *gsn, int version,
+ struct sockaddr_in *peer, int fd,
+ void *pack, unsigned len,
+ struct pdp_t *pdp, struct pdp_t *linked_pdp,
+ uint8_t cause, int teardown);
+
+int gtp_delete_pdp_ind(struct gsn_t *gsn, int version,
+ struct sockaddr_in *peer, int fd,
+ void *pack, unsigned len);
+
+int gtp_delete_pdp_conf(struct gsn_t *gsn, int version,
+ struct sockaddr_in *peer,
+ void *pack, unsigned len);
+
+int ipv42eua(struct ul66_t *eua, struct in_addr *src);
+int eua2ipv4(struct in_addr *dst, struct ul66_t *eua);
+int in_addr2gsna(struct ul16_t *gsna, struct in_addr *src);
+uint64_t gtp_imsi_str2gtp(const char *str);
diff --git a/include/osmocom/gtp/gtp.h b/include/osmocom/gtp/gtp.h
index 7465cf1..e3c66c9 100644
--- a/include/osmocom/gtp/gtp.h
+++ b/include/osmocom/gtp/gtp.h
@@ -265,61 +265,12 @@ extern int gtp_ran_info_relay_req(struct gsn_t *gsn, const struct sockaddr_in *p
extern int gtp_decaps0(struct gsn_t *gsn);
extern int gtp_decaps1c(struct gsn_t *gsn);
extern int gtp_decaps1u(struct gsn_t *gsn);
-/* Internal functions (not part of the API) */
extern int gtp_echo_req(struct gsn_t *gsn, int version, void *cbp,
struct in_addr *inetaddrs);
-extern int gtp_echo_resp(struct gsn_t *gsn, int version,
- struct sockaddr_in *peer, int fd,
- void *pack, unsigned len);
-extern int gtp_echo_ind(struct gsn_t *gsn, int version,
- struct sockaddr_in *peer, int fd,
- void *pack, unsigned len);
-extern int gtp_echo_conf(struct gsn_t *gsn, int version,
- struct sockaddr_in *peer, void *pack, unsigned len);
-
-extern int gtp_unsup_req(struct gsn_t *gsn, int version,
- struct sockaddr_in *peer,
- int fd, void *pack, unsigned len);
-extern int gtp_unsup_ind(struct gsn_t *gsn, struct sockaddr_in *peer,
- void *pack, unsigned len);
-
-extern int gtp_create_pdp_resp(struct gsn_t *gsn, int version,
- struct pdp_t *pdp, uint8_t cause);
-
-extern int gtp_create_pdp_ind(struct gsn_t *gsn, int version,
- struct sockaddr_in *peer, int fd,
- void *pack, unsigned len);
-
-extern int gtp_create_pdp_conf(struct gsn_t *gsn, int version,
- struct sockaddr_in *peer,
- void *pack, unsigned len);
-
-extern int gtp_update_pdp_req(struct gsn_t *gsn, int version, void *cbp,
- struct in_addr *inetaddr, struct pdp_t *pdp);
-extern int gtp_delete_pdp_req(struct gsn_t *gsn, int version, void *cbp,
- struct pdp_t *pdp);
-
-extern int gtp_delete_pdp_resp(struct gsn_t *gsn, int version,
- struct sockaddr_in *peer, int fd,
- void *pack, unsigned len,
- struct pdp_t *pdp, struct pdp_t *linked_pdp,
- uint8_t cause, int teardown);
-
-extern int gtp_delete_pdp_ind(struct gsn_t *gsn, int version,
- struct sockaddr_in *peer, int fd,
- void *pack, unsigned len);
-
-extern int gtp_delete_pdp_conf(struct gsn_t *gsn, int version,
- struct sockaddr_in *peer,
- void *pack, unsigned len);
-
-extern int ipv42eua(struct ul66_t *eua, struct in_addr *src);
-extern int eua2ipv4(struct in_addr *dst, struct ul66_t *eua);
extern int gsna2in_addr(struct in_addr *dst, struct ul16_t *gsna);
-extern int in_addr2gsna(struct ul16_t *gsna, struct in_addr *src);
+
extern const char *imsi_gtp2str(const uint64_t *imsi);
-extern uint64_t gtp_imsi_str2gtp(const char *str);
#endif /* !_GTP_H */
diff --git a/sgsnemu/sgsnemu.c b/sgsnemu/sgsnemu.c
index de7af4a..152b05b 100644
--- a/sgsnemu/sgsnemu.c
+++ b/sgsnemu/sgsnemu.c
@@ -62,6 +62,7 @@
#include "../lib/syserr.h"
#include "../lib/netns.h"
#include "../lib/icmpv6.h"
+#include "../gtp/gtp_internal.h"
#include "cmdline.h"
#define IPADDRLEN 256 /* Character length of addresses */