aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-08-12 14:55:09 +0200
committerHarald Welte <laforge@gnumonks.org>2017-08-12 22:53:59 +0200
commit25ebd9678114b0e1024d67e4934b4ab7b98f531f (patch)
tree782b4ae0e093eaac61f561ae0a854824d3177e71
parentbcefbf3979a21d386990a396bf93721c5411620b (diff)
libgtp: Add back-reference to gsn from pdp context
This is required once one wants to support multiple GSNs in a single application. WARNING: This breaks ABI compatibility, LIBVERSION must be adjusted Change-Id: I68ae49a765828fa681054c68bf7f5e74dbe48ad2
-rw-r--r--gtp/gtp.c8
-rw-r--r--gtp/pdp.h4
2 files changed, 11 insertions, 1 deletions
diff --git a/gtp/gtp.c b/gtp/gtp.c
index a4e8e2b..3bc6521 100644
--- a/gtp/gtp.c
+++ b/gtp/gtp.c
@@ -90,7 +90,11 @@ const char *gtp_version()
int gtp_newpdp(struct gsn_t *gsn, struct pdp_t **pdp,
uint64_t imsi, uint8_t nsapi)
{
- return pdp_newpdp(pdp, imsi, nsapi, NULL);
+ int rc;
+ rc = pdp_newpdp(pdp, imsi, nsapi, NULL);
+ if (!rc && *pdp)
+ (*pdp)->gsn = gsn;
+ return rc;
}
int gtp_freepdp(struct gsn_t *gsn, struct pdp_t *pdp)
@@ -1571,6 +1575,8 @@ int gtp_create_pdp_ind(struct gsn_t *gsn, int version,
}
pdp_newpdp(&pdp, pdp->imsi, pdp->nsapi, pdp);
+ if (pdp)
+ pdp->gsn = gsn;
/* Callback function to validata login */
if (gsn->cb_create_context_ind != 0)
diff --git a/gtp/pdp.h b/gtp/pdp.h
index 217b1d6..7191ffd 100644
--- a/gtp/pdp.h
+++ b/gtp/pdp.h
@@ -12,6 +12,8 @@
#ifndef _PDP_H
#define _PDP_H
+struct gsn_t;
+
#define PDP_MAX 1024 /* Max number of PDP contexts */
#define PDP_MAXNSAPI 16 /* Max number of NSAPI */
@@ -221,6 +223,8 @@ struct pdp_t {
/* to be used by libgtp callers/users (to attach their own private state) */
void *priv;
+
+ struct gsn_t *gsn;
};
/* functions related to pdp_t management */