diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp index 4f8c41ec..17c3fe45 100644 --- a/src/gprs_bssgp_pcu.cpp +++ b/src/gprs_bssgp_pcu.cpp @@ -559,9 +559,10 @@ static void bvc_timeout(void *_priv) } /* create BSSGP/NS layer instances */ -int gprs_bssgp_create(uint32_t sgsn_ip, uint16_t sgsn_port, uint16_t nsei, - uint16_t nsvci, uint16_t bvci, uint16_t mcc, uint16_t mnc, uint16_t lac, - uint16_t rac, uint16_t cell_id) +int gprs_bssgp_create(uint16_t local_port, uint32_t sgsn_ip, + uint16_t sgsn_port, uint16_t nsei, uint16_t nsvci, uint16_t bvci, + uint16_t mcc, uint16_t mnc, uint16_t lac, uint16_t rac, + uint16_t cell_id) { struct sockaddr_in dest; int rc; @@ -579,6 +580,7 @@ int gprs_bssgp_create(uint32_t sgsn_ip, uint16_t sgsn_port, uint16_t nsei, return -EINVAL; } gprs_ns_vty_init(bssgp_nsi); + bssgp_nsi->nsip.local_port = local_port; rc = gprs_ns_nsip_listen(bssgp_nsi); if (rc < 0) { LOGP(DBSSGP, LOGL_ERROR, "Failed to create socket\n"); diff --git a/src/gprs_bssgp_pcu.h b/src/gprs_bssgp_pcu.h index 2d661886..d669c3a8 100644 --- a/src/gprs_bssgp_pcu.h +++ b/src/gprs_bssgp_pcu.h @@ -51,9 +51,10 @@ int gprs_bssgp_pcu_rx_sign(struct msgb *msg, struct tlv_parsed *tp, struct bssgp int gprs_bssgp_pcu_rcvmsg(struct msgb *msg); -int gprs_bssgp_create(uint32_t sgsn_ip, uint16_t sgsn_port, uint16_t nsei, - uint16_t nsvci, uint16_t bvci, uint16_t mcc, uint16_t mnc, uint16_t lac, - uint16_t rac, uint16_t cell_id); +int gprs_bssgp_create(uint16_t local_port, uint32_t sgsn_ip, uint16_t + sgsn_port, uint16_t nsei, uint16_t nsvci, uint16_t bvci, + uint16_t mcc, uint16_t mnc, uint16_t lac, uint16_t rac, + uint16_t cell_id); void gprs_bssgp_destroy(void); diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp index 6b8b3fef..8d98c1ed 100644 --- a/src/pcu_l1_if.cpp +++ b/src/pcu_l1_if.cpp @@ -420,7 +420,8 @@ bssgp_failed: LOGP(DL1IF, LOGL_DEBUG, " remote_port=%d\n", info_ind->remote_port[0]); LOGP(DL1IF, LOGL_DEBUG, " remote_ip=%d\n", info_ind->remote_ip[0]); - rc = gprs_bssgp_create(info_ind->remote_ip[0], info_ind->remote_port[0], + rc = gprs_bssgp_create(info_ind->local_port[0], + info_ind->remote_ip[0], info_ind->remote_port[0], info_ind->nsei, info_ind->nsvci[0], info_ind->bvci, info_ind->mcc, info_ind->mnc, info_ind->lac, info_ind->rac, info_ind->cell_id);