Move global pdp_list inside struct sgsn_instance
This way pdp contexts are managed by the lifcycle of the main global struct sgsn_instance automatically. Change-Id: I725218fd54adcc68dceded5eb43675f25771bb96changes/92/30892/2
parent
05190c36bb
commit
15a52d92c4
|
@ -90,7 +90,5 @@ struct sgsn_pdp_ctx *sgsn_pdp_ctx_alloc(struct sgsn_mm_ctx *mm,
|
|||
void sgsn_pdp_ctx_terminate(struct sgsn_pdp_ctx *pdp);
|
||||
void sgsn_pdp_ctx_free(struct sgsn_pdp_ctx *pdp);
|
||||
|
||||
extern struct llist_head sgsn_pdp_ctxts;
|
||||
|
||||
char *gprs_pdpaddr2str(uint8_t *pdpa, uint8_t len, bool return_ipv6);
|
||||
|
||||
|
|
|
@ -154,6 +154,7 @@ struct sgsn_instance {
|
|||
struct llist_head apn_list; /* list of struct sgsn_apn_ctx */
|
||||
struct llist_head ggsn_list; /* list of struct sgsn_ggsn_ctx */
|
||||
struct llist_head mme_list; /* list of struct sgsn_mme_ctx */
|
||||
struct llist_head pdp_list; /* list of struct sgsn_pdp_ctx */
|
||||
|
||||
struct ctrl_handle *ctrlh;
|
||||
};
|
||||
|
|
|
@ -704,6 +704,7 @@ struct sgsn_instance *sgsn_instance_alloc(void *talloc_ctx)
|
|||
INIT_LLIST_HEAD(&inst->apn_list);
|
||||
INIT_LLIST_HEAD(&inst->ggsn_list);
|
||||
INIT_LLIST_HEAD(&inst->mme_list);
|
||||
INIT_LLIST_HEAD(&inst->pdp_list);
|
||||
|
||||
osmo_timer_setup(&inst->llme_timer, sgsn_llme_check_cb, NULL);
|
||||
osmo_timer_schedule(&inst->llme_timer, GPRS_LLME_CHECK_TICK, 0);
|
||||
|
|
|
@ -39,8 +39,6 @@
|
|||
#include <osmocom/sgsn/gprs_sm.h>
|
||||
#include <osmocom/sgsn/gtp.h>
|
||||
|
||||
LLIST_HEAD(sgsn_pdp_ctxts);
|
||||
|
||||
static const struct rate_ctr_desc pdpctx_ctr_description[] = {
|
||||
{ "udata:packets:in", "User Data Messages ( In)" },
|
||||
{ "udata:packets:out", "User Data Messages (Out)" },
|
||||
|
@ -67,7 +65,7 @@ struct sgsn_pdp_ctx *sgsn_pdp_ctx_alloc(struct sgsn_mm_ctx *mm,
|
|||
if (pdp)
|
||||
return NULL;
|
||||
|
||||
pdp = talloc_zero(tall_sgsn_ctx, struct sgsn_pdp_ctx);
|
||||
pdp = talloc_zero(sgsn, struct sgsn_pdp_ctx);
|
||||
if (!pdp)
|
||||
return NULL;
|
||||
|
||||
|
@ -82,7 +80,7 @@ struct sgsn_pdp_ctx *sgsn_pdp_ctx_alloc(struct sgsn_mm_ctx *mm,
|
|||
}
|
||||
llist_add(&pdp->list, &mm->pdp_list);
|
||||
sgsn_ggsn_ctx_add_pdp(pdp->ggsn, pdp);
|
||||
llist_add(&pdp->g_list, &sgsn_pdp_ctxts);
|
||||
llist_add(&pdp->g_list, &sgsn->pdp_list);
|
||||
|
||||
return pdp;
|
||||
}
|
||||
|
|
|
@ -723,7 +723,7 @@ DEFUN(show_pdpctx_all, show_pdpctx_all_cmd,
|
|||
{
|
||||
struct sgsn_pdp_ctx *pdp;
|
||||
|
||||
llist_for_each_entry(pdp, &sgsn_pdp_ctxts, g_list)
|
||||
llist_for_each_entry(pdp, &sgsn->pdp_list, g_list)
|
||||
vty_dump_pdp(vty, "", pdp);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
|
|
Loading…
Reference in New Issue