diff options
author | Oliver Smith <osmith@sysmocom.de> | 2024-02-23 14:35:12 +0100 |
---|---|---|
committer | Oliver Smith <osmith@sysmocom.de> | 2024-05-13 14:30:10 +0200 |
commit | 1f0446d1592d7e060556d6cd8724b6b8525c0a91 (patch) | |
tree | 435719a9293f32f5380eaf6f9645c715c54e0914 | |
parent | 9b4ddd9e5ac3b82b96895ace6a00dd6fba0c93ec (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.c | 1 | ||||
-rw-r--r-- | ggsn/ggsn_vty.c | 1 | ||||
-rw-r--r-- | ggsn/sgsn.c | 2 | ||||
-rw-r--r-- | gtp/Makefile.am | 1 | ||||
-rw-r--r-- | gtp/gsn_internal.h | 1 | ||||
-rw-r--r-- | gtp/gtp.c | 1 | ||||
-rw-r--r-- | gtp/gtp_internal.h | 52 | ||||
-rw-r--r-- | include/osmocom/gtp/gtp.h | 51 | ||||
-rw-r--r-- | sgsnemu/sgsnemu.c | 1 |
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); @@ -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 */ |