libosmo-sigtran: src/m3ua.c File Reference

libosmo-sigtran 2.2.1.95-893c Osmocom SIGTRAN library

Macros | Functions | Variables
m3ua.c File Reference
`#include <stdint.h>`
`#include <errno.h>`
`#include <unistd.h>`
`#include <string.h>`
`#include <osmocom/core/utils.h>`
`#include <osmocom/core/linuxlist.h>`
`#include <osmocom/core/write_queue.h>`
`#include <osmocom/core/logging.h>`
`#include <osmocom/core/timer.h>`
`#include <osmocom/core/socket.h>`
`#include <osmocom/netif/stream.h>`
`#include <osmocom/sigtran/mtp_sap.h>`
`#include <osmocom/sigtran/sccp_sap.h>`
`#include <osmocom/sigtran/osmo_ss7.h>`
`#include <osmocom/sigtran/protocol/m3ua.h>`
`#include <osmocom/sigtran/protocol/sua.h>`
`#include "mtp3_hmdc.h"`
`#include "mtp3_hmdt.h"`
`#include "xua_as_fsm.h"`
`#include "xua_asp_fsm.h"`
`#include "xua_internal.h"`
`#include "ss7_as.h"`
`#include "ss7_asp.h"`
`#include "ss7_internal.h"`
`#include "xua_msg.h"`
`#include "xua_lm_sap.h"`

## Macros
#define | M3UA_MSGB_SIZE 1500
#define | MAND_IES(msgt, ies) [msgt] = (ies)

## Functions
const char * | m3ua_ntfy_info_name (uint16_t ntfy_status_type, uint16_t ntfy_status_info)
void | mtp_xfer_param_to_m3ua_dh (struct m3ua_data_hdr *mdh, const struct osmo_mtp_transfer_param *param)
void | m3ua_dh_to_xfer_param (struct osmo_mtp_transfer_param *param, const struct m3ua_data_hdr *mdh)
struct msgb * | m3ua_msgb_alloc (const char *name)
struct xua_msg * | m3ua_xfer_from_data (const struct m3ua_data_hdr *data_hdr, const uint8_t *data, unsigned int data_len)
static struct xua_msg * | m3ua_gen_error (uint32_t err_code)
static struct xua_msg * | m3ua_gen_error_msg (uint32_t err_code, struct msgb *msg)
struct xua_msg * | m3ua_encode_notify (const struct osmo_xlm_prim_notify *npar)
int | m3ua_decode_notify (struct osmo_xlm_prim_notify *npar, void *ctx, const struct xua_msg *xua)
struct msgb * | m3ua_to_msg (struct xua_msg *xua)
static int | m3ua_tx_xua_asp (struct osmo_ss7_asp *asp, struct xua_msg *xua)
int | m3ua_tx_xua_as (struct osmo_ss7_as *as, struct xua_msg *xua)
| Send a given xUA message via a given M3UA Application Server. More...
struct m3ua_data_hdr * | data_hdr_from_m3ua (const struct xua_msg *xua)
static int | m3ua_rx_xfer (struct osmo_ss7_asp *asp, struct xua_msg *xua)
static int | m3ua_rx_mgmt_err (struct osmo_ss7_asp *asp, struct xua_msg *xua)
static int | m3ua_rx_mgmt_ntfy (struct osmo_ss7_asp *asp, struct xua_msg *xua)
static int | m3ua_rx_mgmt (struct osmo_ss7_asp *asp, struct xua_msg *xua)
static int | m3ua_rx_asp (struct osmo_ss7_asp *asp, struct xua_msg *xua)
static int | m3ua_rx_snm (struct osmo_ss7_asp *asp, struct xua_msg *xua)
int | m3ua_rx_msg (struct osmo_ss7_asp *asp, struct msgb *msg)
| process M3UA message received from socket More...
struct xua_msg * | m3ua_encode_duna (const uint32_t *rctx, unsigned int num_rctx, const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_string)
static struct xua_msg * | m3ua_encode_dava (const uint32_t *rctx, unsigned int num_rctx, const uint32_t *aff_pc, unsigned int num_aff_pc, const char *info_string)
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, const char *info_string)
struct xua_msg * | m3ua_encode_dupu (const uint32_t *rctx, unsigned int num_rctx, uint32_t dpc, uint16_t user, uint16_t cause, const char *info_string)
void | m3ua_tx_snm_available (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, bool available)
| Transmit SSNM DUNA/DAVA message indicating [un]availability of certain point code[s]. More...
void | m3ua_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 *concerned_dpc, const uint8_t *cong_level, const char *info_string)
| Transmit SSNM SCON message indicating congestion. More...
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)
| Transmit SSNM DAUD message requesting [un]availability status of certain point code[s]. More...
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)
| Transmit SSNM DUPU message indicating user unavailability. More...
static int | m3ua_rx_snm_asp (struct osmo_ss7_asp *asp, struct xua_msg *xua)
static int | m3ua_rx_snm_sg (struct osmo_ss7_asp *asp, struct xua_msg *xua)
static int | m3ua_rx_snm_ipsp (struct osmo_ss7_asp *asp, struct xua_msg *xua)

## Variables
const struct value_string | m3ua_err_names []
const struct value_string | m3ua_ntfy_type_names []
const struct value_string | m3ua_ntfy_stchg_names []
const struct value_string | m3ua_ntfy_other_names []
static const struct value_string | m3ua_iei_names []
static const uint16_t | data_mand_ies []
static const struct value_string | m3ua_xfer_msgt_names []
static const struct xua_msg_class | msg_class_xfer
static const uint16_t | duna_mand_ies []
static const uint16_t | dava_mand_ies []
static const uint16_t | daud_mand_ies []
static const uint16_t | scon_mand_ies []
static const uint16_t | dupu_mand_ies []
static const uint16_t | drst_mand_ies []
const struct value_string | m3ua_snm_msgt_names []
const struct xua_msg_class | m3ua_msg_class_snm
static const struct value_string | m3ua_aspsm_msgt_names []
const struct xua_msg_class | m3ua_msg_class_aspsm
const struct value_string | m3ua_asptm_msgt_names []
const struct xua_msg_class | m3ua_msg_class_asptm
static const uint16_t | err_req_ies []
static const uint16_t | ntfy_req_ies []
static const struct value_string | m3ua_mgmt_msgt_names []
const struct xua_msg_class | m3ua_msg_class_mgmt
static const uint16_t | reg_req_ies []
static const uint16_t | reg_rsp_ies []
static const uint16_t | dereg_req_ies []
static const uint16_t | dereg_rsp_ies []
const struct value_string | m3ua_rkm_msgt_names []
const struct xua_msg_class | m3ua_msg_class_rkm
const struct xua_dialect | xua_dialect_m3ua
static const struct xua_msg_event_map | m3ua_aspxm_map []

## Macro Definition Documentation

## ◆ M3UA_MSGB_SIZE

#define M3UA_MSGB_SIZE 1500

## ◆ MAND_IES

#define MAND_IES | ( |  | msgt,
|  |  | ies
| ) |  | [msgt] = (ies)

## Function Documentation

## ◆ data_hdr_from_m3ua()

struct m3ua_data_hdr * data_hdr_from_m3ua | ( | const struct xua_msg * | xua | ) |

References xua_msg_part::dat, xua_msg::hdr, M3UA_IEI_PROT_DATA, M3UA_MSGC_XFER, M3UA_XFER_DATA, xua_common_hdr::msg_class, xua_common_hdr::msg_type, NULL, and xua_msg_find_tag().

Referenced by mtp3_hmdt_message_for_distribution().

## ◆ m3ua_decode_notify()

int m3ua_decode_notify | ( | struct osmo_xlm_prim_notify * | npar,
|  | void * | ctx,
|  | const struct xua_msg * | xua
| ) |  |

References osmo_xlm_prim_notify::asp_id, xua_msg_part::dat, osmo_xlm_prim_notify::info_string, xua_msg_part::len, M3UA_IEI_ASP_ID, M3UA_IEI_INFO_STRING, M3UA_IEI_ROUTE_CTX, M3UA_IEI_STATUS, NOTIFY_PAR_P_ASP_ID, NOTIFY_PAR_P_ROUTE_CTX, NULL, osmo_xlm_prim_notify::presence, osmo_xlm_prim_notify::route_ctx, osmo_xlm_prim_notify::route_ctx_count, osmo_xlm_prim_notify::status_info, osmo_xlm_prim_notify::status_type, xua_msg_find_tag(), and xua_msg_part_get_u32().

Referenced by m3ua_rx_mgmt_ntfy(), and sua_rx_mgmt_ntfy().

## ◆ m3ua_dh_to_xfer_param()

void m3ua_dh_to_xfer_param | ( | struct osmo_mtp_transfer_param * | param,
|  | const struct m3ua_data_hdr * | mdh
| ) |  |

References osmo_mtp_transfer_param::dpc, m3ua_data_hdr::dpc, m3ua_data_hdr::mp, m3ua_data_hdr::ni, osmo_mtp_transfer_param::opc, m3ua_data_hdr::opc, m3ua_data_hdr::si, osmo_mtp_transfer_param::sio, osmo_mtp_transfer_param::sls, and m3ua_data_hdr::sls.

Referenced by ipa_rx_msg_up(), m3ua_rx_xfer(), and m3ua_to_xfer_ind().

## ◆ m3ua_encode_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,
|  | const char * | info_string
| ) |  |
| static

References xua_msg::hdr, m3ua_encode_duna(), M3UA_SNM_DAUD, and xua_common_hdr::msg_type.

Referenced by m3ua_tx_snm_daud().

## ◆ m3ua_encode_dava()

static struct xua_msg * m3ua_encode_dava | ( | const uint32_t * | rctx,
|  | unsigned int | num_rctx,
|  | const uint32_t * | aff_pc,
|  | unsigned int | num_aff_pc,
|  | const char * | info_string
| ) |  |
| static

References xua_msg::hdr, m3ua_encode_duna(), M3UA_SNM_DAVA, and xua_common_hdr::msg_type.

Referenced by m3ua_tx_snm_available().

## ◆ m3ua_encode_duna()

struct xua_msg * m3ua_encode_duna | ( | const uint32_t * | rctx,
|  | unsigned int | num_rctx,
|  | const uint32_t * | aff_pc,
|  | unsigned int | num_aff_pc,
|  | const char * | info_string
| ) |  |

References xua_msg::hdr, M3UA_IEI_AFFECTED_PC, M3UA_IEI_INFO_STRING, M3UA_IEI_ROUTE_CTX, M3UA_MSGC_SNM, M3UA_SNM_DUNA, M3UA_VERSION, xua_common_hdr::version, XUA_HDR, xua_msg_add_data(), and xua_msg_alloc().

Referenced by gen_duna_ret_msg(), m3ua_encode_daud(), m3ua_encode_dava(), and m3ua_tx_snm_available().

## ◆ m3ua_encode_dupu()

struct xua_msg * m3ua_encode_dupu | ( | const uint32_t * | rctx,
|  | unsigned int | num_rctx,
|  | uint32_t | dpc,
|  | uint16_t | user,
|  | uint16_t | cause,
|  | const char * | info_string
| ) |  |

References dpc, xua_msg::hdr, M3UA_IEI_AFFECTED_PC, M3UA_IEI_INFO_STRING, M3UA_IEI_ROUTE_CTX, M3UA_IEI_USER_CAUSE, M3UA_MSGC_SNM, M3UA_SNM_DUPU, M3UA_VERSION, xua_common_hdr::version, XUA_HDR, xua_msg_add_data(), xua_msg_add_u32(), and xua_msg_alloc().

Referenced by gen_dupu_ret_msg(), and m3ua_tx_dupu().

## ◆ m3ua_encode_notify()

struct xua_msg * m3ua_encode_notify | ( | const struct osmo_xlm_prim_notify * | npar | ) |

References osmo_xlm_prim_notify::asp_id, xua_msg::hdr, osmo_xlm_prim_notify::info_string, M3UA_IEI_ASP_ID, M3UA_IEI_INFO_STRING, M3UA_IEI_ROUTE_CTX, M3UA_IEI_STATUS, M3UA_MGMT_NTFY, M3UA_MSGC_MGMT, M3UA_NOTIFY, NOTIFY_PAR_P_ASP_ID, NOTIFY_PAR_P_ROUTE_CTX, osmo_xlm_prim_notify::presence, osmo_xlm_prim_notify::route_ctx, osmo_xlm_prim_notify::route_ctx_count, osmo_xlm_prim_notify::status_info, osmo_xlm_prim_notify::status_type, XUA_HDR, xua_msg_add_data(), xua_msg_add_u32(), xua_msg_add_u32_data(), and xua_msg_alloc().

Referenced by encode_notify().

## ◆ m3ua_gen_error()

static struct xua_msg * m3ua_gen_error | ( | uint32_t | err_code | ) |
| static

References xua_msg::hdr, M3UA_IEI_ERR_CODE, M3UA_MGMT_ERR, M3UA_MSGC_MGMT, M3UA_VERSION, NULL, xua_common_hdr::version, XUA_HDR, xua_msg_add_u32(), and xua_msg_alloc().

Referenced by m3ua_gen_error_msg().

## ◆ m3ua_gen_error_msg()

static struct xua_msg * m3ua_gen_error_msg | ( | uint32_t | err_code,
|  | struct msgb * | msg
| ) |  |
| static

References err, M3UA_ERR_INVAL_NET_APPEAR, M3UA_ERR_INVAL_ROUT_CTX, m3ua_gen_error(), M3UA_IEI_DIAG_INFO, M3UA_IEI_NET_APPEAR, M3UA_IEI_ROUTE_CTX, M3UA_VERSION, NULL, xua_from_msg(), xua_msg_add_data(), xua_msg_copy_part(), and xua_msg_free().

Referenced by m3ua_rx_msg().

## ◆ m3ua_msgb_alloc()

struct msgb * m3ua_msgb_alloc | ( | const char * | name | ) |

References M3UA_MSG_HEADROOM, and M3UA_MSG_SIZE.

Referenced by m3ua_rx_rkm_dereg_req(), m3ua_rx_rkm_reg_req(), mtp_prim_msgb_alloc(), mtp_prim_xfer_ind_alloc(), xua_rkm_send_dereg_req(), and xua_rkm_send_reg_req().

## ◆ m3ua_ntfy_info_name()

const char * m3ua_ntfy_info_name | ( | uint16_t | ntfy_status_type,
|  | uint16_t | ntfy_status_info
| ) |  |

References M3UA_NOTIFY_T_OTHER, M3UA_NOTIFY_T_STATCHG, m3ua_ntfy_other_names, and m3ua_ntfy_stchg_names.

Referenced by as_notify_all_asp(), m3ua_rx_mgmt_ntfy(), and tx_notify().

## ◆ m3ua_rx_asp()

static int m3ua_rx_asp | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |
| static

References xua_msg_event_map::event, osmo_ss7_asp::fi, m3ua_aspxm_map, M3UA_ERR_UNEXPECTED_MSG, M3UA_ERR_UNSUPP_MSG_TYPE, xua_msg_event_map(), and xua_msg_free().

Referenced by m3ua_rx_msg().

## ◆ m3ua_rx_mgmt()

static int m3ua_rx_mgmt | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |
| static

References xua_msg::hdr, M3UA_ERR_UNSUPP_MSG_TYPE, M3UA_MGMT_ERR, M3UA_MGMT_NTFY, m3ua_rx_mgmt_err(), m3ua_rx_mgmt_ntfy(), xua_common_hdr::msg_type, and xua_msg_free().

Referenced by m3ua_rx_msg().

## ◆ m3ua_rx_mgmt_err()

static int m3ua_rx_mgmt_err | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |
| static

References osmo_ss7_asp::fi, LOGPASP, m3ua_err_names, M3UA_IEI_ERR_CODE, XUA_ASP_E_MGMT_ERROR, xua_dialect_m3ua, xua_msg_dump(), and xua_msg_get_u32().

Referenced by m3ua_rx_mgmt().

## ◆ m3ua_rx_mgmt_ntfy()

static int m3ua_rx_mgmt_ntfy | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |
| static

References osmo_xlm_prim_notify::info_string, LOGPASP, m3ua_decode_notify(), m3ua_ntfy_info_name(), m3ua_ntfy_type_names, osmo_xlm_prim_notify::status_info, osmo_xlm_prim_notify::status_type, xua_asp_send_xlm_prim(), and xua_xlm_prim_alloc_m_notify_ind().

Referenced by m3ua_rx_mgmt().

## ◆ m3ua_rx_msg()

int m3ua_rx_msg | ( | struct osmo_ss7_asp * | asp,
|  | struct msgb * | msg
| ) |  |

process M3UA message received from socket

Parameters

  [in] | asp | Application Server Process receiving msg
  [in] | msg | received message buffer

Returns
  0 on success; negative on error

References osmo_ss7_asp::cfg, xua_common_hdr::data, err, xua_msg::hdr, LOGPASP, M3UA_ERR_INVAL_STREAM_ID, M3UA_ERR_INVALID_VERSION, M3UA_ERR_MISSING_PARAM, M3UA_ERR_PARAM_FIELD_ERR, M3UA_ERR_UNSUPP_MSG_CLASS, m3ua_gen_error_msg(), M3UA_MSGC_ASPSM, M3UA_MSGC_ASPTM, M3UA_MSGC_MGMT, M3UA_MSGC_RKM, M3UA_MSGC_SNM, M3UA_MSGC_XFER, m3ua_rx_asp(), m3ua_rx_mgmt(), m3ua_rx_rkm(), m3ua_rx_snm(), m3ua_rx_xfer(), m3ua_tx_xua_asp(), M3UA_VERSION, xua_common_hdr::msg_class, NULL, OSMO_SS7_ASP_PROT_M3UA, osmo_ss7_asp::proto, xua_common_hdr::version, xua_dialect_check_all_mand_ies(), xua_dialect_m3ua, xua_from_msg(), xua_hdr_dump(), and xua_msg_free().

Referenced by m3ua_tcp_rx_msg(), and xua_rx_msg().

## ◆ m3ua_rx_snm()

static int m3ua_rx_snm | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |
| static

References osmo_ss7_asp::cfg, osmo_ss7_asp::fi, xua_msg::hdr, xua_msg_part::len, LOGPASP, M3UA_ERR_INVAL_NET_APPEAR, M3UA_ERR_PARAM_FIELD_ERR, M3UA_ERR_UNEXPECTED_MSG, M3UA_ERR_UNSUPP_MSG_CLASS, M3UA_IEI_NET_APPEAR, m3ua_rx_snm_asp(), m3ua_rx_snm_ipsp(), m3ua_rx_snm_sg(), m3ua_xfer_msgt_names, xua_common_hdr::msg_type, osmo_ss7_asp_active(), OSMO_SS7_ASP_QUIRK_SNM_INACTIVE, OSMO_SS7_ASP_ROLE_ASP, OSMO_SS7_ASP_ROLE_IPSP, OSMO_SS7_ASP_ROLE_SG, osmo_ss7_asp::quirks, osmo_ss7_asp::role, XUA_ASP_S_INACTIVE, xua_msg_find_tag(), xua_msg_free(), and xua_msg_part_get_u32().

Referenced by m3ua_rx_msg().

## ◆ m3ua_rx_snm_asp()

static int m3ua_rx_snm_asp | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |
| static

References osmo_ss7_asp::cfg, xua_msg::hdr, LOGPASP, M3UA_ERR_UNSUPP_MSG_TYPE, M3UA_IEI_ROUTE_CTX, M3UA_SNM_DAUD, M3UA_SNM_DAVA, M3UA_SNM_DRST, M3UA_SNM_DUNA, M3UA_SNM_DUPU, m3ua_snm_msgt_names, M3UA_SNM_SCON, xua_common_hdr::msg_type, NULL, OSMO_SS7_ASP_QUIRK_DAUD_IN_ASP, osmo_ss7_asp::quirks, xua_find_as_for_asp(), xua_msg_find_tag(), xua_snm_rx_daud(), xua_snm_rx_dava(), xua_snm_rx_duna(), xua_snm_rx_dupu(), and xua_snm_rx_scon().

Referenced by m3ua_rx_snm().

## ◆ m3ua_rx_snm_ipsp()

static int m3ua_rx_snm_ipsp | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |
| static

References osmo_ss7_asp::cfg, xua_msg::hdr, LOGPASP, M3UA_ERR_UNSUPP_MSG_TYPE, M3UA_IEI_ROUTE_CTX, M3UA_SNM_DAUD, m3ua_snm_msgt_names, M3UA_SNM_SCON, xua_common_hdr::msg_type, NULL, OSMO_SS7_ASP_QUIRK_DAUD_IN_ASP, osmo_ss7_asp::quirks, xua_find_as_for_asp(), xua_msg_find_tag(), xua_snm_rx_daud(), and xua_snm_rx_scon().

Referenced by m3ua_rx_snm().

## ◆ m3ua_rx_snm_sg()

static int m3ua_rx_snm_sg | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |
| static

References xua_msg::hdr, LOGPASP, M3UA_ERR_UNSUPP_MSG_TYPE, M3UA_IEI_ROUTE_CTX, M3UA_SNM_DAUD, m3ua_snm_msgt_names, M3UA_SNM_SCON, xua_common_hdr::msg_type, NULL, xua_find_as_for_asp(), xua_msg_find_tag(), xua_snm_rx_daud(), and xua_snm_rx_scon().

Referenced by m3ua_rx_snm().

## ◆ m3ua_rx_xfer()

static int m3ua_rx_xfer | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |
| static

References osmo_ss7_asp::cfg, osmo_ss7_instance::cfg, osmo_ss7_as::ctrg, osmo_ss7_asp::ctrg, osmo_ss7_instance::ctrg, xua_msg_part::dat, osmo_mtp_transfer_param::dpc, osmo_ss7_as::fi, xua_msg::hdr, osmo_ss7_asp::inst, xua_msg_part::len, LOGPAS, LOGPASP, m3ua_dh_to_xfer_param(), M3UA_ERR_INVAL_NET_APPEAR, M3UA_ERR_PARAM_FIELD_ERR, M3UA_ERR_UNEXPECTED_MSG, M3UA_ERR_UNSUPP_MSG_TYPE, M3UA_IEI_NET_APPEAR, M3UA_IEI_PROT_DATA, M3UA_IEI_ROUTE_CTX, M3UA_XFER_DATA, m3ua_xfer_msgt_names, xua_common_hdr::msg_type, xua_msg::mtp, mtp3_hmdc_rx_from_l2(), mtp3_hmdt_message_for_distribution(), osmo_ss7_instance::network_indicator, m3ua_data_hdr::ni, osmo_mtp_transfer_param::opc, osmo_ss7_as_active(), OSMO_SS7_ASP_ROLE_IPSP, osmo_ss7_pointcode_print(), osmo_ss7_pointcode_print2(), osmo_ss7_asp::role, osmo_mtp_transfer_param::sls, SS7_AS_CTR_RX_MSU_DISCARD, SS7_AS_CTR_RX_MSU_SLS_0, SS7_AS_CTR_RX_MSU_TOTAL, SS7_ASP_CTR_PKT_RX_NI_MISMATCH, SS7_INST_CTR_PKT_RX_NI_MISMATCH, xua_dialect_sua, xua_find_as_for_asp(), xua_hdr_dump(), xua_msg_find_tag(), xua_msg_free(), xua_msg_free_tag(), and xua_msg_part_get_u32().

Referenced by m3ua_rx_msg().

## ◆ m3ua_to_msg()

struct msgb * m3ua_to_msg | ( | struct xua_msg * | xua | ) |

References xua_msg::hdr, M3UA_MSGC_XFER, M3UA_PPID, M3UA_VERSION, xua_common_hdr::msg_class, NULL, and xua_to_msg().

Referenced by m3ua_tx_xua_asp(), and xua_as_encode_msg().

## ◆ m3ua_tx_dupu()

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
| ) |  |

Transmit SSNM DUPU message indicating user unavailability.

Parameters

  [in] | asp | ASP through which to transmit message. Must be ACTIVE.
  [in] | rctx | array of Routing Contexts in network byte order.
  [in] | num_rctx | number of rctx
  [in] | dpc | affected point code
  [in] | user | the user (SI) that is unavailable
  [in] | cause | the cause of the user unavailability
  [in] | info_string | optional information string (can be NULL).

References dpc, m3ua_encode_dupu(), and m3ua_tx_xua_asp().

Referenced by xua_tx_upu().

## ◆ m3ua_tx_snm_available()

void m3ua_tx_snm_available | ( | 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,
|  | bool | available
| ) |  |

Transmit SSNM DUNA/DAVA message indicating [un]availability of certain point code[s].

Parameters

  [in] | asp | ASP through which to transmit message. Must be ACTIVE.
  [in] | rctx | array of Routing Contexts in network byte order.
  [in] | num_rctx | number of rctx
  [in] | aff_pc | array of 'Affected Point Code' in network byte order.
  [in] | num_aff_pc | number of aff_pc
  [in] | info_string | optional information string (can be NULL).
  [in] | available | are aff_pc now available (true) or unavailable (false)

References m3ua_encode_dava(), m3ua_encode_duna(), and m3ua_tx_xua_asp().

Referenced by xua_tx_snm_available().

## ◆ m3ua_tx_snm_congestion()

void m3ua_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 * | concerned_dpc,
|  | const uint8_t * | cong_level,
|  | const char * | info_string
| ) |  |

Transmit SSNM SCON message indicating congestion.

Parameters

  [in] | asp | ASP through which to transmit message. Must be ACTIVE.
  [in] | rctx | array of Routing Contexts in network byte order.
  [in] | num_rctx | number of rctx
  [in] | aff_pc | array of 'Affected Point Code' in network byte order.
  [in] | num_aff_pc | number of aff_pc
  [in] | concerned_dpc | optional concerned DPC (can be NULL)
  [in] | cong_level | optional congestion level (can be NULL)
  [in] | info_string | optional information string (can be NULL).

References xua_msg::hdr, M3UA_IEI_AFFECTED_PC, M3UA_IEI_CONC_DEST, M3UA_IEI_CONG_IND, M3UA_IEI_INFO_STRING, M3UA_IEI_ROUTE_CTX, M3UA_MSGC_SNM, M3UA_SNM_SCON, m3ua_tx_xua_asp(), M3UA_VERSION, xua_common_hdr::version, XUA_HDR, xua_msg_add_data(), xua_msg_add_u32(), and xua_msg_alloc().

Referenced by xua_tx_scon().

## ◆ m3ua_tx_snm_daud()

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
| ) |  |

Transmit SSNM DAUD message requesting [un]availability status of certain point code[s].

Parameters

  [in] | asp | ASP through which to transmit message. Must be ACTIVE.
  [in] | rctx | array of Routing Contexts in network byte order.
  [in] | num_rctx | number of rctx
  [in] | aff_pc | array of 'Affected Point Code' in network byte order.
  [in] | num_aff_pc | number of aff_pc
  [in] | info_string | optional information string (can be NULL).

References m3ua_encode_daud(), and m3ua_tx_xua_asp().

Referenced by xua_tx_snm_daud().

## ◆ m3ua_tx_xua_as()

int m3ua_tx_xua_as | ( | struct osmo_ss7_as * | as,
|  | struct xua_msg * | xua
| ) |  |

Send a given xUA message via a given M3UA Application Server.

Parameters

  [in] | as | Application Server through which to send xua
  [in] | xua | xUA message to be sent

Returns
  0 on success; negative on error

This function takes ownership of xua msg passed to it.

References osmo_ss7_as::cfg, osmo_ss7_routing_key::context, osmo_ss7_as::fi, M3UA_IEI_ROUTE_CTX, OSMO_SS7_ASP_PROT_M3UA, osmo_ss7_as::proto, osmo_ss7_as::routing_key, XUA_AS_E_TRANSFER_REQ, xua_msg_add_u32(), and xua_msg_free().

Referenced by mtp3_hmdt_rx_msg_for_local_unavailable_part(), mtp3_hmrt_message_for_routing(), and mtp3_rtpc_rx_msg_for_inaccessible_sp().

## ◆ m3ua_tx_xua_asp()

static int m3ua_tx_xua_asp | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |
| static

References osmo_ss7_asp::cfg, m3ua_to_msg(), OSMO_SS7_ASP_PROT_M3UA, osmo_ss7_asp_send(), osmo_ss7_asp::proto, and xua_msg_free().

Referenced by m3ua_rx_msg(), m3ua_tx_dupu(), m3ua_tx_snm_available(), m3ua_tx_snm_congestion(), and m3ua_tx_snm_daud().

## ◆ m3ua_xfer_from_data()

struct xua_msg * m3ua_xfer_from_data | ( | const struct m3ua_data_hdr * | data_hdr,
|  | const uint8_t * | data,
|  | unsigned int | data_len
| ) |  |

References xua_msg_part::dat, data, xua_msg_part::entry, xua_msg::hdr, xua_msg::headers, xua_msg_part::len, M3UA_IEI_PROT_DATA, M3UA_MSGC_XFER, M3UA_XFER_DATA, xua_msg_part::tag, XUA_HDR, and xua_msg_alloc().

Referenced by ipa_rx_msg_up(), and mtp3_hmrt_mtp_xfer_request_l4_to_l3().

## ◆ mtp_xfer_param_to_m3ua_dh()

void mtp_xfer_param_to_m3ua_dh | ( | struct m3ua_data_hdr * | mdh,
|  | const struct osmo_mtp_transfer_param * | param
| ) |  |

References osmo_mtp_transfer_param::dpc, m3ua_data_hdr::dpc, m3ua_data_hdr::mp, m3ua_data_hdr::ni, osmo_mtp_transfer_param::opc, m3ua_data_hdr::opc, m3ua_data_hdr::si, osmo_mtp_transfer_param::sio, osmo_mtp_transfer_param::sls, and m3ua_data_hdr::sls.

Referenced by mtp3_hmrt_mtp_xfer_request_l4_to_l3().

## Variable Documentation

## ◆ data_mand_ies

const uint16_t data_mand_ies[]
| static

Initial value:
= {
M3UA_IEI_PROT_DATA, 0
}
M3UA_IEI_PROT_DATA
#define M3UA_IEI_PROT_DATA
Definition: m3ua.h:90

## ◆ daud_mand_ies

const uint16_t daud_mand_ies[]
| static

Initial value:
= {
M3UA_IEI_AFFECTED_PC, 0
}
M3UA_IEI_AFFECTED_PC
#define M3UA_IEI_AFFECTED_PC
Definition: m3ua.h:74

## ◆ dava_mand_ies

const uint16_t dava_mand_ies[]
| static

Initial value:
= {
M3UA_IEI_AFFECTED_PC, 0
}

## ◆ dereg_req_ies

const uint16_t dereg_req_ies[]
| static

Initial value:
= {
M3UA_IEI_ROUTE_CTX, 0
}
M3UA_IEI_ROUTE_CTX
#define M3UA_IEI_ROUTE_CTX
Definition: m3ua.h:67

## ◆ dereg_rsp_ies

const uint16_t dereg_rsp_ies[]
| static

Initial value:
= {
M3UA_IEI_DEREG_RESULT, 0
}
M3UA_IEI_DEREG_RESULT
#define M3UA_IEI_DEREG_RESULT
Definition: m3ua.h:85

## ◆ drst_mand_ies

const uint16_t drst_mand_ies[]
| static

Initial value:
= {
M3UA_IEI_AFFECTED_PC, 0
}

## ◆ duna_mand_ies

const uint16_t duna_mand_ies[]
| static

Initial value:
= {
M3UA_IEI_AFFECTED_PC, 0
}

## ◆ dupu_mand_ies

const uint16_t dupu_mand_ies[]
| static

Initial value:
= {
M3UA_IEI_AFFECTED_PC, M3UA_IEI_USER_CAUSE, 0
}
M3UA_IEI_USER_CAUSE
#define M3UA_IEI_USER_CAUSE
Definition: m3ua.h:80

## ◆ err_req_ies

const uint16_t err_req_ies[]
| static

Initial value:
= {
M3UA_IEI_ERR_CODE, 0
}
M3UA_IEI_ERR_CODE
#define M3UA_IEI_ERR_CODE
Definition: m3ua.h:71

## ◆ m3ua_aspsm_msgt_names

const struct value_string m3ua_aspsm_msgt_names[]
| static

Initial value:
= {
{ M3UA_ASPSM_UP, "UP" },
{ M3UA_ASPSM_DOWN, "DOWN" },
{ M3UA_ASPSM_BEAT, "BEAT" },
{ M3UA_ASPSM_UP_ACK, "UP-ACK" },
{ M3UA_ASPSM_DOWN_ACK, "DOWN-ACK" },
{ M3UA_ASPSM_BEAT_ACK, "BEAT-ACK" },
{ 0, NULL }
}
M3UA_ASPSM_BEAT_ACK
#define M3UA_ASPSM_BEAT_ACK
Definition: m3ua.h:54
M3UA_ASPSM_DOWN
#define M3UA_ASPSM_DOWN
Definition: m3ua.h:50
M3UA_ASPSM_DOWN_ACK
#define M3UA_ASPSM_DOWN_ACK
Definition: m3ua.h:53
M3UA_ASPSM_UP
#define M3UA_ASPSM_UP
Definition: m3ua.h:49
M3UA_ASPSM_UP_ACK
#define M3UA_ASPSM_UP_ACK
Definition: m3ua.h:52
M3UA_ASPSM_BEAT
#define M3UA_ASPSM_BEAT
Definition: m3ua.h:51
NULL
int and can be left NULL
Definition: osmo_ss7.h:353

## ◆ m3ua_asptm_msgt_names

const struct value_string m3ua_asptm_msgt_names[]

Initial value:
= {
{ M3UA_ASPTM_ACTIVE, "ACTIVE" },
{ M3UA_ASPTM_INACTIVE, "INACTIVE" },
{ M3UA_ASPTM_ACTIVE_ACK,"ACTIVE-ACK" },
{ M3UA_ASPTM_INACTIVE_ACK, "INACTIVE-ACK" },
{ 0, NULL }
}
M3UA_ASPTM_ACTIVE_ACK
#define M3UA_ASPTM_ACTIVE_ACK
Definition: m3ua.h:58
M3UA_ASPTM_INACTIVE
#define M3UA_ASPTM_INACTIVE
Definition: m3ua.h:57
M3UA_ASPTM_INACTIVE_ACK
#define M3UA_ASPTM_INACTIVE_ACK
Definition: m3ua.h:59
M3UA_ASPTM_ACTIVE
#define M3UA_ASPTM_ACTIVE
Definition: m3ua.h:56

## ◆ m3ua_aspxm_map

const struct xua_msg_event_map m3ua_aspxm_map[]
| static

Initial value:
= {
{ M3UA_MSGC_ASPSM, M3UA_ASPSM_UP, XUA_ASP_E_ASPSM_ASPUP },
{ M3UA_MSGC_ASPSM, M3UA_ASPSM_DOWN, XUA_ASP_E_ASPSM_ASPDN },
{ M3UA_MSGC_ASPSM, M3UA_ASPSM_BEAT, XUA_ASP_E_ASPSM_BEAT },
{ M3UA_MSGC_ASPSM, M3UA_ASPSM_UP_ACK, XUA_ASP_E_ASPSM_ASPUP_ACK },
{ M3UA_MSGC_ASPSM, M3UA_ASPSM_DOWN_ACK, XUA_ASP_E_ASPSM_ASPDN_ACK },
{ M3UA_MSGC_ASPSM, M3UA_ASPSM_BEAT_ACK, XUA_ASP_E_ASPSM_BEAT_ACK },
{ M3UA_MSGC_ASPTM, M3UA_ASPTM_ACTIVE, XUA_ASP_E_ASPTM_ASPAC },
{ M3UA_MSGC_ASPTM, M3UA_ASPTM_INACTIVE, XUA_ASP_E_ASPTM_ASPIA },
{ M3UA_MSGC_ASPTM, M3UA_ASPTM_ACTIVE_ACK, XUA_ASP_E_ASPTM_ASPAC_ACK },
{ M3UA_MSGC_ASPTM, M3UA_ASPTM_INACTIVE_ACK, XUA_ASP_E_ASPTM_ASPIA_ACK },
}
M3UA_MSGC_ASPTM
#define M3UA_MSGC_ASPTM
Definition: m3ua.h:33
M3UA_MSGC_ASPSM
#define M3UA_MSGC_ASPSM
Definition: m3ua.h:32
XUA_ASP_E_ASPTM_ASPAC_ACK
@ XUA_ASP_E_ASPTM_ASPAC_ACK
Definition: xua_asp_fsm.h:22
XUA_ASP_E_ASPSM_BEAT_ACK
@ XUA_ASP_E_ASPSM_BEAT_ACK
Definition: xua_asp_fsm.h:29
XUA_ASP_E_ASPSM_ASPDN
@ XUA_ASP_E_ASPSM_ASPDN
Definition: xua_asp_fsm.h:23
XUA_ASP_E_ASPSM_ASPUP
@ XUA_ASP_E_ASPSM_ASPUP
Definition: xua_asp_fsm.h:19
XUA_ASP_E_ASPSM_ASPDN_ACK
@ XUA_ASP_E_ASPSM_ASPDN_ACK
Definition: xua_asp_fsm.h:24
XUA_ASP_E_ASPSM_ASPUP_ACK
@ XUA_ASP_E_ASPSM_ASPUP_ACK
Definition: xua_asp_fsm.h:20
XUA_ASP_E_ASPTM_ASPAC
@ XUA_ASP_E_ASPTM_ASPAC
Definition: xua_asp_fsm.h:21
XUA_ASP_E_ASPTM_ASPIA_ACK
@ XUA_ASP_E_ASPTM_ASPIA_ACK
Definition: xua_asp_fsm.h:26
XUA_ASP_E_ASPTM_ASPIA
@ XUA_ASP_E_ASPTM_ASPIA
Definition: xua_asp_fsm.h:25
XUA_ASP_E_ASPSM_BEAT
@ XUA_ASP_E_ASPSM_BEAT
Definition: xua_asp_fsm.h:28

Referenced by m3ua_rx_asp().

## ◆ m3ua_err_names

const struct value_string m3ua_err_names[]

Initial value:
= {
{ M3UA_ERR_INVALID_VERSION, "Invalid Version" },
{ M3UA_ERR_UNSUPP_MSG_CLASS, "Unsupported Message Class" },
{ M3UA_ERR_UNSUPP_MSG_TYPE, "Unsupported Message Type" },
{ M3UA_ERR_UNSUPP_TRAF_MOD_TYP, "Unsupported Traffic Mode Type" },
{ M3UA_ERR_UNEXPECTED_MSG, "Unexpected Message" },
{ M3UA_ERR_PROTOCOL_ERR, "Protocol Error" },
{ M3UA_ERR_INVAL_STREAM_ID, "Invalid Stream Identifier" },
{ M3UA_ERR_REFUSED_MGMT_BLOCKING, "Refused - Management Blocking" },
{ M3UA_ERR_ASP_ID_REQD, "ASP Identifier Required" },
{ M3UA_ERR_INVAL_ASP_ID, "Invalid ASP Identifier" },
{ M3UA_ERR_INVAL_PARAM_VAL, "Invalid Parameter Value" },
{ M3UA_ERR_PARAM_FIELD_ERR, "Parameter Field Error" },
{ M3UA_ERR_UNEXP_PARAM, "Unexpected Parameter" },
{ M3UA_ERR_DEST_STATUS_UNKN, "Destination Status Unknown" },
{ M3UA_ERR_INVAL_NET_APPEAR, "Invalid Network Appearance" },
{ M3UA_ERR_MISSING_PARAM, "Missing Parameter" },
{ M3UA_ERR_INVAL_ROUT_CTX, "Invalid Routing Context" },
{ M3UA_ERR_NO_CONFGD_AS_FOR_ASP,"No Configured AS for ASP" },
{ SUA_ERR_SUBSYS_STATUS_UNKN, "Subsystem Status Unknown" },
{ SUA_ERR_INVAL_LOADSH_LEVEL, "Invalid loadsharing level" },
{ 0, NULL }
}
M3UA_ERR_INVAL_STREAM_ID
@ M3UA_ERR_INVAL_STREAM_ID
Definition: m3ua.h:155
M3UA_ERR_INVALID_VERSION
@ M3UA_ERR_INVALID_VERSION
Definition: m3ua.h:147
M3UA_ERR_ASP_ID_REQD
@ M3UA_ERR_ASP_ID_REQD
Definition: m3ua.h:160
M3UA_ERR_INVAL_PARAM_VAL
@ M3UA_ERR_INVAL_PARAM_VAL
Definition: m3ua.h:163
M3UA_ERR_INVAL_NET_APPEAR
@ M3UA_ERR_INVAL_NET_APPEAR
Definition: m3ua.h:167
M3UA_ERR_PROTOCOL_ERR
@ M3UA_ERR_PROTOCOL_ERR
Definition: m3ua.h:153
M3UA_ERR_PARAM_FIELD_ERR
@ M3UA_ERR_PARAM_FIELD_ERR
Definition: m3ua.h:164
M3UA_ERR_UNEXPECTED_MSG
@ M3UA_ERR_UNEXPECTED_MSG
Definition: m3ua.h:152
M3UA_ERR_UNEXP_PARAM
@ M3UA_ERR_UNEXP_PARAM
Definition: m3ua.h:165
M3UA_ERR_INVAL_ASP_ID
@ M3UA_ERR_INVAL_ASP_ID
Definition: m3ua.h:161
M3UA_ERR_NO_CONFGD_AS_FOR_ASP
@ M3UA_ERR_NO_CONFGD_AS_FOR_ASP
Definition: m3ua.h:172
M3UA_ERR_UNSUPP_TRAF_MOD_TYP
@ M3UA_ERR_UNSUPP_TRAF_MOD_TYP
Definition: m3ua.h:151
M3UA_ERR_UNSUPP_MSG_TYPE
@ M3UA_ERR_UNSUPP_MSG_TYPE
Definition: m3ua.h:150
M3UA_ERR_MISSING_PARAM
@ M3UA_ERR_MISSING_PARAM
Definition: m3ua.h:168
M3UA_ERR_INVAL_ROUT_CTX
@ M3UA_ERR_INVAL_ROUT_CTX
Definition: m3ua.h:171
M3UA_ERR_REFUSED_MGMT_BLOCKING
@ M3UA_ERR_REFUSED_MGMT_BLOCKING
Definition: m3ua.h:159
M3UA_ERR_DEST_STATUS_UNKN
@ M3UA_ERR_DEST_STATUS_UNKN
Definition: m3ua.h:166
M3UA_ERR_UNSUPP_MSG_CLASS
@ M3UA_ERR_UNSUPP_MSG_CLASS
Definition: m3ua.h:149
SUA_ERR_INVAL_LOADSH_LEVEL
#define SUA_ERR_INVAL_LOADSH_LEVEL
Definition: sua.h:164
SUA_ERR_SUBSYS_STATUS_UNKN
#define SUA_ERR_SUBSYS_STATUS_UNKN
Definition: sua.h:163

Referenced by lm_active(), lm_inactive(), lm_rkm_reg(), lm_wait_asp_up(), m3ua_rx_mgmt_err(), peer_send_error_ext(), and sua_rx_mgmt_err().

## ◆ m3ua_iei_names

const struct value_string m3ua_iei_names[]
| static

Initial value:
= {
{ M3UA_IEI_INFO_STRING, "INFO String" },
{ M3UA_IEI_ROUTE_CTX, "Routing Context" },
{ M3UA_IEI_DIAG_INFO, "Diagnostic Info" },
{ M3UA_IEI_HEARDBT_DATA, "Heartbeat Data" },
{ M3UA_IEI_TRAF_MODE_TYP, "Traffic Mode Type" },
{ M3UA_IEI_ERR_CODE, "Error Code" },
{ M3UA_IEI_STATUS, "Status" },
{ M3UA_IEI_ASP_ID, "ASP Identifier" },
{ M3UA_IEI_AFFECTED_PC, "Affected Point Code" },
{ M3UA_IEI_CORR_ID, "Correlation Id" },
{ M3UA_IEI_NET_APPEAR, "Network Appearance" },
{ M3UA_IEI_USER_CAUSE, "User/Cause" },
{ M3UA_IEI_CONG_IND, "Congestion Indication" },
{ M3UA_IEI_CONC_DEST, "Concerned Destination" },
{ M3UA_IEI_ROUT_KEY, "Routing Key" },
{ M3UA_IEI_REG_RESULT, "Registration Result" },
{ M3UA_IEI_DEREG_RESULT, "De-Registration Result" },
{ M3UA_IEI_LOC_RKEY_ID, "Local Routing-Key Identifier" },
{ M3UA_IEI_DEST_PC, "Destination Point Code" },
{ M3UA_IEI_SVC_IND, "Service Indicators" },
{ M3UA_IEI_ORIG_PC, "Originating Point Code List" },
{ M3UA_IEI_PROT_DATA, "Protocol Data" },
{ M3UA_IEI_REG_STATUS, "Registration Status" },
{ M3UA_IEI_DEREG_STATUS, "De-Registration Status" },
{ 0, NULL }
}
M3UA_IEI_STATUS
#define M3UA_IEI_STATUS
Definition: m3ua.h:72
M3UA_IEI_HEARDBT_DATA
#define M3UA_IEI_HEARDBT_DATA
Definition: m3ua.h:69
M3UA_IEI_INFO_STRING
#define M3UA_IEI_INFO_STRING
Definition: m3ua.h:66
M3UA_IEI_REG_STATUS
#define M3UA_IEI_REG_STATUS
Definition: m3ua.h:91
M3UA_IEI_NET_APPEAR
#define M3UA_IEI_NET_APPEAR
Definition: m3ua.h:79
M3UA_IEI_ORIG_PC
#define M3UA_IEI_ORIG_PC
Definition: m3ua.h:89
M3UA_IEI_CONG_IND
#define M3UA_IEI_CONG_IND
Definition: m3ua.h:81
M3UA_IEI_DEREG_STATUS
#define M3UA_IEI_DEREG_STATUS
Definition: m3ua.h:92
M3UA_IEI_TRAF_MODE_TYP
#define M3UA_IEI_TRAF_MODE_TYP
Definition: m3ua.h:70
M3UA_IEI_LOC_RKEY_ID
#define M3UA_IEI_LOC_RKEY_ID
Definition: m3ua.h:86
M3UA_IEI_ROUT_KEY
#define M3UA_IEI_ROUT_KEY
Definition: m3ua.h:83
M3UA_IEI_CORR_ID
#define M3UA_IEI_CORR_ID
Definition: m3ua.h:75
M3UA_IEI_SVC_IND
#define M3UA_IEI_SVC_IND
Definition: m3ua.h:88
M3UA_IEI_DIAG_INFO
#define M3UA_IEI_DIAG_INFO
Definition: m3ua.h:68
M3UA_IEI_DEST_PC
#define M3UA_IEI_DEST_PC
Definition: m3ua.h:87
M3UA_IEI_REG_RESULT
#define M3UA_IEI_REG_RESULT
Definition: m3ua.h:84
M3UA_IEI_ASP_ID
#define M3UA_IEI_ASP_ID
Definition: m3ua.h:73
M3UA_IEI_CONC_DEST
#define M3UA_IEI_CONC_DEST
Definition: m3ua.h:82

## ◆ m3ua_mgmt_msgt_names

const struct value_string m3ua_mgmt_msgt_names[]
| static

Initial value:
= {
{ M3UA_MGMT_ERR, "ERROR" },
{ M3UA_MGMT_NTFY, "NOTIFY" },
{ 0, NULL }
}
M3UA_MGMT_NTFY
#define M3UA_MGMT_NTFY
Definition: m3ua.h:38
M3UA_MGMT_ERR
#define M3UA_MGMT_ERR
Definition: m3ua.h:37

## ◆ m3ua_msg_class_aspsm

const struct xua_msg_class m3ua_msg_class_aspsm

Initial value:
= {
.name = "ASPSM",
.msgt_names = m3ua_aspsm_msgt_names,
}
m3ua_aspsm_msgt_names
static const struct value_string m3ua_aspsm_msgt_names[]
Definition: m3ua.c:208

## ◆ m3ua_msg_class_asptm

const struct xua_msg_class m3ua_msg_class_asptm

Initial value:
= {
.name = "ASPTM",
.msgt_names = m3ua_asptm_msgt_names,
.iei_names = m3ua_iei_names,
}
m3ua_asptm_msgt_names
const struct value_string m3ua_asptm_msgt_names[]
Definition: m3ua.c:223
m3ua_iei_names
static const struct value_string m3ua_iei_names[]
Definition: m3ua.c:119

## ◆ m3ua_msg_class_mgmt

const struct xua_msg_class m3ua_msg_class_mgmt

Initial value:
= {
.name = "MGMT",
.msgt_names = m3ua_mgmt_msgt_names,
.iei_names = m3ua_iei_names,
.mand_ies = {
MAND_IES(M3UA_MGMT_ERR, err_req_ies),
MAND_IES(M3UA_MGMT_NTFY, ntfy_req_ies),
},
}
ntfy_req_ies
static const uint16_t ntfy_req_ies[]
Definition: m3ua.c:240
m3ua_mgmt_msgt_names
static const struct value_string m3ua_mgmt_msgt_names[]
Definition: m3ua.c:243
err_req_ies
static const uint16_t err_req_ies[]
Definition: m3ua.c:237
MAND_IES
#define MAND_IES(msgt, ies)
Definition: m3ua.c:148

## ◆ m3ua_msg_class_rkm

const struct xua_msg_class m3ua_msg_class_rkm

Initial value:
= {
.name = "RKM",
.msgt_names = m3ua_rkm_msgt_names,
.iei_names = m3ua_iei_names,
.mand_ies = {
MAND_IES(M3UA_RKM_REG_REQ, reg_req_ies),
MAND_IES(M3UA_RKM_REG_RSP, reg_rsp_ies),
MAND_IES(M3UA_RKM_DEREG_REQ, dereg_req_ies),
MAND_IES(M3UA_RKM_DEREG_RSP, dereg_rsp_ies),
},
}
m3ua_rkm_msgt_names
const struct value_string m3ua_rkm_msgt_names[]
Definition: m3ua.c:271
dereg_rsp_ies
static const uint16_t dereg_rsp_ies[]
Definition: m3ua.c:268
reg_req_ies
static const uint16_t reg_req_ies[]
Definition: m3ua.c:259
dereg_req_ies
static const uint16_t dereg_req_ies[]
Definition: m3ua.c:265
reg_rsp_ies
static const uint16_t reg_rsp_ies[]
Definition: m3ua.c:262
M3UA_RKM_REG_REQ
#define M3UA_RKM_REG_REQ
Definition: m3ua.h:61
M3UA_RKM_DEREG_REQ
#define M3UA_RKM_DEREG_REQ
Definition: m3ua.h:63
M3UA_RKM_REG_RSP
#define M3UA_RKM_REG_RSP
Definition: m3ua.h:62
M3UA_RKM_DEREG_RSP
#define M3UA_RKM_DEREG_RSP
Definition: m3ua.h:64

## ◆ m3ua_msg_class_snm

const struct xua_msg_class m3ua_msg_class_snm

Initial value:
= {
.name = "SNM",
.msgt_names = m3ua_snm_msgt_names,
.mand_ies = {
MAND_IES(M3UA_SNM_DUNA, duna_mand_ies),
MAND_IES(M3UA_SNM_DAVA, dava_mand_ies),
MAND_IES(M3UA_SNM_DAUD, daud_mand_ies),
MAND_IES(M3UA_SNM_SCON, scon_mand_ies),
MAND_IES(M3UA_SNM_DUPU, dupu_mand_ies),
MAND_IES(M3UA_SNM_DRST, drst_mand_ies),
},
}
scon_mand_ies
static const uint16_t scon_mand_ies[]
Definition: m3ua.c:176
dupu_mand_ies
static const uint16_t dupu_mand_ies[]
Definition: m3ua.c:179
dava_mand_ies
static const uint16_t dava_mand_ies[]
Definition: m3ua.c:170
drst_mand_ies
static const uint16_t drst_mand_ies[]
Definition: m3ua.c:182
duna_mand_ies
static const uint16_t duna_mand_ies[]
Definition: m3ua.c:167
m3ua_snm_msgt_names
const struct value_string m3ua_snm_msgt_names[]
Definition: m3ua.c:185
daud_mand_ies
static const uint16_t daud_mand_ies[]
Definition: m3ua.c:173
M3UA_SNM_DUNA
#define M3UA_SNM_DUNA
Definition: m3ua.h:42
M3UA_SNM_DAVA
#define M3UA_SNM_DAVA
Definition: m3ua.h:43
M3UA_SNM_DRST
#define M3UA_SNM_DRST
Definition: m3ua.h:47
M3UA_SNM_SCON
#define M3UA_SNM_SCON
Definition: m3ua.h:45
M3UA_SNM_DAUD
#define M3UA_SNM_DAUD
Definition: m3ua.h:44
M3UA_SNM_DUPU
#define M3UA_SNM_DUPU
Definition: m3ua.h:46

## ◆ m3ua_ntfy_other_names

const struct value_string m3ua_ntfy_other_names[]

Initial value:
= {
{ M3UA_NOTIFY_I_OT_INS_RES, "Insufficient ASP Resources active in AS" },
{ M3UA_NOTIFY_I_OT_ALT_ASP_ACT, "Alternative ASP Active" },
{ M3UA_NOTIFY_I_OT_ASP_FAILURE, "ASP Failure" },
{ 0, NULL }
}
M3UA_NOTIFY_I_OT_ALT_ASP_ACT
#define M3UA_NOTIFY_I_OT_ALT_ASP_ACT
Definition: m3ua.h:116
M3UA_NOTIFY_I_OT_INS_RES
#define M3UA_NOTIFY_I_OT_INS_RES
Definition: m3ua.h:115
M3UA_NOTIFY_I_OT_ASP_FAILURE
#define M3UA_NOTIFY_I_OT_ASP_FAILURE
Definition: m3ua.h:117

Referenced by m3ua_ntfy_info_name(), and sua_rx_mgmt_ntfy().

## ◆ m3ua_ntfy_stchg_names

const struct value_string m3ua_ntfy_stchg_names[]

Initial value:
= {
{ M3UA_NOTIFY_I_RESERVED, "Reserved" },
{ M3UA_NOTIFY_I_AS_INACT, "AS Inactive" },
{ M3UA_NOTIFY_I_AS_ACT, "AS Active" },
{ M3UA_NOTIFY_I_AS_PEND, "AS Pending" },
{ 0, NULL }
}
M3UA_NOTIFY_I_RESERVED
#define M3UA_NOTIFY_I_RESERVED
Definition: m3ua.h:110
M3UA_NOTIFY_I_AS_PEND
#define M3UA_NOTIFY_I_AS_PEND
Definition: m3ua.h:113
M3UA_NOTIFY_I_AS_INACT
#define M3UA_NOTIFY_I_AS_INACT
Definition: m3ua.h:111
M3UA_NOTIFY_I_AS_ACT
#define M3UA_NOTIFY_I_AS_ACT
Definition: m3ua.h:112

Referenced by m3ua_ntfy_info_name(), and sua_rx_mgmt_ntfy().

## ◆ m3ua_ntfy_type_names

const struct value_string m3ua_ntfy_type_names[]

Initial value:
= {
{ M3UA_NOTIFY_T_STATCHG, "State Change" },
{ M3UA_NOTIFY_T_OTHER, "Other" },
{ 0, NULL }
}
M3UA_NOTIFY_T_STATCHG
#define M3UA_NOTIFY_T_STATCHG
Definition: m3ua.h:107
M3UA_NOTIFY_T_OTHER
#define M3UA_NOTIFY_T_OTHER
Definition: m3ua.h:108

Referenced by as_notify_all_asp(), m3ua_rx_mgmt_ntfy(), sua_rx_mgmt_ntfy(), and tx_notify().

## ◆ m3ua_rkm_msgt_names

const struct value_string m3ua_rkm_msgt_names[]

Initial value:
= {
{ M3UA_RKM_REG_REQ, "REG-REQ" },
{ M3UA_RKM_REG_RSP, "REG-RESP" },
{ M3UA_RKM_DEREG_REQ, "DEREG-REQ" },
{ M3UA_RKM_DEREG_RSP, "DEREG-RESP" },
{ 0, NULL }
}

## ◆ m3ua_snm_msgt_names

const struct value_string m3ua_snm_msgt_names[]

Initial value:
= {
{ M3UA_SNM_DUNA, "DUNA" },
{ M3UA_SNM_DAVA, "DAVA" },
{ M3UA_SNM_DAUD, "DAUD" },
{ M3UA_SNM_SCON, "SCON" },
{ M3UA_SNM_DUPU, "DUPU" },
{ M3UA_SNM_DRST, "DRST" },
{ 0, NULL }
}

Referenced by m3ua_rx_snm_asp(), m3ua_rx_snm_ipsp(), m3ua_rx_snm_sg(), sua_rx_snm_asp(), sua_rx_snm_ipsp(), and sua_rx_snm_sg().

## ◆ m3ua_xfer_msgt_names

const struct value_string m3ua_xfer_msgt_names[]
| static

Initial value:
= {
{ M3UA_XFER_DATA, "DATA" },
{ 0, NULL }
}
M3UA_XFER_DATA
#define M3UA_XFER_DATA
Definition: m3ua.h:40

Referenced by m3ua_rx_snm(), and m3ua_rx_xfer().

## ◆ msg_class_xfer

const struct xua_msg_class msg_class_xfer
| static

Initial value:
= {
.name = "XFER",
.msgt_names = m3ua_xfer_msgt_names,
.mand_ies = {
MAND_IES(M3UA_XFER_DATA, data_mand_ies),
},
}
data_mand_ies
static const uint16_t data_mand_ies[]
Definition: m3ua.c:151
m3ua_xfer_msgt_names
static const struct value_string m3ua_xfer_msgt_names[]
Definition: m3ua.c:154

## ◆ ntfy_req_ies

const uint16_t ntfy_req_ies[]
| static

Initial value:
= {
M3UA_IEI_STATUS, 0
}

## ◆ reg_req_ies

const uint16_t reg_req_ies[]
| static

Initial value:
= {
M3UA_IEI_ROUT_KEY, 0
}

## ◆ reg_rsp_ies

const uint16_t reg_rsp_ies[]
| static

Initial value:
= {
M3UA_IEI_REG_RESULT, 0
}

## ◆ scon_mand_ies

const uint16_t scon_mand_ies[]
| static

Initial value:
= {
M3UA_IEI_AFFECTED_PC, 0
}

## ◆ xua_dialect_m3ua

const struct xua_dialect xua_dialect_m3ua

Initial value:
= {
.name = "M3UA",
.ppid = M3UA_PPID,
.port = M3UA_PORT,
.log_subsys = DLM3UA,
.class = {
[M3UA_MSGC_MGMT] = &m3ua_msg_class_mgmt,
[M3UA_MSGC_XFER] = &msg_class_xfer,
[M3UA_MSGC_SNM] = &m3ua_msg_class_snm,
[M3UA_MSGC_ASPSM] = &m3ua_msg_class_aspsm,
[M3UA_MSGC_ASPTM] = &m3ua_msg_class_asptm,
[M3UA_MSGC_RKM] = &m3ua_msg_class_rkm,
},
}
m3ua_msg_class_snm
const struct xua_msg_class m3ua_msg_class_snm
Definition: m3ua.c:194
m3ua_msg_class_rkm
const struct xua_msg_class m3ua_msg_class_rkm
Definition: m3ua.c:278
m3ua_msg_class_aspsm
const struct xua_msg_class m3ua_msg_class_aspsm
Definition: m3ua.c:217
m3ua_msg_class_asptm
const struct xua_msg_class m3ua_msg_class_asptm
Definition: m3ua.c:230
m3ua_msg_class_mgmt
const struct xua_msg_class m3ua_msg_class_mgmt
Definition: m3ua.c:248
msg_class_xfer
static const struct xua_msg_class msg_class_xfer
Definition: m3ua.c:158
M3UA_MSGC_RKM
#define M3UA_MSGC_RKM
Definition: m3ua.h:34
M3UA_PORT
#define M3UA_PORT
Definition: m3ua.h:26
M3UA_MSGC_SNM
#define M3UA_MSGC_SNM
Definition: m3ua.h:31
M3UA_MSGC_XFER
#define M3UA_MSGC_XFER
Definition: m3ua.h:30
M3UA_PPID
#define M3UA_PPID
Definition: m3ua.h:25
M3UA_MSGC_MGMT
#define M3UA_MSGC_MGMT
Definition: m3ua.h:29

Referenced by m3ua_rx_mgmt_err(), and m3ua_rx_msg().