diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2017-07-09 13:18:17 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-07-10 17:19:56 +0000 |
commit | 8f7ab69d4ca2cbfa9a669c7cdee62272824be4a3 (patch) | |
tree | 0146fefeda9ddc16577a7ce1a9f627ec706484d7 /openbsc/src/gprs/gprs_subscriber.c | |
parent | 61a7e57d8608052a050795c1620f1e918ab80a31 (diff) |
sgsn: Fill the cch_pdp with a value coming from the tlv structure
For some GGSNs we need to insert the PDP Charging Characteristics
that were returned. We receive these values from GSUP and will
fill them into the tlv structure when finding the ggsn context.
Change-Id: I1725bfd2403d29ce3550bfcd6fcc1498426ef906
Diffstat (limited to 'openbsc/src/gprs/gprs_subscriber.c')
-rw-r--r-- | openbsc/src/gprs/gprs_subscriber.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/openbsc/src/gprs/gprs_subscriber.c b/openbsc/src/gprs/gprs_subscriber.c index 1bb51418a..c90ba7006 100644 --- a/openbsc/src/gprs/gprs_subscriber.c +++ b/openbsc/src/gprs/gprs_subscriber.c @@ -324,6 +324,13 @@ static void gprs_subscr_gsup_insert_data(struct gprs_subscr *subscr, } } + if (gsup_msg->pdp_charg_enc && gsup_msg->pdp_charg_enc_len >= sizeof(sdata->pdp_charg)) { + memcpy(&sdata->pdp_charg, gsup_msg->pdp_charg_enc, sizeof(sdata->pdp_charg)); + sdata->has_pdp_charg = 1; + } else { + sdata->has_pdp_charg = 0; + } + if (gsup_msg->pdp_info_compl) { rc = gprs_subscr_pdp_data_clear(subscr); if (rc > 0) @@ -367,6 +374,13 @@ static void gprs_subscr_gsup_insert_data(struct gprs_subscr *subscr, pdp_info->apn_enc, pdp_info->apn_enc_len); memcpy(pdp_data->qos_subscribed, pdp_info->qos_enc, pdp_info->qos_enc_len); pdp_data->qos_subscribed_len = pdp_info->qos_enc_len; + + if (pdp_info->pdp_charg_enc && pdp_info->pdp_charg_enc_len >= sizeof(pdp_data->pdp_charg)) { + memcpy(&pdp_data->pdp_charg, pdp_info->pdp_charg_enc, sizeof(pdp_data->pdp_charg)); + pdp_data->has_pdp_charg = 1; + } else { + pdp_data->has_pdp_charg = 0; + } } } |