Projects
osmocom:master
libosmo-sigtran
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 77
View file
commit_7430a1f021d88f7fddeebf3b8cc01369a315c2e3.txt
Added
View file
commit_fef8ca462c0d04d3b11f09eab6c44b244015dc62.txt
Deleted
View file
libosmo-sigtran_2.1.0.149.fef8.dsc -> libosmo-sigtran_2.1.0.158.7430.dsc
Changed
@@ -2,7 +2,7 @@ Source: libosmo-sigtran Binary: libosmo-sigtran11, libosmo-sigtran-dbg, libosmo-sigtran-doc, libosmo-sigtran-dev, osmo-stp, osmo-stp-dbg, osmo-stp-doc Architecture: any all -Version: 2.1.0.149.fef8 +Version: 2.1.0.158.7430 Maintainer: Osmocom team <openbsc@lists.osmocom.org> Homepage: https://projects.osmocom.org/projects/libosmo-sccp Standards-Version: 3.9.7 @@ -18,8 +18,8 @@ osmo-stp-dbg deb debug optional arch=any osmo-stp-doc deb doc optional arch=all Checksums-Sha1: - 18d962c49cf4c49ea8df5c2c1873e6bca94e86fb 251424 libosmo-sigtran_2.1.0.149.fef8.tar.xz + d88317626c77dc95c0968f2a73e351c0a9275e59 252400 libosmo-sigtran_2.1.0.158.7430.tar.xz Checksums-Sha256: - 67077f2826aee52c405cb97b8244dc26fa4b166174dc4f48aef3fa5b9ca800dd 251424 libosmo-sigtran_2.1.0.149.fef8.tar.xz + 6699fba30b50256b51e64f332b2d808420d6ac77f3f47cf844297d29d82c131a 252400 libosmo-sigtran_2.1.0.158.7430.tar.xz Files: - 561c178cb52315843f8ec2d9d6c91207 251424 libosmo-sigtran_2.1.0.149.fef8.tar.xz + d2048728369fd89ad106efc1db27c71e 252400 libosmo-sigtran_2.1.0.158.7430.tar.xz
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/.tarball-version -> libosmo-sigtran_2.1.0.158.7430.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -2.1.0.149-fef8 +2.1.0.158-7430
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/debian/changelog -> libosmo-sigtran_2.1.0.158.7430.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -libosmo-sigtran (2.1.0.149.fef8) unstable; urgency=medium +libosmo-sigtran (2.1.0.158.7430) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom master feed - -- Osmocom OBS scripts <info@osmocom.org> Tue, 15 Jul 2025 08:57:25 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Wed, 16 Jul 2025 11:57:47 +0000 libosmo-sigtran (2.1.0) unstable; urgency=medium
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/m3ua.c -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/m3ua.c
Changed
@@ -883,7 +883,6 @@ return xua; } -#if 0 /* not used so far */ /* 3.4.3 Destination Available (DAUD) */ static struct xua_msg *m3ua_encode_daud(const uint32_t *rctx, unsigned int num_rctx, const uint32_t *aff_pc, unsigned int num_aff_pc, @@ -895,7 +894,6 @@ xua->hdr.msg_type = M3UA_SNM_DAUD; return xua; } -#endif /* 3.4.5 Destination User Part Unavailable (DUPU) */ static struct xua_msg *m3ua_encode_dupu(const uint32_t *rctx, unsigned int num_rctx, @@ -976,6 +974,21 @@ m3ua_tx_xua_asp(asp, xua); } +/*! Transmit SSNM DAUD message requesting unavailability status of certain point codes + * \paramin asp ASP through which to transmit message. Must be ACTIVE. + * \paramin rctx array of Routing Contexts in network byte order. + * \paramin num_rctx number of rctx + * \paramin aff_pc array of 'Affected Point Code' in network byte order. + * \paramin num_aff_pc number of aff_pc + * \paramin info_string optional information string (can be NULL). + */ +void m3ua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_string) +{ + struct xua_msg *xua = m3ua_encode_daud(rctx, num_rctx, aff_pc, num_aff_pc, info_string); + m3ua_tx_xua_asp(asp, xua); +} + /*! Transmit SSNM DUPU message indicating user unavailability. * \paramin asp ASP through which to transmit message. Must be ACTIVE. * \paramin rctx array of Routing Contexts in network byte order.
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/sccp_scrc.c -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/sccp_scrc.c
Changed
@@ -142,6 +142,7 @@ struct xua_msg *xua, const struct osmo_sccp_addr *called) { + struct osmo_sccp_addr calling; struct osmo_ss7_route *rt; struct osmo_ss7_route_label rtlabel; @@ -159,13 +160,13 @@ * primitive and send it via link */ + if (sua_addr_parse(&calling, xua, SUA_IEI_SRC_ADDR) == 0 && + (calling.presence & OSMO_SCCP_ADDR_T_PC)) + xua->mtp.opc = calling.pc; + + if (called->presence & OSMO_SCCP_ADDR_T_PC) xua->mtp.dpc = called->pc; - if (!xua->mtp.dpc) { - LOGPSCI(inst, LOGL_ERROR, "MTP-TRANSFER.req from SCCP without DPC?!? called=%s\n", - osmo_sccp_addr_dump(called)); - return -1; - } rtlabel = (struct osmo_ss7_route_label){ .opc = xua->mtp.opc, @@ -178,6 +179,7 @@ char buf256; LOGPSCI(inst, LOGL_ERROR, "MTP-TRANSFER.req from SCCP for %s: no route!\n", ss7_route_label_to_str(buf, sizeof(buf), inst->ss7, &rtlabel)); + sccp_rout_fail_enqueue(inst, xua, SCCP_RETURN_CAUSE_MTP_FAILURE, xua->hdr.msg_class == SUA_MSGC_CO); return -1; }
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/ss7_asp.c -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/ss7_asp.c
Changed
@@ -1549,3 +1549,30 @@ { return _ss7_asp_get_all_rctx(asp, rctx, rctx_size, excl_as, false); } + +/* determine the osmo_ss7_as_traffic_mode to be used by this ASP; will + * iterate over all AS configured for this ASP. If they're compatible, + * a single traffic mode is returned as enum osmo_ss7_as_traffic_mode. + * If they're incompatible, -EINVAL is returned. If there is none + * configured, -1 is returned */ +int ss7_asp_determine_traf_mode(const struct osmo_ss7_asp *asp) +{ + const struct osmo_ss7_as *as; + int tmode = -1; + + llist_for_each_entry(as, &asp->inst->as_list, list) { + if (!osmo_ss7_as_has_asp(as, asp)) + continue; + /* we only care about traffic modes explicitly set */ + if (!as->cfg.mode_set_by_vty) + continue; + if (tmode == -1) { + /* this is the first AS; we use this traffic mode */ + tmode = as->cfg.mode; + } else { + if (tmode != as->cfg.mode) + return -EINVAL; + } + } + return tmode; +}
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/ss7_asp.h -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/ss7_asp.h
Changed
@@ -113,6 +113,9 @@ uint8_t qos_class; uint32_t quirks; + /* Whether to Tx xUA DAUD during ASP activation when in ASP role. */ + bool daud_act; + /* T_defs used by the default_lm: */ struct osmo_tdef *T_defs_xua; @@ -169,5 +172,7 @@ unsigned int ss7_asp_get_all_rctx_be(const struct osmo_ss7_asp *asp, uint32_t *rctx, unsigned int rctx_size, const struct osmo_ss7_as *excl_as); +int ss7_asp_determine_traf_mode(const struct osmo_ss7_asp *asp); + #define LOGPASP(asp, subsys, level, fmt, args ...) \ _LOGSS7((asp)->inst, subsys, level, "ASP(%s) " fmt, (asp)->cfg.name, ## args)
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/ss7_asp_vty.c -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/ss7_asp_vty.c
Changed
@@ -99,6 +99,62 @@ { 0, NULL } }; +static void tx_daud_pc(struct osmo_ss7_asp *asp, uint32_t pc) +{ + uint32_t rctxOSMO_SS7_MAX_RCTX_COUNT; + unsigned int num_rctx; + char buf_pcMAX_PC_STR_LEN; + uint32_t aff_pc; + + LOGPASP(asp, DLSS7, LOGL_NOTICE, "VTY: Tx DAUD pc=%u=%s\n", + pc, osmo_ss7_pointcode_print_buf(buf_pc, sizeof(buf_pc), asp->inst, pc)); + + aff_pc = htonl(pc); /* mask = 0 */ + num_rctx = ss7_asp_get_all_rctx_be(asp, rctx, ARRAY_SIZE(rctx), NULL); + xua_tx_snm_daud(asp, rctx, num_rctx, &aff_pc, 1, "VTY"); +} + +DEFUN_ATTR(cs7_asp_audit, cs7_asp_audit_cmd, + "cs7 instance <0-15> asp NAME audit point-code POINT_CODE", + CS7_STR "Instance related commands\n" "SS7 Instance Number\n" + "ASP related commands\n" "Name of ASP\n" + "Audit destination Point Code (xUA DAUD)\n" + "Destination Point Code to audit\n" + "Destination Point Code value\n", + CMD_ATTR_IMMEDIATE) +{ + struct osmo_ss7_instance *inst; + struct osmo_ss7_asp *asp; + int pc; + + inst = osmo_ss7_instance_find(atoi(argv0)); + if (!inst) { + vty_out(vty, "%% Unknown instance '%s'%s", argv0, VTY_NEWLINE); + return CMD_WARNING; + } + + asp = osmo_ss7_asp_find_by_name(inst, argv1); + if (!asp) { + vty_out(vty, "%% Unknown ASP '%s'%s", argv1, VTY_NEWLINE); + return CMD_WARNING; + } + + pc = osmo_ss7_pointcode_parse(asp->inst, argv2); + if (pc < 0) { + vty_out(vty, "%% Invalid point code (%s)%s", argv2, VTY_NEWLINE); + return CMD_WARNING; + } + + if (asp->cfg.role != OSMO_SS7_ASP_ROLE_ASP) { + vty_out(vty, "%% ASP audit (DAUD) can't be sent in role '%s'%s", + get_value_string(osmo_ss7_asp_role_names, asp->cfg.role), VTY_NEWLINE); + return CMD_WARNING; + } + + tx_daud_pc(asp, pc); + return CMD_SUCCESS; +} + DEFUN_ATTR(cs7_asp, cs7_asp_cmd, "asp NAME <0-65535> <0-65535> " XUA_VAR_STR, "Configure Application Server Process\n" @@ -548,6 +604,36 @@ return CMD_SUCCESS; } +/* TODO: "destination-audit periodic <time_inteval(s)>" See M3UA RFC4666 4.5.3 "Periodic". */ +DEFUN_ATTR(asp_destination_audit_asp_active, asp_destination_audit_asp_active_cmd, + "destination-audit asp-active", + "Configure ASP Auditing (xUA DAUD)\n" + "Transmit DAUD after ASP successful activate (for remote PCs in sccp address-book)\n", + CMD_ATTR_NODE_EXIT) +{ + struct osmo_ss7_asp *asp = vty->index; + + if (asp->cfg.role != OSMO_SS7_ASP_ROLE_ASP) { + vty_out(vty, "%% 'destination-audit' only possible in role ASP!%s", VTY_NEWLINE); + return CMD_WARNING; + } + + asp->cfg.daud_act = true; + return CMD_SUCCESS; +} + +DEFUN_ATTR(asp_no_destination_audit_asp_active, asp_no_destination_audit_asp_active_cmd, + "no destination-audit asp-active", + NO_STR "Configure ASP Auditing (xUA DAUD)\n" + "Transmit xUA DAUD after ASP successful activate (for remote PCs in sccp address-book)\n", + CMD_ATTR_NODE_EXIT) +{ + struct osmo_ss7_asp *asp = vty->index; + + asp->cfg.daud_act = false; + return CMD_SUCCESS; +} + DEFUN_ATTR(asp_block, asp_block_cmd, "block", "Allows a SCTP Association with ASP, but doesn't let it become active\n", @@ -1259,6 +1345,9 @@ if (asp->cfg.tcp.user_timeout_present) vty_out(vty, " tcp-param user-timeout %u%s", asp->cfg.tcp.user_timeout_value, VTY_NEWLINE); + if (asp->cfg.daud_act) + vty_out(vty, " destination-audit asp-active%s", VTY_NEWLINE); + for (i = 0; i < sizeof(uint32_t) * 8; i++) { if (!(asp->cfg.quirks & ((uint32_t) 1 << i))) continue; @@ -1323,6 +1412,8 @@ NO_STR "Disable quirk to work around interop issues\n", "\n", "\n", 0); + install_lib_element(ENABLE_NODE, &cs7_asp_audit_cmd); + install_node(&asp_node, NULL); install_lib_element_ve(&show_cs7_asp_cmd); install_lib_element_ve(&show_cs7_asp_name_cmd); @@ -1350,6 +1441,8 @@ install_lib_element(L_CS7_ASP_NODE, &asp_no_tcp_param_keepalive_cfg_cmd); install_lib_element(L_CS7_ASP_NODE, &asp_tcp_param_user_timeout_cmd); install_lib_element(L_CS7_ASP_NODE, &asp_no_tcp_param_user_timeout_cmd); + install_lib_element(L_CS7_ASP_NODE, &asp_destination_audit_asp_active_cmd); + install_lib_element(L_CS7_ASP_NODE, &asp_no_destination_audit_asp_active_cmd); install_lib_element(L_CS7_ASP_NODE, &asp_quirk_cmd); install_lib_element(L_CS7_ASP_NODE, &asp_no_quirk_cmd); gen_asp_timer_xua_cmd_strs(&asp_timer_xua_cmd);
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/sua.c -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/sua.c
Changed
@@ -825,7 +825,6 @@ return xua; } -#if 0 /* not used so far */ /* 3.4.3 Destination Available (DAUD) */ static struct xua_msg *sua_encode_daud(const uint32_t *rctx, unsigned int num_rctx, const uint32_t *aff_pc, unsigned int num_aff_pc, @@ -837,7 +836,6 @@ xua->hdr.msg_type = SUA_SNM_DAUD; return xua; } -#endif /* 3.4.5 Destination User Part Unavailable (DUPU) */ static struct xua_msg *sua_encode_dupu(const uint32_t *rctx, unsigned int num_rctx, @@ -914,6 +912,23 @@ xua_msg_add_data(xua, SUA_IEI_INFO_STRING, strlen(info_string)+1, (const uint8_t *) info_string); } +/*! Transmit SSNM DAUD message requesting unavailability status of certain point codes + * \paramin asp ASP through which to transmit message. Must be ACTIVE. + * \paramin rctx array of Routing Contexts in network byte order. + * \paramin num_rctx number of rctx + * \paramin aff_pc array of 'Affected Point Code' in network byte order. + * \paramin num_aff_pc number of aff_pc + * \paramin aff_ssn affected SSN (optional) + * \paramin smi subsystem multiplicity indicator (optional) + * \paramin info_string optional information string (can be NULL). + */ +void sua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, const uint32_t *aff_ssn, + const uint32_t *smi, const char *info_string) +{ + struct xua_msg *xua = sua_encode_daud(rctx, num_rctx, aff_pc, num_aff_pc, aff_ssn, smi, info_string); + sua_tx_xua_asp(asp, xua); +} /*! Transmit SSNM DUPU message indicating user unavailability. * \paramin asp ASP through which to transmit message. Must be ACTIVE.
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/xua_as_fsm.c -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/xua_as_fsm.c
Changed
@@ -586,20 +586,28 @@ switch (event) { case XUA_ASPAS_ASP_DOWN_IND: + asp = data; + if (!check_any_other_asp_in_active(xafp->as, asp)) { + uint32_t recovery_msec = xafp->as->cfg.recovery_timeout_msec; + osmo_fsm_inst_state_chg(fi, XUA_AS_S_PENDING, 0, 0); + /* Start T(r) */ + osmo_timer_schedule(&xafp->recovery.t_r, MSEC_TO_S_US(recovery_msec)); + /* FIXME: Queue all signalling messages until + * recovery or T(r) expiry */ + } + break; case XUA_ASPAS_ASP_INACTIVE_IND: inact_ind_pars = data; - if (check_any_other_asp_in_active(xafp->as, inact_ind_pars->asp)) { - if (event == XUA_ASPAS_ASP_INACTIVE_IND && inact_ind_pars->asp_requires_notify) { - fill_notify_statchg_pars(fi, &npar); - tx_notify(inact_ind_pars->asp, &npar); - } /* ASP_DOWN_IND: ignore, nothing to be sent */ - } else { + if (!check_any_other_asp_in_active(xafp->as, inact_ind_pars->asp)) { uint32_t recovery_msec = xafp->as->cfg.recovery_timeout_msec; osmo_fsm_inst_state_chg(fi, XUA_AS_S_PENDING, 0, 0); /* Start T(r) */ osmo_timer_schedule(&xafp->recovery.t_r, MSEC_TO_S_US(recovery_msec)); /* FIXME: Queue all signalling messages until * recovery or T(r) expiry */ + } else if (inact_ind_pars->asp_requires_notify) { + fill_notify_statchg_pars(fi, &npar); + tx_notify(inact_ind_pars->asp, &npar); } break; case XUA_ASPAS_ASP_ACTIVE_IND:
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/xua_as_fsm.h -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/xua_as_fsm.h
Changed
@@ -21,7 +21,7 @@ enum xua_as_event { XUA_ASPAS_ASP_INACTIVE_IND, /* param: struct xua_as_event_asp_inactive_ind_pars* */ - XUA_ASPAS_ASP_DOWN_IND, + XUA_ASPAS_ASP_DOWN_IND, /* param: struct osmo_ss7_asp* */ XUA_ASPAS_ASP_ACTIVE_IND, XUA_AS_E_RECOVERY_EXPD, XUA_AS_E_TRANSFER_REQ, /* param: struct xua_msg*, ownership transferred. */
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/xua_asp_fsm.c -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/xua_asp_fsm.c
Changed
@@ -31,6 +31,7 @@ #include "ss7_asp.h" #include "ss7_internal.h" #include "ss7_xua_srv.h" +#include "sccp_internal.h" #include "xua_asp_fsm.h" #include "xua_as_fsm.h" #include "xua_internal.h" @@ -146,31 +147,52 @@ xua_asp_send_xlm_prim_simple(asp, prim_type, op); } -/* determine the osmo_ss7_as_traffic_mode to be used by this ASP; will - * iterate over all AS configured for this ASP. If they're compatible, - * a single traffic mode is returned as enum osmo_ss7_as_traffic_mode. - * If they're incompatible, -EINVAL is returned. If there is none - * configured, -1 is returned */ -static int determine_traf_mode(struct osmo_ss7_asp *asp) +static void xua_asp_tx_snm_daud_address_book(struct osmo_ss7_asp *asp) { - struct osmo_ss7_as *as; - int tmode = -1; + struct osmo_ss7_instance *inst = asp->inst; + uint32_t rctxOSMO_SS7_MAX_RCTX_COUNT; + unsigned int num_rctx; + uint32_t *aff_pc = NULL; + unsigned int num_aff_pc = 0; + struct osmo_sccp_addr_entry *entry; + + num_rctx = ss7_asp_get_all_rctx_be(asp, rctx, ARRAY_SIZE(rctx), NULL); + + /* First count required size of num_aff_pc array: */ + llist_for_each_entry(entry, &inst->cfg.sccp_address_book, list) { + if (!(entry->addr.presence & OSMO_SCCP_ADDR_T_PC)) + continue; + if (osmo_ss7_pc_is_local(inst, entry->addr.pc)) + continue; + num_aff_pc++; + } + if (num_aff_pc == 0) { + LOGPASP(asp, DLSS7, LOGL_NOTICE, "Skip Tx DAUD: No SCCP in address book\n"); + return; + } + aff_pc = talloc_array(asp, uint32_t, num_aff_pc); + OSMO_ASSERT(aff_pc); - llist_for_each_entry(as, &asp->inst->as_list, list) { - if (!osmo_ss7_as_has_asp(as, asp)) + num_aff_pc = 0; + llist_for_each_entry(entry, &inst->cfg.sccp_address_book, list) { + uint32_t curr_aff_pc; + unsigned int i; + if (!(entry->addr.presence & OSMO_SCCP_ADDR_T_PC)) continue; - /* we only care about traffic modes explicitly set */ - if (!as->cfg.mode_set_by_vty) + if (osmo_ss7_pc_is_local(inst, entry->addr.pc)) continue; - if (tmode == -1) { - /* this is the first AS; we use this traffic mode */ - tmode = as->cfg.mode; - } else { - if (tmode != as->cfg.mode) - return -EINVAL; - } + LOGPASP(asp, DLSS7, LOGL_DEBUG, "Tx DAUD: Requesting status of DPC=%u=%s\n", + entry->addr.pc, osmo_ss7_pointcode_print2(inst, entry->addr.pc)); + curr_aff_pc = htonl(entry->addr.pc); /* mask = 0 */ + for (i = 0; i < num_aff_pc; i++) + if (aff_pci == curr_aff_pc) + break; + if (i == num_aff_pc) /* not found in array */ + aff_pcnum_aff_pc++ = curr_aff_pc; } - return tmode; + + xua_tx_snm_daud(asp, rctx, num_rctx, aff_pc, num_aff_pc, "Isolation-ASP-ACTIVE"); + talloc_free(aff_pc); } /* add M3UA_IEI_ROUTE_CTX to xua_msg containig all routing keys of ASs within ASP */ @@ -254,7 +276,7 @@ /* RFC3868 Ch. 3.6.1 */ xua->hdr = XUA_HDR(SUA_MSGC_ASPTM, SUA_ASPTM_ACTIVE); /* Optional: Traffic Mode Type */ - rc = determine_traf_mode(asp); + rc = ss7_asp_determine_traf_mode(asp); if (rc >= 0) xua_msg_add_u32(xua, M3UA_IEI_TRAF_MODE_TYP, osmo_ss7_tmode_to_xua(rc)); /* Optional: Routing Context */ @@ -699,6 +721,18 @@ struct xua_asp_fsm_priv *xafp = fi->priv; struct osmo_ss7_asp *asp = xafp->asp; + if (asp->cfg.role == OSMO_SS7_ASP_ROLE_ASP && asp->cfg.daud_act) { + /* RFC4666 4.6, RFC3868 4.6: "The ASP MAY choose to audit the availability + * of unavailable destinations by sending DAUD messages. + * This would be the case when, for example, an AS becomes active at an ASP + * and does not have current destination statuses." + * See also RFC4666 4.5.3, RFC3868 4.5.3 "ASP Auditing". + * See also RFC4666 5.5.1.1.3 "Support for ASP Querying of SS7 Destination States" + */ + LOGPFSML(fi, LOGL_INFO, "Tx DAUD\n"); + xua_asp_tx_snm_daud_address_book(asp); + } + dispatch_to_all_as(fi, XUA_ASPAS_ASP_ACTIVE_IND, asp); }
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/xua_default_lm_fsm.c -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/xua_default_lm_fsm.c
Changed
@@ -245,12 +245,18 @@ case LM_E_NOTIFY_IND: OSMO_ASSERT(oxp->oph.primitive == OSMO_XLM_PRIM_M_NOTIFY); OSMO_ASSERT(oxp->oph.operation == PRIM_OP_INDICATION); - if (oxp->u.notify.status_type == M3UA_NOTIFY_T_STATCHG && - (oxp->u.notify.status_info == M3UA_NOTIFY_I_AS_INACT || - oxp->u.notify.status_info == M3UA_NOTIFY_I_AS_PEND)) { - lm_fsm_state_chg(fi, S_ACTIVE); - osmo_fsm_inst_dispatch(lmp->asp->fi, XUA_ASP_E_M_ASP_ACTIVE_REQ, NULL); - } + + /* Not handling/interested in other status changes for now. */ + if (oxp->u.notify.status_type != M3UA_NOTIFY_T_STATCHG) + break; + + /* Don't change active ASP if there's already one active. */ + if (ss7_asp_determine_traf_mode(lmp->asp) == OSMO_SS7_AS_TMOD_OVERRIDE && + oxp->u.notify.status_info == M3UA_NOTIFY_I_AS_ACT) + break; + + lm_fsm_state_chg(fi, S_ACTIVE); + osmo_fsm_inst_dispatch(lmp->asp->fi, XUA_ASP_E_M_ASP_ACTIVE_REQ, NULL); break; case LM_E_AS_INACTIVE_IND: /* we now know that an AS is associated with this ASP at
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/xua_internal.h -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/xua_internal.h
Changed
@@ -28,6 +28,9 @@ void sua_tx_snm_congestion(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, const uint32_t *aff_pc, unsigned int num_aff_pc, const uint32_t *ssn, const uint8_t cong_level, const char *info_string); +void sua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, const uint32_t *aff_ssn, + const uint32_t *smi, const char *info_string); void sua_tx_dupu(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, uint32_t dpc, uint16_t user, uint16_t cause, const char *info_str); @@ -42,6 +45,8 @@ const uint32_t *aff_pc, unsigned int num_aff_pc, const uint32_t *concerned_dpc, const uint8_t *cong_level, const char *info_string); +void m3ua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_string); void m3ua_tx_dupu(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, uint32_t dpc, uint16_t user, uint16_t cause, const char *info_str); @@ -95,6 +100,9 @@ void xua_snm_pc_available(struct osmo_ss7_as *as, const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_str, bool available); +void xua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_str); + enum ss7_asp_lm_timer { /* 0 kept unused on purpose since it's handled specially by osmo_fsm */ SS7_ASP_LM_T_WAIT_ASP_UP = 1,
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/src/xua_snm.c -> libosmo-sigtran_2.1.0.158.7430.tar.xz/src/xua_snm.c
Changed
@@ -83,6 +83,21 @@ } } +void xua_tx_snm_daud(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, + const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_str) +{ + switch (asp->cfg.proto) { + case OSMO_SS7_ASP_PROT_M3UA: + m3ua_tx_snm_daud(asp, rctx, num_rctx, aff_pc, num_aff_pc, info_str); + break; + case OSMO_SS7_ASP_PROT_SUA: + sua_tx_snm_daud(asp, rctx, num_rctx, aff_pc, num_aff_pc, NULL, NULL, info_str); + break; + default: + break; + } +} + static void xua_tx_upu(struct osmo_ss7_asp *asp, const uint32_t *rctx, unsigned int num_rctx, uint32_t dpc, uint16_t user, uint16_t cause, const char *info_str) {
View file
libosmo-sigtran_2.1.0.149.fef8.tar.xz/tests/vty/osmo_stp_test.vty -> libosmo-sigtran_2.1.0.158.7430.tar.xz/tests/vty/osmo_stp_test.vty
Changed
@@ -31,6 +31,7 @@ show cs7 (sua|m3ua|ipa) (sctp|tcp) <0-65534> show cs7 config cs7 instance <0-15> asp NAME disconnect + cs7 instance <0-15> asp NAME audit point-code POINT_CODE show cs7 instance <0-15> asp show cs7 instance <0-15> asp name ASP_NAME show cs7 instance <0-15> asp-remaddr @@ -289,6 +290,8 @@ no tcp-param keepalive (time|intvl|probes) tcp-param user-timeout <0-65535> no tcp-param user-timeout + destination-audit asp-active + no destination-audit asp-active quirk (no_notify|daud_in_asp|snm_inactive) no quirk (no_notify|daud_in_asp|snm_inactive) timer xua (ack|beat) <1-999999> @@ -300,27 +303,29 @@ OsmoSTP(config-cs7-asp)# ? ... - description Save human-readable description of the object - remote-ip Specify Remote IP Address of ASP - no Negate a command or set its defaults - local-ip Specify Local IP Address from which to contact ASP - qos-class Specify QoS Class of ASP - role Specify the xUA role for this ASP - transport-role Specify the transport layer role for this ASP - sctp-param Configure SCTP parameters - tcp-param Configure TCP parameters - quirk Enable quirk to work around interop issues - timer Configure ASP default timer values - block Allows a SCTP Association with ASP, but doesn't let it become active - shutdown Terminates SCTP association; New associations will be rejected + description Save human-readable description of the object + remote-ip Specify Remote IP Address of ASP + no Negate a command or set its defaults + local-ip Specify Local IP Address from which to contact ASP + qos-class Specify QoS Class of ASP + role Specify the xUA role for this ASP + transport-role Specify the transport layer role for this ASP + sctp-param Configure SCTP parameters + tcp-param Configure TCP parameters + destination-audit Configure ASP Auditing (xUA DAUD) + quirk Enable quirk to work around interop issues + timer Configure ASP default timer values + block Allows a SCTP Association with ASP, but doesn't let it become active + shutdown Terminates SCTP association; New associations will be rejected ... OsmoSTP(config-cs7-asp)# no ? ... - sctp-param Configure SCTP parameters - tcp-param Configure TCP parameters - quirk Disable quirk to work around interop issues - shutdown Terminates SCTP association; New associations will be rejected + sctp-param Configure SCTP parameters + tcp-param Configure TCP parameters + destination-audit Configure ASP Auditing (xUA DAUD) + quirk Disable quirk to work around interop issues + shutdown Terminates SCTP association; New associations will be rejected ... OsmoSTP(config-cs7-asp)# remote-ip 127.0.0.200
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.