diff options
author | Daniel Willmann <dwillmann@sysmocom.de> | 2016-02-03 15:20:28 +0100 |
---|---|---|
committer | Neels Hofmeyr <nhofmeyr@sysmocom.de> | 2016-03-03 16:19:10 +0100 |
commit | 91f04dfe3a6cc685ae2dc16f7b47aa22c1e56ae2 (patch) | |
tree | d0223722f6d5462f024bde3b14a854be91fc2e82 /openbsc/src/gprs/gprs_sgsn.c | |
parent | 4371ff8cce45071e9b0fa684938677d696f4c207 (diff) |
sgsn: Add a function to return the pdp ctx for an mm ctx and tei
Diffstat (limited to 'openbsc/src/gprs/gprs_sgsn.c')
-rw-r--r-- | openbsc/src/gprs/gprs_sgsn.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c index 80de246c2..1a77daa9d 100644 --- a/openbsc/src/gprs/gprs_sgsn.c +++ b/openbsc/src/gprs/gprs_sgsn.c @@ -40,6 +40,8 @@ #include <openbsc/signal.h> #include "openbsc/gprs_llc.h" +#include <pdp.h> + #include <time.h> #include <openssl/rand.h> @@ -309,6 +311,19 @@ struct sgsn_pdp_ctx *sgsn_pdp_ctx_by_tid(const struct sgsn_mm_ctx *mm, return NULL; } +/* look up PDP context by MM context and gtp TEI */ +struct sgsn_pdp_ctx *sgsn_pdp_ctx_by_tei(const struct sgsn_mm_ctx *mm, + uint32_t tei) +{ + struct sgsn_pdp_ctx *pdp; + + llist_for_each_entry(pdp, &mm->pdp_list, list) { + if (pdp->lib->teid_own == tei) + return pdp; + } + return NULL; +} + /* you don't want to use this directly, call sgsn_create_pdp_ctx() */ struct sgsn_pdp_ctx *sgsn_pdp_ctx_alloc(struct sgsn_mm_ctx *mm, uint8_t nsapi) @@ -332,7 +347,6 @@ struct sgsn_pdp_ctx *sgsn_pdp_ctx_alloc(struct sgsn_mm_ctx *mm, return pdp; } -#include <pdp.h> /* * This function will not trigger any GSM DEACT PDP ACK messages, so you * probably want to call sgsn_delete_pdp_ctx() instead if the connection |