8
0
Fork 0

libgtp: Remove ctrl_handle from gsn_t, replace with private context

The control interface handle never belonged into libgtp in the first
place.  Commit 727417dd28 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
master
Harald Welte 5 years ago
parent 9e6dfa0558
commit 8a03ea8a32
  1. 6
      ggsn/ggsn.c
  2. 4
      gtp/gtp.h

@ -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);
}

@ -12,8 +12,6 @@
#ifndef _GTP_H
#define _GTP_H
#include <osmocom/ctrl/control_if.h>
#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 */