diff options
author | Harald Welte <laforge@gnumonks.org> | 2018-02-09 00:09:16 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-02-09 02:20:51 +0100 |
commit | 54a10efea079d37083f6db07969e8e8be3b68bfe (patch) | |
tree | 46083a2d0510fe7d2c414d3514dc5da5b31c93f8 /include | |
parent | b6777fb055d94991971d4df0438ad18911e0b000 (diff) |
Don't answer to BSC-originated RESET with another RESET
If the BSC is contacting us for the first time and sending a BSSMAP
RESET, then we should simply ACK that and transition into the
"connected" state, where connection-oriented and connectionless
procedures are permitted.
This patch is a bit large for such a seemingly simple behavioural
change, but the existing data model didn't permit a more
straight-forward implementation.
Change-Id: Ie67e7ed20a6c42afe99bafef96d85a4e083dd057
Closes: OS#2914
Diffstat (limited to 'include')
-rw-r--r-- | include/osmocom/msc/a_iface.h | 2 | ||||
-rw-r--r-- | include/osmocom/msc/a_iface_bssap.h | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/include/osmocom/msc/a_iface.h b/include/osmocom/msc/a_iface.h index 74172984d..466e70b94 100644 --- a/include/osmocom/msc/a_iface.h +++ b/include/osmocom/msc/a_iface.h @@ -73,6 +73,8 @@ int a_iface_tx_clear_cmd(struct gsm_subscriber_connection *conn); * (Helper function for a_iface_bssap.c) */ void a_clear_all(struct osmo_sccp_user *scu, const struct osmo_sccp_addr *bsc_addr); +void a_start_reset(struct bsc_context *bsc_ctx, bool already_connected); + /* Delete info of a closed connection from the active connection list * (Helper function for a_iface_bssap.c) */ void a_delete_bsc_con(uint32_t conn_id); diff --git a/include/osmocom/msc/a_iface_bssap.h b/include/osmocom/msc/a_iface_bssap.h index 79b839074..d4b67e3ec 100644 --- a/include/osmocom/msc/a_iface_bssap.h +++ b/include/osmocom/msc/a_iface_bssap.h @@ -20,17 +20,17 @@ #pragma once +#include <osmocom/msc/a_iface.h> + /* Note: The structs and functions presented in this header file are intended * to be used only by a_iface.c. */ /* A structure to hold tha most basic information about a sigtran connection * we use this struct internally here to pass connection data around */ struct a_conn_info { - struct osmo_sccp_addr *msc_addr; - struct osmo_sccp_addr *bsc_addr; + struct bsc_context *bsc; uint32_t conn_id; struct gsm_network *network; - struct a_reset_ctx *reset; }; /* Receive incoming connection less data messages via sccp */ |