From 9e583c8d893a0eb902dc7ef772f2f069188a7a69 Mon Sep 17 00:00:00 2001 From: Daniel Willmann Date: Mon, 30 Nov 2020 17:14:24 +0100 Subject: gbproxy: Separate function to move gbproxy_peer to different nse Change-Id: I0a8b1e4b78384ea99d50109f050ca501b18ba5d9 Related: SYS#5226 --- include/osmocom/sgsn/gb_proxy.h | 1 + src/gbproxy/gb_proxy.c | 4 +--- 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; -- cgit v1.2.3