mirror of https://gerrit.osmocom.org/libosmocore
gprs_ns2_sns: dynamic calculate the maximum NS-VCs
The previous hard-coded value could be not enough if the user configures too many local binds. Allow at least 8 NS-VCs. In case the user configures too many binds (> 2) increase the maximum NS-VCs to allow the SGSN to have 4 redundant connections. Change-Id: Iae859dc504716fd6f705e72db5fc293b4b3298e7
This commit is contained in:
parent
e03d863e1f
commit
42ad549152
|
@ -1265,6 +1265,7 @@ int ns2_sns_bss_fsm_start(struct gprs_ns2_nse *nse, struct gprs_ns2_vc *nsvc,
|
|||
gss->sns_nsvc = nsvc;
|
||||
nsvc->sns_only = true;
|
||||
|
||||
/* count how many bindings are available (only UDP binds) */
|
||||
int count = 0;
|
||||
llist_for_each_entry(bind, &nsi->binding, list) {
|
||||
if (!gprs_ns2_is_ip_bind(bind))
|
||||
|
@ -1320,6 +1321,7 @@ int ns2_sns_bss_fsm_start(struct gprs_ns2_nse *nse, struct gprs_ns2_vc *nsvc,
|
|||
|
||||
gss->num_ip4_local = count;
|
||||
gss->num_max_ip4_remote = 4;
|
||||
gss->num_max_nsvcs = OSMO_MAX(gss->num_max_ip4_remote * 4, 8);
|
||||
break;
|
||||
case IPv6:
|
||||
/* IPv6 */
|
||||
|
@ -1358,11 +1360,10 @@ int ns2_sns_bss_fsm_start(struct gprs_ns2_nse *nse, struct gprs_ns2_vc *nsvc,
|
|||
}
|
||||
gss->num_ip6_local = count;
|
||||
gss->num_max_ip6_remote = 4;
|
||||
gss->num_max_nsvcs = OSMO_MAX(gss->num_max_ip6_remote * 4, 8);
|
||||
break;
|
||||
}
|
||||
|
||||
gss->num_max_nsvcs = 8;
|
||||
|
||||
return osmo_fsm_inst_dispatch(nse->bss_sns_fi, GPRS_SNS_EV_START, NULL);
|
||||
|
||||
err:
|
||||
|
|
Loading…
Reference in New Issue