Loading...
Searching...
No Matches
xua_snm.c File Reference
`#include <stdint.h>`
`#include <osmocom/core/utils.h>`
`#include <osmocom/core/talloc.h>`
`#include <osmocom/core/linuxlist.h>`
`#include <osmocom/sigtran/osmo_ss7.h>`
`#include <osmocom/sigtran/protocol/m3ua.h>`
`#include <osmocom/sigtran/protocol/sua.h>`
`#include <osmocom/sigtran/protocol/mtp.h>`
`#include "ss7_as.h"`
`#include "ss7_asp.h"`
`#include "ss7_internal.h"`
`#include "xua_internal.h"`
`#include "sccp_internal.h"`

## Functions

| osmo_static_assert (M3UA_SNM_DUNA==SUA_SNM_DUNA, _sa_duna)
| osmo_static_assert (M3UA_SNM_DAVA==SUA_SNM_DAVA, _sa_dava)
| osmo_static_assert (M3UA_SNM_DAUD==SUA_SNM_DAUD, _sa_dava)
| osmo_static_assert (M3UA_IEI_AFFECTED_PC==SUA_IEI_AFFECTED_PC, _sa_aff_pc)
| osmo_static_assert (M3UA_IEI_ROUTE_CTX==SUA_IEI_ROUTE_CTX, _sa_rctx)
| osmo_static_assert (M3UA_IEI_INFO_STRING==SUA_IEI_INFO_STRING, _sa_inf_str)
static const char * | format_affected_pcs_c (void *ctx, const struct osmo_ss7_instance *s7i, const struct xua_msg_part *ie_aff_pc)
static unsigned int | get_all_rctx_for_asp (uint32_t *rctx, unsigned int rctx_size, struct osmo_ss7_asp *asp, struct osmo_ss7_as *excl_as)
static void | xua_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_str, bool available)
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)
static void | xua_tx_scon (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)
static void | xua_snm_pc_available_to_sccp (struct osmo_sccp_instance *sccp, const uint32_t *aff_pc, unsigned int num_aff_pc, bool available)
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)
static void | sua_snm_ssn_available_to_sccp (struct osmo_sccp_instance *sccp, uint32_t aff_pc, uint32_t aff_ssn, uint32_t smi, bool available)
static void | sua_snm_ssn_available (struct osmo_ss7_as *as, uint32_t aff_pc, uint32_t aff_ssn, const uint32_t *smi, const char *info_str, bool available)
static void | xua_snm_upu (struct osmo_ss7_as *as, uint32_t dpc, uint16_t user, uint16_t cause, const char *info_str)
static void | xua_snm_scon (struct osmo_ss7_as *as, 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 | xua_snm_rx_daud (struct osmo_ss7_asp *asp, struct xua_msg *xua)
void | xua_snm_rx_duna (struct osmo_ss7_asp *asp, struct osmo_ss7_as *as, struct xua_msg *xua)
void | xua_snm_rx_dava (struct osmo_ss7_asp *asp, struct osmo_ss7_as *as, struct xua_msg *xua)
void | xua_snm_rx_dupu (struct osmo_ss7_asp *asp, struct osmo_ss7_as *as, struct xua_msg *xua)
void | xua_snm_rx_scon (struct osmo_ss7_asp *asp, struct osmo_ss7_as *as, struct xua_msg *xua)

## Function Documentation

## format_affected_pcs_c()

static const char * format_affected_pcs_c | ( | void * | ctx,
|  | const struct osmo_ss7_instance * | s7i,
|  | const struct xua_msg_part * | ie_aff_pc
| ) |  |

static

References xua_msg_part::dat, xua_msg_part::len, and osmo_ss7_pointcode_print().

Referenced by xua_snm_rx_daud(), xua_snm_rx_dava(), xua_snm_rx_duna(), and xua_snm_rx_scon().

## get_all_rctx_for_asp()

static unsigned int get_all_rctx_for_asp | ( | uint32_t * | rctx,
|  | unsigned int | rctx_size,
|  | struct osmo_ss7_asp * | asp,
|  | struct osmo_ss7_as * | excl_as
| ) |  |

static

References osmo_ss7_instance::as_list, osmo_ss7_as::cfg, osmo_ss7_routing_key::context, osmo_ss7_asp::inst, osmo_ss7_as::list, osmo_ss7_as_has_asp(), and osmo_ss7_as::routing_key.

Referenced by sua_snm_ssn_available(), xua_snm_pc_available(), xua_snm_rx_daud(), xua_snm_scon(), and xua_snm_upu().

## osmo_static_assert() [1/6]

osmo_static_assert | ( | M3UA_IEI_AFFECTED_PC | = `=SUA_IEI_AFFECTED_PC`,
|  | _sa_aff_pc |
| ) |  |

## osmo_static_assert() [2/6]

osmo_static_assert | ( | M3UA_IEI_INFO_STRING | = `=SUA_IEI_INFO_STRING`,
|  | _sa_inf_str |
| ) |  |

## osmo_static_assert() [3/6]

osmo_static_assert | ( | M3UA_IEI_ROUTE_CTX | = `=SUA_IEI_ROUTE_CTX`,
|  | _sa_rctx |
| ) |  |

## osmo_static_assert() [4/6]

osmo_static_assert | ( | M3UA_SNM_DAUD | = `=SUA_SNM_DAUD`,
|  | _sa_dava |
| ) |  |

## osmo_static_assert() [5/6]

osmo_static_assert | ( | M3UA_SNM_DAVA | = `=SUA_SNM_DAVA`,
|  | _sa_dava |
| ) |  |

## osmo_static_assert() [6/6]

osmo_static_assert | ( | M3UA_SNM_DUNA | = `=SUA_SNM_DUNA`,
|  | _sa_duna |
| ) |  |

## sua_snm_ssn_available()

static void sua_snm_ssn_available | ( | struct osmo_ss7_as * | as,
|  | uint32_t | aff_pc,
|  | uint32_t | aff_ssn,
|  | const uint32_t * | smi,
|  | const char * | info_str,
|  | bool | available
| ) |  |

static

References osmo_ss7_instance::asp_list, osmo_ss7_asp::cfg, get_all_rctx_for_asp(), osmo_ss7_as::inst, osmo_ss7_asp::list, osmo_ss7_asp_active(), OSMO_SS7_ASP_PROT_SUA, OSMO_SS7_ASP_ROLE_SG, osmo_ss7_asp::proto, osmo_ss7_asp::role, osmo_ss7_instance::sccp, smi, sua_snm_ssn_available_to_sccp(), and sua_tx_snm_available().

Referenced by xua_snm_rx_dava(), and xua_snm_rx_duna().

## sua_snm_ssn_available_to_sccp()

static void sua_snm_ssn_available_to_sccp | ( | struct osmo_sccp_instance * | sccp,
|  | uint32_t | aff_pc,
|  | uint32_t | aff_ssn,
|  | uint32_t | smi,
|  | bool | available
| ) |  |

static

References sccp_scmg_rx_ssn_allowed(), sccp_scmg_rx_ssn_prohibited(), and smi.

Referenced by sua_snm_ssn_available().

## xua_snm_pc_available()

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

References osmo_ss7_instance::asp_list, osmo_ss7_asp::cfg, get_all_rctx_for_asp(), osmo_ss7_as::inst, osmo_ss7_asp::list, osmo_ss7_asp_active(), OSMO_SS7_ASP_ROLE_SG, osmo_ss7_asp::role, osmo_ss7_instance::sccp, xua_snm_pc_available_to_sccp(), and xua_tx_snm_available().

Referenced by xua_as_fsm_onenter(), xua_snm_rx_dava(), and xua_snm_rx_duna().

## xua_snm_pc_available_to_sccp()

static void xua_snm_pc_available_to_sccp | ( | struct osmo_sccp_instance * | sccp,
|  | const uint32_t * | aff_pc,
|  | unsigned int | num_aff_pc,
|  | bool | available
| ) |  |

static

References sccp_scmg_rx_mtp_pause(), and sccp_scmg_rx_mtp_resume().

Referenced by xua_snm_pc_available().

## xua_snm_rx_daud()

void xua_snm_rx_daud | ( | struct osmo_ss7_asp * | asp,
|  | struct xua_msg * | xua
| ) |  |

References xua_msg_part::dat, format_affected_pcs_c(), get_all_rctx_for_asp(), osmo_ss7_asp::inst, xua_msg_part::len, LOGPASP, M3UA_IEI_AFFECTED_PC, M3UA_IEI_INFO_STRING, osmo_ss7_asp_get_log_subsys(), osmo_ss7_route_lookup(), xua_msg_find_tag(), xua_msg_get_str(), and xua_tx_snm_available().

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

## xua_snm_rx_dava()

void xua_snm_rx_dava | ( | struct osmo_ss7_asp * | asp,
|  | struct osmo_ss7_as * | as,
|  | struct xua_msg * | xua
| ) |  |

References osmo_ss7_asp::cfg, xua_msg_part::dat, format_affected_pcs_c(), osmo_ss7_asp::inst, xua_msg_part::len, LOGPASP, M3UA_IEI_AFFECTED_PC, M3UA_IEI_INFO_STRING, osmo_ss7_asp_get_log_subsys(), OSMO_SS7_ASP_PROT_SUA, OSMO_SS7_ASP_ROLE_ASP, osmo_ss7_asp::proto, osmo_ss7_asp::role, smi, SUA_IEI_SMI, SUA_IEI_SSN, sua_snm_ssn_available(), xua_msg_find_tag(), xua_msg_get_str(), xua_msg_get_u32p(), xua_msg_part_get_u32(), and xua_snm_pc_available().

Referenced by m3ua_rx_snm_asp(), and sua_rx_snm_asp().

## xua_snm_rx_duna()

void xua_snm_rx_duna | ( | struct osmo_ss7_asp * | asp,
|  | struct osmo_ss7_as * | as,
|  | struct xua_msg * | xua
| ) |  |

References osmo_ss7_asp::cfg, xua_msg_part::dat, format_affected_pcs_c(), osmo_ss7_asp::inst, xua_msg_part::len, LOGPASP, M3UA_IEI_AFFECTED_PC, M3UA_IEI_INFO_STRING, osmo_ss7_asp_get_log_subsys(), OSMO_SS7_ASP_PROT_SUA, OSMO_SS7_ASP_ROLE_ASP, osmo_ss7_asp::proto, osmo_ss7_asp::role, smi, SUA_IEI_SMI, SUA_IEI_SSN, sua_snm_ssn_available(), xua_msg_find_tag(), xua_msg_get_str(), xua_msg_get_u32p(), xua_msg_part_get_u32(), and xua_snm_pc_available().

Referenced by m3ua_rx_snm_asp(), and sua_rx_snm_asp().

## xua_snm_rx_dupu()

void xua_snm_rx_dupu | ( | struct osmo_ss7_asp * | asp,
|  | struct osmo_ss7_as * | as,
|  | struct xua_msg * | xua
| ) |  |

References osmo_ss7_asp::cfg, osmo_ss7_asp::inst, LOGPASP, M3UA_IEI_USER_CAUSE, mtp_si_vals, osmo_ss7_asp_get_log_subsys(), OSMO_SS7_ASP_PROT_M3UA, OSMO_SS7_ASP_PROT_SUA, OSMO_SS7_ASP_ROLE_ASP, osmo_ss7_pointcode_print(), osmo_ss7_asp::proto, osmo_ss7_asp::role, SUA_IEI_AFFECTED_PC, SUA_IEI_INFO_STRING, SUA_IEI_USER_CAUSE, xua_msg_get_str(), xua_msg_get_u32(), and xua_snm_upu().

Referenced by m3ua_rx_snm_asp(), and sua_rx_snm_asp().

## xua_snm_rx_scon()

void xua_snm_rx_scon | ( | struct osmo_ss7_asp * | asp,
|  | struct osmo_ss7_as * | as,
|  | struct xua_msg * | xua
| ) |  |

References xua_msg_part::dat, format_affected_pcs_c(), osmo_ss7_asp::inst, xua_msg_part::len, LOGPASP, M3UA_IEI_AFFECTED_PC, M3UA_IEI_CONC_DEST, M3UA_IEI_CONG_IND, M3UA_IEI_INFO_STRING, osmo_ss7_asp_get_log_subsys(), xua_msg_find_tag(), xua_msg_get_str(), xua_msg_get_u32p(), and xua_snm_scon().

Referenced by m3ua_rx_snm_asp().

## xua_snm_scon()

static void xua_snm_scon | ( | struct osmo_ss7_as * | as,
|  | const uint32_t * | aff_pc,
|  | unsigned int | num_aff_pc,
|  | const uint32_t * | concerned_dpc,
|  | const uint8_t * | cong_level,
|  | const char * | info_string
| ) |  |

static

References osmo_ss7_instance::asp_list, osmo_ss7_asp::cfg, get_all_rctx_for_asp(), osmo_ss7_as::inst, osmo_ss7_asp::list, osmo_ss7_asp_active(), OSMO_SS7_ASP_ROLE_SG, osmo_ss7_asp::role, and xua_tx_scon().

Referenced by xua_snm_rx_scon().

## xua_snm_upu()

static void xua_snm_upu | ( | struct osmo_ss7_as * | as,
|  | uint32_t | dpc,
|  | uint16_t | user,
|  | uint16_t | cause,
|  | const char * | info_str
| ) |  |

static

References osmo_ss7_instance::asp_list, osmo_ss7_asp::cfg, dpc, get_all_rctx_for_asp(), osmo_ss7_as::inst, osmo_ss7_asp::list, MTP_SI_SCCP, osmo_ss7_asp_active(), OSMO_SS7_ASP_ROLE_SG, osmo_ss7_asp::role, osmo_ss7_instance::sccp, sccp_scmg_rx_mtp_status(), and xua_tx_upu().

Referenced by xua_snm_rx_dupu().

## xua_tx_scon()

static void xua_tx_scon | ( | 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
| ) |  |

static

References osmo_ss7_asp::cfg, m3ua_tx_snm_congestion(), OSMO_SS7_ASP_PROT_M3UA, OSMO_SS7_ASP_PROT_SUA, osmo_ss7_asp::proto, and sua_tx_snm_congestion().

Referenced by xua_snm_scon().

## xua_tx_snm_available()

static void xua_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_str,
|  | bool | available
| ) |  |

static

References osmo_ss7_asp::cfg, m3ua_tx_snm_available(), OSMO_SS7_ASP_PROT_M3UA, OSMO_SS7_ASP_PROT_SUA, osmo_ss7_asp::proto, and sua_tx_snm_available().

Referenced by xua_snm_pc_available(), and xua_snm_rx_daud().

## xua_tx_upu()

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

static

References osmo_ss7_asp::cfg, dpc, m3ua_tx_dupu(), OSMO_SS7_ASP_PROT_M3UA, OSMO_SS7_ASP_PROT_SUA, osmo_ss7_asp::proto, and sua_tx_dupu().

Referenced by xua_snm_upu().