libosmo-sigtran: src/tcap_as_loadshare.c File Reference

libosmo-sigtran 2.2.1.95-893c Osmocom SIGTRAN library

Data Structures | Macros | Enumerations | Functions | Variables
tcap_as_loadshare.c File Reference
`#include <errno.h>`
`#include <osmocom/core/bit32gen.h>`
`#include <osmocom/core/byteswap.h>`
`#include <osmocom/core/linuxlist.h>`
`#include <osmocom/core/logging.h>`
`#include <osmocom/core/rate_ctr.h>`
`#include <osmocom/core/talloc.h>`
`#include <osmocom/netif/ipa.h>`
`#include <osmocom/sccp/sccp_types.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 <osmocom/sigtran/sccp_sap.h>`
`#include <osmocom/tcap/OCTET_STRING.h>`
`#include <osmocom/tcap/TCAP_TCMessage.h>`
`#include <osmocom/tcap/tcap.h>`
`#include "mtp3_hmrt.h"`
`#include "ss7_as.h"`
`#include "sccp_internal.h"`
`#include "ss7_asp.h"`
`#include "ss7_internal.h"`
`#include "ss7_vty.h"`
`#include "tcap_as_loadshare.h"`
`#include "tcap_trans_tracking.h"`
`#include "xua_internal.h"`

## Data Structures
struct | tcap_parsed
struct | ipa_tcap_routing_hdr
struct | ipa_tcap_routing_add_range
struct | ipa_tcap_routing_nack

## Macros
#define | OTID_SET 1 << 0
#define | DTID_SET 1 << 1

## Enumerations
enum | ipa_tcap_routing_msg_types { MT_TID_ADD_RANGE = 0x01 , MT_TID_ACK = 0x02 , MT_TID_NACK = 0x03 }
enum | ipa_tcap_routing_nack_error { NACK_ERR_SYS_FAILURE = 0x01 , NACK_ERR_EALREADY = 0x72 }

## Functions
static int | tcap_id_from_octet_str (uint32_t *tid, const OCTET_STRING_t *src)
static int | parse_tcap (struct osmo_ss7_as *as, const uint8_t *data, size_t len, struct tcap_parsed *ids)
static uint32_t | tcap_gen_hash (uint32_t pc, uint8_t ssn)
static uint64_t | tcap_gen_hash_addr (const struct osmo_sccp_addr *addr)
static struct osmo_ss7_asp * | tcap_hlist_get (const struct osmo_ss7_as *as, uint32_t pc, uint8_t ssn, uint32_t tid)
struct osmo_ss7_asp * | tcap_as_asp_find_by_tcap_id (struct osmo_ss7_as *as, struct osmo_sccp_addr *calling_addr, struct osmo_sccp_addr *called_addr, uint32_t otid)
static struct tcap_range * | tcap_overlap_tid (struct osmo_ss7_as *as, uint32_t pc, uint8_t ssn, uint32_t tid_start, uint32_t tid_end)
static struct osmo_ss7_asp * | find_asp_no_tcap_range (struct osmo_ss7_as *as)
static bool | ssn_contains_tcap (uint8_t ssn)
int | tcap_as_rx_sccp_asp (struct osmo_ss7_as *as, struct osmo_ss7_asp *asp, uint32_t opc, uint32_t dpc, struct msgb *sccp_msg)
| Traffic from the TCAP ASP -> AS -> osmo-stp, only used to update transaction tracking. More...
static int | send_back_udts (struct osmo_ss7_as *as, const struct osmo_mtp_transfer_param *orig_mtp, const struct xua_msg *orig_sua, uint8_t cause_code)
| Send UDTS to indicate that the originating UDT could not be delivered to its destination. More...
static int | asp_loadshare_tcap_sccp (struct osmo_ss7_asp **rasp, struct osmo_ss7_as *as, const struct osmo_mtp_transfer_param *mtp, struct msgb *sccp_msg)
| Traffic STP -> AS -> ASP (Tx path) Loadshare towards the TCAP routing AS. More...
int | tcap_as_select_asp_loadshare (struct osmo_ss7_asp **asp, struct osmo_ss7_as *as, const struct xua_msg *xua)
| Entrypoint for M3UA messages towards the TCAP nodes. More...
struct ipa_tcap_routing_hdr | __attribute__ ((packed))
static struct msgb * | ipa_tcap_routing_alloc (uint32_t seq_nr, uint8_t mt)
static int | ipa_tx_tcap_routing_ack (struct osmo_ss7_asp *asp, uint32_t seq_nr)
static int | ipa_tx_tcap_routing_nack (struct osmo_ss7_asp *asp, uint32_t seq_nr, uint8_t err_code)
int | ipa_rx_msg_osmo_ext_tcap_routing (struct osmo_ss7_asp *asp, struct msgb *msg)
| Entrypoint for IPA TCAP Routing messages, parses and handles those. More...
static void | tcap_range_as_update_pc_ssn (struct osmo_ss7_as *as)
struct tcap_range * | tcap_range_alloc (struct osmo_ss7_as *as, struct osmo_ss7_asp *asp, uint32_t tid_start, uint32_t tid_end, uint32_t pc, uint8_t ssn)
| Create and alloc a new TCAP range entry. More...
void | tcap_range_free (struct tcap_range *tcrng)
| Remove and free a single TCAP range entry. More...
bool | tcap_range_matches (const struct tcap_range *tcrng, uint32_t tid)
| Checks if a tid matches to a specific range. More...
bool | tcap_range_overlaps (const struct tcap_range *a, uint32_t tid_start, uint32_t tid_end)
| Checks if a tid rnage overlaps with another range. More...
static void | _tcap_range_asp_down (struct osmo_ss7_as *as, struct osmo_ss7_asp *asp)
void | tcap_as_del_asp (struct osmo_ss7_as *as, struct osmo_ss7_asp *asp)
void | tcap_enable (struct osmo_ss7_as *as)
void | tcap_disable (struct osmo_ss7_as *as)

## Variables
uint8_t | mt
uint32_t | seq
uint8_t | data [0]
uint32_t | tid_start
uint32_t | tid_end
uint32_t | pc
uint8_t | ssn
uint8_t | err

## Macro Definition Documentation

## ◆ DTID_SET

#define DTID_SET 1 << 1

## ◆ OTID_SET

#define OTID_SET 1 << 0

## Enumeration Type Documentation

## ◆ ipa_tcap_routing_msg_types

enum ipa_tcap_routing_msg_types

Enumerator
MT_TID_ADD_RANGE |
MT_TID_ACK |
MT_TID_NACK |

## ◆ ipa_tcap_routing_nack_error

enum ipa_tcap_routing_nack_error

Enumerator
NACK_ERR_SYS_FAILURE |
NACK_ERR_EALREADY |

## Function Documentation

## ◆ __attribute__()

struct ipa_tcap_routing_hdr __attribute__ | ( | (packed) |  | ) |

References asp_loadshare_tcap_sccp(), xua_msg_part::dat, xua_msg::hdr, xua_msg_part::len, LOGPAS, M3UA_IEI_PROT_DATA, M3UA_MSGC_XFER, M3UA_XFER_DATA, xua_common_hdr::msg_class, xua_common_hdr::msg_type, xua_msg::mtp, MTP_SI_SCCP, NULL, osmo_mtp_transfer_param::sio, and xua_msg_find_tag().

## ◆ _tcap_range_asp_down()

static void _tcap_range_asp_down | ( | struct osmo_ss7_as * | as,
|  | struct osmo_ss7_asp * | asp
| ) |  |
| static

References tcap_range::asp, tcap_range_free(), and tcap_trans_track_entries_free_by_asp().

Referenced by tcap_as_del_asp().

## ◆ asp_loadshare_tcap_sccp()

static int asp_loadshare_tcap_sccp | ( | struct osmo_ss7_asp ** | rasp,
|  | struct osmo_ss7_as * | as,
|  | const struct osmo_mtp_transfer_param * | mtp,
|  | struct msgb * | sccp_msg
| ) |  |
| static

Traffic STP -> AS -> ASP (Tx path) Loadshare towards the TCAP routing AS.

Parameters

  [out] | rasp | the selected ASP if any, can be NULL
  [in] | as |
  [in] | opc | the OPC from MTP
  [in] | dpc | the DPC from MTP
  [in] | mtp | MTP routing information
  [in] | sccp_msg | the SCCP message. Callee takes ownership.

Returns
  0: on succcess (msg handled by the callee), -EPROTONOSUPPORT: let caller (regular loadsharing) handle those.

References osmo_ss7_as::ctrg, xua_msg_part::dat, osmo_mtp_transfer_param::dpc, tcap_parsed::dtid, DTID_SET, find_asp_no_tcap_range(), xua_msg::hdr, xua_msg_part::len, LOGPAS, xua_common_hdr::msg_class, NULL, osmo_mtp_transfer_param::opc, OSMO_SCCP_ADDR_T_PC, OSMO_SCCP_ADDR_T_SSN, osmo_sccp_to_xua(), tcap_parsed::otid, OTID_SET, parse_tcap(), osmo_sccp_addr::pc, osmo_sccp_addr::presence, tcap_parsed::present, send_back_udts(), osmo_sccp_addr::ssn, ssn_contains_tcap(), sua_addr_parse(), SUA_CL_CLDT, SUA_IEI_DATA, SUA_IEI_DEST_ADDR, SUA_IEI_SRC_ADDR, SUA_MSGC_CL, tcap_as_asp_find_by_tcap_id(), tcap_trans_track_begin(), tcap_trans_track_continue(), tcap_trans_track_end(), xua_msg_find_tag(), and xua_msg_free().

Referenced by __attribute__().

## ◆ find_asp_no_tcap_range()

static struct osmo_ss7_asp * find_asp_no_tcap_range | ( | struct osmo_ss7_as * | as | ) |
| static

References ss7_as_asp_assoc::as, ss7_as_asp_assoc::asp, osmo_ss7_as::cfg, osmo_ss7_as::last_asp_idx_sent, osmo_ss7_as::loadshare, NULL, osmo_ss7_as::num_assoc_asps, osmo_ss7_asp_active(), and ss7_as_asp_assoc_llist_round_robin.

Referenced by asp_loadshare_tcap_sccp().

## ◆ ipa_rx_msg_osmo_ext_tcap_routing()

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

Entrypoint for IPA TCAP Routing messages, parses and handles those.

Parameters

  asp |
  msg | the message buffer. It is kept owned by the caller.

Returns
  0 on success

References tcap_range::asp, osmo_ss7_as::cfg, osmo_ss7_asp::cfg, cs7_role, CS7_ROLE_SG, ipa_tx_tcap_routing_ack(), ipa_tx_tcap_routing_nack(), osmo_ss7_as::loadshare, LOGPASP, osmo_ss7_as::mode, ipa_tcap_routing_hdr::mt, MT_TID_ACK, MT_TID_ADD_RANGE, MT_TID_NACK, NACK_ERR_EALREADY, NACK_ERR_SYS_FAILURE, osmo_ss7_as::name, osmo_ss7_asp::name, OSMO_SS7_AS_TMOD_LOADSHARE, osmo_ss7_as_traffic_mode_name(), ipa_tcap_routing_add_range::pc, ipa_tcap_routing_hdr::seq, ss7_asp_get_first_as(), ipa_tcap_routing_add_range::ssn, tcap_overlap_tid(), TCAP_PC_WILDCARD, tcap_range_alloc(), TCAP_SSN_WILDCARD, ipa_tcap_routing_add_range::tid_end, tcap_range::tid_end, ipa_tcap_routing_add_range::tid_start, and tcap_range::tid_start.

Referenced by ipa_rx_msg().

## ◆ ipa_tcap_routing_alloc()

static struct msgb * ipa_tcap_routing_alloc | ( | uint32_t | seq_nr,
|  | uint8_t | mt
| ) |  |
| static

References mt, ipa_tcap_routing_hdr::mt, and NULL.

Referenced by ipa_tx_tcap_routing_ack(), and ipa_tx_tcap_routing_nack().

## ◆ ipa_tx_tcap_routing_ack()

static int ipa_tx_tcap_routing_ack | ( | struct osmo_ss7_asp * | asp,
|  | uint32_t | seq_nr
| ) |  |
| static

References ipa_tcap_routing_alloc(), MT_TID_ACK, and osmo_ss7_asp_send().

Referenced by ipa_rx_msg_osmo_ext_tcap_routing().

## ◆ ipa_tx_tcap_routing_nack()

static int ipa_tx_tcap_routing_nack | ( | struct osmo_ss7_asp * | asp,
|  | uint32_t | seq_nr,
|  | uint8_t | err_code
| ) |  |
| static

References ipa_tcap_routing_alloc(), MT_TID_NACK, and osmo_ss7_asp_send().

Referenced by ipa_rx_msg_osmo_ext_tcap_routing().

## ◆ parse_tcap()

static int parse_tcap | ( | struct osmo_ss7_as * | as,
|  | const uint8_t * | data,
|  | size_t | len,
|  | struct tcap_parsed * | ids
| ) |  |
| static

References data, tcap_parsed::dtid, DTID_SET, len, LOGPAS, tcap_parsed::otid, OTID_SET, tcap_parsed::present, and tcap_id_from_octet_str().

Referenced by asp_loadshare_tcap_sccp(), and tcap_as_rx_sccp_asp().

## ◆ send_back_udts()

static int send_back_udts | ( | struct osmo_ss7_as * | as,
|  | const struct osmo_mtp_transfer_param * | orig_mtp,
|  | const struct xua_msg * | orig_sua,
|  | uint8_t | cause_code
| ) |  |
| static

Send UDTS to indicate that the originating UDT could not be delivered to its destination.

Parameters

  as |
  orig_mtp | MTP routing information of the originating message (message that could not be delivered)
  orig_sua | Originating message that could not be delivered
  cause_code | the return cause of the UDTS

Returns
  0 on success, negative on error

References osmo_mtp_transfer_param::dpc, xua_msg::hdr, osmo_ss7_as::inst, LOGPAS, xua_common_hdr::msg_class, xua_common_hdr::msg_type, mtp3_hmrt_mtp_xfer_request_l4_to_l3(), osmo_mtp_transfer_param::opc, osmo_sua_to_sccp(), SUA_CL_CLDT, sua_gen_cldr(), SUA_IEI_PROTO_CLASS, SUA_IEI_ROUTE_CTX, SUA_MSGC_CL, xua_dialect_sua, xua_msg_dump(), xua_msg_find_tag(), xua_msg_free(), xua_msg_get_u32p(), and xua_msg_part_get_u32().

Referenced by asp_loadshare_tcap_sccp().

## ◆ ssn_contains_tcap()

static bool ssn_contains_tcap | ( | uint8_t | ssn | ) |
| static

References OSMO_SCCP_SSN_AUC, OSMO_SCCP_SSN_CAP, OSMO_SCCP_SSN_EIR, OSMO_SCCP_SSN_GGSN_MAP, OSMO_SCCP_SSN_GMLC_MAP, OSMO_SCCP_SSN_gsmSCF_MAP, OSMO_SCCP_SSN_HLR, OSMO_SCCP_SSN_MAP, OSMO_SCCP_SSN_MSC, OSMO_SCCP_SSN_SGSN_MAP, OSMO_SCCP_SSN_SIWF_MAP, OSMO_SCCP_SSN_TC_TEST, OSMO_SCCP_SSN_VLR, and ssn.

Referenced by asp_loadshare_tcap_sccp(), and tcap_as_rx_sccp_asp().

## ◆ tcap_as_asp_find_by_tcap_id()

struct osmo_ss7_asp * tcap_as_asp_find_by_tcap_id | ( | struct osmo_ss7_as * | as,
|  | struct osmo_sccp_addr * | calling_addr,
|  | struct osmo_sccp_addr * | called_addr,
|  | uint32_t | otid
| ) |  |

References NULL, OSMO_SCCP_ADDR_T_PC, OSMO_SCCP_ADDR_T_SSN, osmo_sccp_addr::pc, pc, osmo_sccp_addr::presence, osmo_sccp_addr::ssn, ssn, tcap_hlist_get(), TCAP_PC_WILDCARD, and TCAP_SSN_WILDCARD.

Referenced by asp_loadshare_tcap_sccp().

## ◆ tcap_as_del_asp()

void tcap_as_del_asp | ( | struct osmo_ss7_as * | as,
|  | struct osmo_ss7_asp * | asp
| ) |  |

References _tcap_range_asp_down(), osmo_ss7_as::cfg, osmo_ss7_as::last_asp_idx_sent, osmo_ss7_as::loadshare, ss7_as_del_asp_update_llist_round_robin(), and tcap_range_as_update_pc_ssn().

Referenced by common_asp_fsm_down_onenter(), and ss7_as_del_asp().

## ◆ tcap_as_rx_sccp_asp()

int tcap_as_rx_sccp_asp | ( | struct osmo_ss7_as * | as,
|  | struct osmo_ss7_asp * | asp,
|  | uint32_t | opc,
|  | uint32_t | dpc,
|  | struct msgb * | sccp_msg
| ) |  |

Traffic from the TCAP ASP -> AS -> osmo-stp, only used to update transaction tracking.

Parameters

  as |
  asp | asp sent the sccp_msg message towards osmo-stp
  opc | M3UA opc
  dpc | M3UA DPC
  sccp_msg | pointer to a msg.

Returns
  0 on successful handling (TCAP fully processed, non-TCAP ignored), < 0 on error cases (missing IE, decoding errors)

References xua_msg_part::dat, dpc, tcap_parsed::dtid, DTID_SET, xua_msg::hdr, xua_msg_part::len, LOGPAS, xua_common_hdr::msg_class, NULL, opc, OSMO_SCCP_ADDR_T_PC, osmo_sccp_to_xua(), tcap_parsed::otid, OTID_SET, parse_tcap(), osmo_sccp_addr::pc, osmo_sccp_addr::presence, tcap_parsed::present, osmo_sccp_addr::ssn, ssn_contains_tcap(), sua_addr_parse(), SUA_CL_CLDT, SUA_IEI_DATA, SUA_IEI_DEST_ADDR, SUA_IEI_SRC_ADDR, SUA_MSGC_CL, tcap_trans_track_continue(), tcap_trans_track_end(), tcap_trans_track_entry_create(), and xua_msg_find_tag().

Referenced by ipa_rx_msg_up().

## ◆ tcap_as_select_asp_loadshare()

int tcap_as_select_asp_loadshare | ( | struct osmo_ss7_asp ** | asp,
|  | struct osmo_ss7_as * | as,
|  | const struct xua_msg * | xua
| ) |  |

Entrypoint for M3UA messages towards the TCAP nodes.

Parameters

  [out] | asp | Result pointer of the selected asp. Set to NULL if return code is != 0
  [in] | as |
  [in] | xua |

Returns
  0: on succcess (msg handled by the callee), -EPROTONOSUPPORT: let caller (regular loadsharing) handle those.

Referenced by ss7_as_select_asp().

## ◆ tcap_disable()

void tcap_disable | ( | struct osmo_ss7_as * | as | ) |

References osmo_ss7_as::cfg, osmo_ss7_as::last_asp_idx_sent, osmo_ss7_as::loadshare, NULL, tcap_trans_track_entries_free_all(), and tcap_trans_track_garbage_collect_stop().

Referenced by osmo_ss7_as_destroy().

## ◆ tcap_enable()

void tcap_enable | ( | struct osmo_ss7_as * | as | ) |

References osmo_ss7_as::cfg, osmo_ss7_as::loadshare, and tcap_trans_track_garbage_collect_start().

## ◆ tcap_gen_hash()

static uint32_t tcap_gen_hash | ( | uint32_t | pc,
|  | uint8_t | ssn
| ) |  |
| inlinestatic

References pc, and ssn.

Referenced by tcap_gen_hash_addr(), tcap_hlist_get(), tcap_overlap_tid(), and tcap_range_alloc().

## ◆ tcap_gen_hash_addr()

static uint64_t tcap_gen_hash_addr | ( | const struct osmo_sccp_addr * | addr | ) |
| inlinestatic

References OSMO_SCCP_ADDR_T_PC, OSMO_SCCP_ADDR_T_SSN, osmo_sccp_addr::pc, pc, osmo_sccp_addr::presence, osmo_sccp_addr::ssn, ssn, and tcap_gen_hash().

## ◆ tcap_hlist_get()

static struct osmo_ss7_asp * tcap_hlist_get | ( | const struct osmo_ss7_as * | as,
|  | uint32_t | pc,
|  | uint8_t | ssn,
|  | uint32_t | tid
| ) |  |
| static

References tcap_range::asp, osmo_ss7_asp::list, NULL, pc, tcap_range::pc, ssn, tcap_range::ssn, tcap_gen_hash(), and tcap_range_matches().

Referenced by tcap_as_asp_find_by_tcap_id().

## ◆ tcap_id_from_octet_str()

static int tcap_id_from_octet_str | ( | uint32_t * | tid,
|  | const OCTET_STRING_t * | src
| ) |  |
| static

References load_24be().

Referenced by parse_tcap().

## ◆ tcap_overlap_tid()

static struct tcap_range * tcap_overlap_tid | ( | struct osmo_ss7_as * | as,
|  | uint32_t | pc,
|  | uint8_t | ssn,
|  | uint32_t | tid_start,
|  | uint32_t | tid_end
| ) |  |
| static

References tcap_range::list, NULL, pc, tcap_range::pc, ssn, tcap_range::ssn, tcap_gen_hash(), tcap_range_overlaps(), tid_end, and tid_start.

Referenced by ipa_rx_msg_osmo_ext_tcap_routing().

## ◆ tcap_range_alloc()

struct tcap_range * tcap_range_alloc | ( | struct osmo_ss7_as * | as,
|  | struct osmo_ss7_asp * | asp,
|  | uint32_t | tid_start,
|  | uint32_t | tid_end,
|  | uint32_t | pc,
|  | uint8_t | ssn
| ) |  |

Create and alloc a new TCAP range entry.

Parameters

  [in] | as |
  [in] | asp |
  [in] | tid_start |
  [in] | tid_end |
  [in] | pc |
  [in] | ssn |

Returns
  the TCAP range entry or NULL

References tcap_range::asp, tcap_range::list, NULL, pc, tcap_range::pc, ssn, tcap_range::ssn, tcap_gen_hash(), tid_end, tcap_range::tid_end, tid_start, and tcap_range::tid_start.

Referenced by ipa_rx_msg_osmo_ext_tcap_routing().

## ◆ tcap_range_as_update_pc_ssn()

static void tcap_range_as_update_pc_ssn | ( | struct osmo_ss7_as * | as | ) |
| static

References tcap_range::pc, tcap_range::ssn, TCAP_PC_WILDCARD, and TCAP_SSN_WILDCARD.

Referenced by tcap_as_del_asp().

## ◆ tcap_range_free()

void tcap_range_free | ( | struct tcap_range * | tcrng | ) |

Remove and free a single TCAP range entry.

Parameters

  [in] | tcrng |

References tcap_range::list.

Referenced by _tcap_range_asp_down().

## ◆ tcap_range_matches()

bool tcap_range_matches | ( | const struct tcap_range * | tcrng,
|  | uint32_t | tid
| ) |  |

Checks if a tid matches to a specific range.

Parameters

  tcrng |
  tid |

Returns
  true if tid is included in the range

References tcap_range::tid_end, and tcap_range::tid_start.

Referenced by tcap_hlist_get(), and tcap_range_overlaps().

## ◆ tcap_range_overlaps()

bool tcap_range_overlaps | ( | const struct tcap_range * | a,
|  | uint32_t | tid_start,
|  | uint32_t | tid_end
| ) |  |

Checks if a tid rnage overlaps with another range.

Parameters

  a |
  tid_start |
  tid_end |

Returns

References tcap_range_matches(), tid_end, tcap_range::tid_end, tid_start, and tcap_range::tid_start.

Referenced by tcap_overlap_tid().

## Variable Documentation

## ◆ data

uint8_t data

Referenced by conn_tmr_cb(), dispatch_to_all_as(), int_tmr_cb(), ipa_asp_allstate(), ipa_asp_fsm_wait_id_get(), ipa_asp_fsm_wait_id_resp(), lm_active(), lm_inactive(), lm_rkm_reg(), lm_wait_asp_up(), lm_wait_notify(), load_24be(), m3ua_xfer_from_data(), msgb_put_sccp_opt(), msgb_t16l16vp_put(), osmo_sccp_tx_conn_req(), osmo_sccp_tx_conn_resp(), osmo_sccp_tx_data(), osmo_sccp_tx_disconn_data(), osmo_sccp_tx_unitdata(), osmo_sccp_tx_unitdata_ranap(), parse_tcap(), rel_tmr_cb(), rep_rel_tmr_cb(), rx_inact_tmr_cb(), sccp_longptr_part_consistent(), sccp_ptr_part_consistent(), sccp_to_xua_opt(), scoc_fsm_active(), scoc_fsm_conn_pend_in(), scoc_fsm_conn_pend_out(), scoc_fsm_idle(), scoc_fsm_wait_conn_conf(), sua_parse_gt(), tcap_trans_track_garbage_collect_cb(), tx_inact_tmr_cb(), xua_as_fsm_active(), xua_as_fsm_inactive(), xua_as_fsm_pending(), xua_asp_allstate(), xua_asp_fsm_active(), xua_asp_fsm_down(), xua_asp_fsm_inactive(), xua_from_msg(), xua_from_msg_common(), and xua_t_ack_cb().

## ◆ err

uint8_t err

Referenced by _setsockopt_peer_primary_addr(), m3ua_gen_error_msg(), m3ua_rx_msg(), osmo_ss7_pointcode_parse(), sccp_to_xua_err(), sua_rx_msg(), sua_to_sccp_err(), and tcap_trans_track_entry_create().

## ◆ mt

uint8_t mt

Referenced by ipa_tcap_routing_alloc().

## ◆ pc

uint32_t pc

Referenced by _rout_key(), DEFUN(), DEFUN_ATTR(), format_affected_pcs_c(), gen_hash(), gen_hash_addr(), mtp_pause_ind_up_to_all_users(), mtp_prim_pause_ind_alloc(), mtp_prim_resume_ind_alloc(), mtp_resume_ind_up_to_all_users(), osmo_sccp_simple_server(), osmo_sccp_simple_server_add_clnt(), osmo_sccp_simple_server_on_ss7_id(), osmo_sccp_user_bind_pc(), osmo_sccp_user_find(), osmo_ss7_pc_is_local(), osmo_ss7_pc_is_valid(), osmo_ss7_pc_normalize(), osmo_ss7_pointcode_print(), osmo_ss7_pointcode_print2(), osmo_ss7_pointcode_print_buf(), pc_comp_shift_and_mask(), sccp_scmg_tx(), sccp_user_alloc(), sccp_user_bind_pc(), sccp_user_find(), ss7_combined_linkset_alloc(), ss7_linkset_find_or_create(), ss7_route_alloc(), ss7_route_create(), ss7_route_table_find_or_create_combined_linkset(), tcap_as_asp_find_by_tcap_id(), tcap_gen_hash(), tcap_gen_hash_addr(), tcap_hlist_get(), tcap_overlap_tid(), tcap_range_alloc(), tx_daud_pc(), xua_snm_pc_available_to_mtp_users(), xua_snm_rx_daud(), xua_snm_rx_dava(), xua_snm_rx_duna(), xua_snm_scon_to_mtp_users(), xua_snm_srm_pc_available(), and xua_snm_srm_pc_available_single().

## ◆ seq

uint32_t seq

## ◆ ssn

uint8_t ssn

Referenced by _rout_key(), DEFUN(), gen_hash(), gen_hash_addr(), osmo_sccp_addr_set_ssn(), osmo_sccp_local_addr_by_instance(), osmo_sccp_user_bind(), osmo_sccp_user_bind_pc(), osmo_sccp_user_find(), sccp_scmg_rx_ssn_allowed(), sccp_scmg_rx_ssn_prohibited(), sccp_scmg_tx(), sccp_user_alloc(), sccp_user_bind_pc(), sccp_user_find(), ssn_contains_tcap(), sua_encode_daud(), sua_encode_dava(), sua_encode_duna(), sua_tx_snm_congestion(), tcap_as_asp_find_by_tcap_id(), tcap_gen_hash(), tcap_gen_hash_addr(), tcap_hlist_get(), tcap_overlap_tid(), tcap_range_alloc(), xua_snm_rx_dava(), and xua_snm_rx_duna().

## ◆ tid_end

uint32_t tid_end

Referenced by tcap_overlap_tid(), tcap_range_alloc(), and tcap_range_overlaps().

## ◆ tid_start

uint32_t tid_start

Referenced by DEFUN(), tcap_overlap_tid(), tcap_range_alloc(), and tcap_range_overlaps().