From 8a03ea8a326bb60cae3400076660ee08911bb9b1 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 12 Aug 2017 14:52:45 +0200 Subject: [PATCH] libgtp: Remove ctrl_handle from gsn_t, replace with private context The control interface handle never belonged into libgtp in the first place. Commit 727417dd28813c697b4820aef9f54f249e30c4b8 should not have added this to the shared library (used by sgsnemu, osmo-sgsn, ...), but to some private state of the GGSN. Introducing a private context pointer at the same location will keep ABI compatibilty. Change-Id: I4f17516dae3e04114564828a3e5f6e2ea54212a5 --- ggsn/ggsn.c | 6 +++--- gtp/gtp.h | 4 +--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c index 7614b92..d865707 100644 --- a/ggsn/ggsn.c +++ b/ggsn/ggsn.c @@ -148,7 +148,7 @@ static bool send_trap(const struct gsn_t *gsn, const struct pdp_t *pdp, const st snprintf(val, sizeof(val), "%s,%s", imsi_gtp2str(&pdp->imsi), addrstr); - if (ctrl_cmd_send_trap(gsn->ctrl, var, val) < 0) { + if (ctrl_cmd_send_trap(gsn->priv, var, val) < 0) { LOGP(DGGSN, LOGL_ERROR, "Failed to create and send TRAP for IMSI %" PRIu64 " [%s].\n", pdp->imsi, var); return false; } @@ -722,8 +722,8 @@ int main(int argc, char **argv) gtp_set_cb_delete_context(gsn, delete_context); gtp_set_cb_create_context_ind(gsn, create_context_ind); - gsn->ctrl = ctrl_interface_setup(NULL, OSMO_CTRL_PORT_GGSN, NULL); - if (!gsn->ctrl) { + gsn->priv = ctrl_interface_setup(NULL, OSMO_CTRL_PORT_GGSN, NULL); + if (!gsn->priv) { LOGP(DGGSN, LOGL_ERROR, "Failed to create CTRL interface.\n"); exit(1); } diff --git a/gtp/gtp.h b/gtp/gtp.h index 8f13ed2..7fa9ae7 100644 --- a/gtp/gtp.h +++ b/gtp/gtp.h @@ -12,8 +12,6 @@ #ifndef _GTP_H #define _GTP_H -#include - #define GTP_MODE_GGSN 1 #define GTP_MODE_SGSN 2 @@ -247,7 +245,7 @@ struct gsn_t { unsigned char restart_counter; /* Increment on restart. Stored on disk */ char *statedir; /* Disk location for permanent storage */ - struct ctrl_handle *ctrl; /* Control Interface */ + void *priv; /* used by libgtp users to attach their own state) */ struct queue_t *queue_req; /* Request queue */ struct queue_t *queue_resp; /* Response queue */