This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/2270
to look at the new patch set (#5).
M3UA: Make sure to reject unsupported traffic mode types
This was discovered (and fix validated) using m3ua-sgp-asptm-i-004 of
Michael Tuexen's m3ua-testtool.
Change-Id: I76c01189b75ff3084cd4d3944314ec9b9f811dbf
---
M src/xua_asp_fsm.c
1 file changed, 32 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-sccp refs/changes/70/2270/5
diff --git a/src/xua_asp_fsm.c b/src/xua_asp_fsm.c
index 1570bc9..87f8927 100644
--- a/src/xua_asp_fsm.c
+++ b/src/xua_asp_fsm.c
@@ -210,6 +210,25 @@
return osmo_ss7_asp_send(asp, msg);
}
+static int peer_send_error(struct osmo_fsm_inst *fi, uint32_t err_code)
+{
+ struct xua_asp_fsm_priv *xafp = fi->priv;
+ struct osmo_ss7_asp *asp = xafp->asp;
+ struct xua_msg *xua = xua_msg_alloc();
+ struct msgb *msg;
+
+ xua->hdr = XUA_HDR(SUA_MSGC_MGMT, SUA_MGMT_ERR);
+ xua->hdr.version = SUA_VERSION;
+ xua_msg_add_u32(xua, SUA_IEI_ERR_CODE, err_code);
+
+ msg = xua_to_msg(SUA_VERSION, xua);
+ xua_msg_free(xua);
+ if (!msg)
+ return -1;
+
+ return osmo_ss7_asp_send(asp, msg);
+}
+
static void xua_t_ack_cb(void *data)
{
struct osmo_fsm_inst *fi = data;
@@ -373,6 +392,9 @@
static void xua_asp_fsm_inactive(struct osmo_fsm_inst *fi, uint32_t event, void *data)
{
+ struct xua_msg *xua_in;
+ uint32_t traf_mode;
+
check_stop_t_ack(fi, event);
switch (event) {
case XUA_ASP_E_M_ASP_ACTIVE_REQ:
@@ -400,8 +422,18 @@
PRIM_OP_CONFIRM);
break;
case XUA_ASP_E_ASPTM_ASPAC:
+ xua_in = data;
/* only in role SG */
ENSURE_SG_OR_IPSP(fi, event);
+ if (xua_msg_find_tag(xua_in, M3UA_IEI_TRAF_MODE_TYP)) {
+ traf_mode = xua_msg_get_u32(xua_in, M3UA_IEI_TRAF_MODE_TYP);
+ if (traf_mode != M3UA_TMOD_OVERRIDE &&
+ traf_mode != M3UA_TMOD_LOADSHARE &&
+ traf_mode != M3UA_TMOD_BCAST) {
+ peer_send_error(fi, M3UA_ERR_UNSUPP_TRAF_MOD_TYP);
+ break;
+ }
+ }
/* send ACK */
peer_send(fi, XUA_ASP_E_ASPTM_ASPAC_ACK, NULL);
/* transition state and inform layer manager */
--
To view, visit https://gerrit.osmocom.org/2270
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I76c01189b75ff3084cd4d3944314ec9b9f811dbf
Gerrit-PatchSet: 5
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder