diff options
author | Daniel Willmann <dwillmann@sysmocom.de> | 2020-11-30 17:14:24 +0100 |
---|---|---|
committer | Daniel Willmann <dwillmann@sysmocom.de> | 2020-11-30 18:30:35 +0100 |
commit | 9e583c8d893a0eb902dc7ef772f2f069188a7a69 (patch) | |
tree | 3f0a2a5514f08962e7ae93a368b6e29a57a98ce5 | |
parent | 5937dfd39f11d205b73126a6350544af97e43814 (diff) |
gbproxy: Separate function to move gbproxy_peer to different nse
Change-Id: I0a8b1e4b78384ea99d50109f050ca501b18ba5d9
Related: SYS#5226
-rw-r--r-- | include/osmocom/sgsn/gb_proxy.h | 1 | ||||
-rw-r--r-- | src/gbproxy/gb_proxy.c | 4 | ||||
-rw-r--r-- | src/gbproxy/gb_proxy_peer.c | 7 |
3 files changed, 9 insertions, 3 deletions
diff --git a/include/osmocom/sgsn/gb_proxy.h b/include/osmocom/sgsn/gb_proxy.h index 54d4548c7..9f91bd683 100644 --- a/include/osmocom/sgsn/gb_proxy.h +++ b/include/osmocom/sgsn/gb_proxy.h @@ -344,6 +344,7 @@ struct gbproxy_peer *gbproxy_peer_by_bssgp_tlv( struct gbproxy_config *cfg, struct tlv_parsed *tp); struct gbproxy_peer *gbproxy_peer_alloc(struct gbproxy_nse *nse, uint16_t bvci); void gbproxy_peer_free(struct gbproxy_peer *peer); +void gbproxy_peer_move(struct gbproxy_peer *peer, struct gbproxy_nse *nse); int gbproxy_cleanup_peers(struct gbproxy_config *cfg, uint16_t nsei, uint16_t bvci); /* NSE handling */ diff --git a/src/gbproxy/gb_proxy.c b/src/gbproxy/gb_proxy.c index db7f55b3d..bd58617ed 100644 --- a/src/gbproxy/gb_proxy.c +++ b/src/gbproxy/gb_proxy.c @@ -1114,9 +1114,7 @@ static int gbprox_rx_sig_from_bss(struct gbproxy_config *cfg, LOGP(DGPRS, LOGL_NOTICE, "Peer for BVCI=%u moved from NSEI=%u to NSEI=%u\n", bvci, nse_old->nsei, nsei); /* Move peer to different NSE */ - llist_del(&from_peer->list); - llist_add(&from_peer->list, &nse_new->bts_peers); - from_peer->nse = nse_new; + gbproxy_peer_move(from_peer, nse_new); } if (TLVP_PRESENT(&tp, BSSGP_IE_CELL_ID)) { diff --git a/src/gbproxy/gb_proxy_peer.c b/src/gbproxy/gb_proxy_peer.c index 920547c9e..62c4d94f1 100644 --- a/src/gbproxy/gb_proxy_peer.c +++ b/src/gbproxy/gb_proxy_peer.c @@ -253,6 +253,13 @@ void gbproxy_peer_free(struct gbproxy_peer *peer) talloc_free(peer); } +void gbproxy_peer_move(struct gbproxy_peer *peer, struct gbproxy_nse *nse) +{ + llist_del(&peer->list); + llist_add(&peer->list, &nse->bts_peers); + peer->nse = nse; +} + int gbproxy_cleanup_peers(struct gbproxy_config *cfg, uint16_t nsei, uint16_t bvci) { int counter = 0; |