libosmo-sigtran  1.8.0.67-fb30
Osmocom SIGTRAN library
osmo_ss7.h File Reference
#include <stdint.h>
#include <stdbool.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/utils.h>
#include <osmocom/core/fsm.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/prim.h>
#include <osmocom/core/socket.h>
#include <osmocom/core/rate_ctr.h>

Go to the source code of this file.

Data Structures

struct  osmo_ss7_route_table
 
struct  osmo_ss7_pc_fmt
 
struct  osmo_ss7_instance
 
struct  osmo_ss7_user
 
struct  osmo_ss7_link
 
struct  osmo_ss7_linkset
 
struct  osmo_ss7_route
 
struct  osmo_ss7_routing_key
 
struct  osmo_ss7_as
 
struct  osmo_ss7_asp_peer
 
struct  osmo_ss7_asp
 
struct  osmo_xua_layer_manager
 
struct  osmo_xua_server
 

Macros

#define OSMO_SS7_PC_INVALID   0xffffffff
 
#define OSMO_SS7_ASP_QUIRK_NO_NOTIFY   0x00000001
 Peer SG doesn't send NTFY(AS-INACTIVE) after ASP-UP procedure. More...
 
#define OSMO_SS7_ASP_QUIRK_DAUD_IN_ASP   0x00000002
 Accept DAUD in ASP role (RFC states only permitted in ASP->SG role) More...
 
#define OSMO_SS7_ASP_QUIRK_SNM_INACTIVE   0x00000004
 Accept SSNM even if ASP is in AS-INACTIVE state. More...
 
#define _LOGSS7(inst, subsys, level, fmt, args ...)   LOGP(subsys, level, "%u: " fmt, inst ? (inst)->cfg.id : 0, ## args)
 
#define LOGSS7(inst, level, fmt, args ...)   _LOGSS7(inst, DLSS7, level, fmt, ## args)
 
#define LOGPASP(asp, subsys, level, fmt, args ...)   _LOGSS7((asp)->inst, subsys, level, "asp-%s: " fmt, (asp)->cfg.name, ## args)
 
#define LOGPAS(as, subsys, level, fmt, args ...)   _LOGSS7((as)->inst, subsys, level, "as-%s: " fmt, (as)->cfg.name, ## args)
 

Typedefs

typedef int osmo_ss7_asp_rx_unknown_cb(struct osmo_ss7_asp *asp, int ppid_mux, struct msgb *msg)
 Weak function to handle payload for unknown/unsupported PPID or IPA StreamID. More...
 

Enumerations

enum  osmo_ss7_link_adm_state { OSMO_SS7_LS_SHUTDOWN, OSMO_SS7_LS_INHIBITED, OSMO_SS7_LS_ENABLED, _NUM_OSMO_SS7_LS }
 
enum  osmo_ss7_as_traffic_mode {
  OSMO_SS7_AS_TMOD_OVERRIDE = 0, OSMO_SS7_AS_TMOD_BCAST, OSMO_SS7_AS_TMOD_LOADSHARE, OSMO_SS7_AS_TMOD_ROUNDROBIN,
  _NUM_OSMO_SS7_ASP_TMOD
}
 
enum  osmo_ss7_asp_protocol {
  OSMO_SS7_ASP_PROT_NONE, OSMO_SS7_ASP_PROT_SUA, OSMO_SS7_ASP_PROT_M3UA, OSMO_SS7_ASP_PROT_IPA,
  _NUM_OSMO_SS7_ASP_PROT
}
 
enum  osmo_ss7_as_patch_sccp_mode { OSMO_SS7_PATCH_NONE, OSMO_SS7_PATCH_BOTH }
 
enum  osmo_ss7_asp_admin_state { OSMO_SS7_ASP_ADM_S_SHUTDOWN, OSMO_SS7_ASP_ADM_S_BLOCKED, OSMO_SS7_ASP_ADM_S_ENABLED }
 
enum  osmo_ss7_asp_role { OSMO_SS7_ASP_ROLE_ASP, OSMO_SS7_ASP_ROLE_SG, OSMO_SS7_ASP_ROLE_IPSP }
 

Functions

int osmo_ss7_init (void)
 
int osmo_ss7_find_free_rctx (struct osmo_ss7_instance *inst)
 
bool osmo_ss7_pc_is_local (struct osmo_ss7_instance *inst, uint32_t pc)
 
int osmo_ss7_pointcode_parse (struct osmo_ss7_instance *inst, const char *str)
 
int osmo_ss7_pointcode_parse_mask_or_len (struct osmo_ss7_instance *inst, const char *in)
 
const char * osmo_ss7_pointcode_print_buf (char *buf, size_t buf_len, const struct osmo_ss7_instance *inst, uint32_t pc)
 
const char * osmo_ss7_pointcode_print (const struct osmo_ss7_instance *inst, uint32_t pc)
 
const char * osmo_ss7_pointcode_print2 (const struct osmo_ss7_instance *inst, uint32_t pc)
 
static bool osmo_ss7_pc_is_valid (uint32_t pc)
 
struct osmo_ss7_route_tableosmo_ss7_route_table_find (struct osmo_ss7_instance *inst, const char *name)
 
struct osmo_ss7_route_tableosmo_ss7_route_table_find_or_create (struct osmo_ss7_instance *inst, const char *name)
 
void osmo_ss7_route_table_destroy (struct osmo_ss7_route_table *rtbl)
 
struct osmo_ss7_instanceosmo_ss7_instance_find (uint32_t id)
 Find a SS7 Instance with given ID. More...
 
struct osmo_ss7_instanceosmo_ss7_instance_find_or_create (void *ctx, uint32_t id)
 Find or create a SS7 Instance. More...
 
void osmo_ss7_instance_destroy (struct osmo_ss7_instance *inst)
 Destroy a SS7 Instance. More...
 
int osmo_ss7_instance_set_pc_fmt (struct osmo_ss7_instance *inst, uint8_t c0, uint8_t c1, uint8_t c2)
 Set the point code format used in given SS7 instance. More...
 
struct osmo_sccp_instanceosmo_ss7_ensure_sccp (struct osmo_ss7_instance *inst)
 Allocate an SCCP instance, if not present yet. More...
 
uint8_t osmo_ss7_pc_width (const struct osmo_ss7_pc_fmt *pc_fmt)
 
uint32_t osmo_ss7_pc_normalize (const struct osmo_ss7_pc_fmt *pc_fmt, uint32_t pc)
 
int osmo_ss7_user_register (struct osmo_ss7_instance *inst, uint8_t service_ind, struct osmo_ss7_user *user)
 Register a MTP user for a given service indicator. More...
 
int osmo_ss7_user_unregister (struct osmo_ss7_instance *inst, uint8_t service_ind, struct osmo_ss7_user *user)
 Unregister a MTP user for a given service indicator. More...
 
int osmo_ss7_mtp_to_user (struct osmo_ss7_instance *inst, struct osmo_mtp_prim *omp)
 
int osmo_ss7_user_mtp_xfer_req (struct osmo_ss7_instance *inst, struct osmo_mtp_prim *omp)
 
void osmo_ss7_link_destroy (struct osmo_ss7_link *link)
 Destroy SS7 Link. More...
 
struct osmo_ss7_linkosmo_ss7_link_find_or_create (struct osmo_ss7_linkset *lset, uint32_t id)
 Find or create SS7 Link with given ID in given Linkset. More...
 
void osmo_ss7_linkset_destroy (struct osmo_ss7_linkset *lset)
 Destroy a SS7 Linkset. More...
 
struct osmo_ss7_linksetosmo_ss7_linkset_find_by_name (struct osmo_ss7_instance *inst, const char *name)
 Find SS7 Linkset by given name. More...
 
struct osmo_ss7_linksetosmo_ss7_linkset_find_or_create (struct osmo_ss7_instance *inst, const char *name, uint32_t pc)
 Find or allocate SS7 Linkset. More...
 
struct osmo_ss7_routeosmo_ss7_route_find_dpc (struct osmo_ss7_route_table *rtbl, uint32_t dpc)
 Find a SS7 route for given destination point code in given table. More...
 
struct osmo_ss7_routeosmo_ss7_route_find_dpc_mask (struct osmo_ss7_route_table *rtbl, uint32_t dpc, uint32_t mask)
 Find a SS7 route for given destination point code + mask in given table. More...
 
struct osmo_ss7_routeosmo_ss7_route_lookup (struct osmo_ss7_instance *inst, uint32_t dpc)
 Find a SS7 route for given destination point code in given SS7. More...
 
struct osmo_ss7_routeosmo_ss7_route_create (struct osmo_ss7_route_table *rtbl, uint32_t dpc, uint32_t mask, const char *linkset_name)
 Create a new route in the given routing table. More...
 
void osmo_ss7_route_destroy (struct osmo_ss7_route *rt)
 Destroy a given SS7 route. More...
 
const char * osmo_ss7_route_print (const struct osmo_ss7_route *rt)
 
const char * osmo_ss7_route_name (struct osmo_ss7_route *rt, bool list_asps)
 Return human readable representation of the route, in a static buffer. More...
 
static const char * osmo_ss7_as_traffic_mode_name (enum osmo_ss7_as_traffic_mode mode)
 
static const char * osmo_ss7_asp_protocol_name (enum osmo_ss7_asp_protocol mode)
 
int osmo_ss7_asp_protocol_port (enum osmo_ss7_asp_protocol prot)
 
struct osmo_ss7_asosmo_ss7_as_find_by_name (struct osmo_ss7_instance *inst, const char *name)
 Find Application Server by given name. More...
 
struct osmo_ss7_asosmo_ss7_as_find_by_rctx (struct osmo_ss7_instance *inst, uint32_t rctx)
 Find Application Server by given routing context. More...
 
struct osmo_ss7_asosmo_ss7_as_find_by_l_rk_id (struct osmo_ss7_instance *inst, uint32_t l_rk_id)
 Find Application Server by given local routing key ID. More...
 
struct osmo_ss7_asosmo_ss7_as_find_by_proto (struct osmo_ss7_instance *inst, enum osmo_ss7_asp_protocol proto)
 Find Application Server (AS) by given protocol. More...
 
struct osmo_ss7_asosmo_ss7_as_find_or_create (struct osmo_ss7_instance *inst, const char *name, enum osmo_ss7_asp_protocol proto)
 Find or Create Application Server. More...
 
int osmo_ss7_as_add_asp (struct osmo_ss7_as *as, const char *asp_name)
 Add given ASP to given AS. More...
 
int osmo_ss7_as_del_asp (struct osmo_ss7_as *as, const char *asp_name)
 Delete given ASP from given AS. More...
 
void osmo_ss7_as_destroy (struct osmo_ss7_as *as)
 Destroy given Application Server. More...
 
bool osmo_ss7_as_has_asp (const struct osmo_ss7_as *as, const struct osmo_ss7_asp *asp)
 Determine if given AS contains ASP. More...
 
bool osmo_ss7_as_down (const struct osmo_ss7_as *as)
 Determine if given AS is in the down state. More...
 
bool osmo_ss7_as_active (const struct osmo_ss7_as *as)
 Determine if given AS is in the active state. More...
 
bool osmo_ss7_as_tmode_compatible_xua (struct osmo_ss7_as *as, uint32_t m3ua_tmt)
 
void osmo_ss7_asp_disconnect (struct osmo_ss7_asp *asp)
 
int osmo_ss7_asp_peer_snprintf (char *buf, size_t buf_len, struct osmo_ss7_asp_peer *peer)
 
void osmo_ss7_asp_peer_init (struct osmo_ss7_asp_peer *peer)
 
int osmo_ss7_asp_peer_set_hosts (struct osmo_ss7_asp_peer *peer, void *talloc_ctx, const char *const *hosts, size_t host_cnt)
 Set (copy) addresses for a given ASP peer. More...
 
int osmo_ss7_asp_peer_set_hosts2 (struct osmo_ss7_asp_peer *peer, void *talloc_ctx, const char *const *hosts, size_t host_cnt, int idx_primary)
 Set (copy) addresses for a given ASP peer. More...
 
int osmo_ss7_asp_peer_add_host (struct osmo_ss7_asp_peer *peer, void *talloc_ctx, const char *host)
 Append (copy) address to a given ASP peer. More...
 
int osmo_ss7_asp_peer_add_host2 (struct osmo_ss7_asp_peer *peer, void *talloc_ctx, const char *host, bool is_primary_addr)
 Append (copy) address to a given ASP peer. More...
 
int osmo_ss7_asp_peer_del_host (struct osmo_ss7_asp_peer *peer, const char *host)
 Remove address from a given ASP peer. More...
 
struct osmo_ss7_asposmo_ss7_asp_find_by_name (struct osmo_ss7_instance *inst, const char *name)
 
struct osmo_ss7_asposmo_ss7_asp_find_by_proto (struct osmo_ss7_as *as, enum osmo_ss7_asp_protocol proto)
 Find an ASP that matches the given ASP protocol (xUA variant). More...
 
struct osmo_ss7_asposmo_ss7_asp_find (struct osmo_ss7_instance *inst, const char *name, uint16_t remote_port, uint16_t local_port, enum osmo_ss7_asp_protocol proto) OSMO_DEPRECATED("Use osmo_ss7_asp_find2() instead")
 
struct osmo_ss7_asposmo_ss7_asp_find2 (struct osmo_ss7_instance *inst, const char *name, uint16_t remote_port, uint16_t local_port, int trans_proto, enum osmo_ss7_asp_protocol proto)
 
struct osmo_ss7_asposmo_ss7_asp_find_or_create (struct osmo_ss7_instance *inst, const char *name, uint16_t remote_port, uint16_t local_port, enum osmo_ss7_asp_protocol proto) OSMO_DEPRECATED("Use osmo_ss7_asp_find_or_create2() instead")
 
struct osmo_ss7_asposmo_ss7_asp_find_or_create2 (struct osmo_ss7_instance *inst, const char *name, uint16_t remote_port, uint16_t local_port, int trans_proto, enum osmo_ss7_asp_protocol proto)
 
void osmo_ss7_asp_destroy (struct osmo_ss7_asp *asp)
 
int osmo_ss7_asp_send (struct osmo_ss7_asp *asp, struct msgb *msg)
 send a fully encoded msgb via a given ASP More...
 
int osmo_ss7_asp_restart (struct osmo_ss7_asp *asp)
 
int osmo_ss7_asp_use_default_lm (struct osmo_ss7_asp *asp, int log_level)
 
bool osmo_ss7_asp_active (const struct osmo_ss7_asp *asp)
 
int osmo_ss7_asp_get_log_subsys (const struct osmo_ss7_asp *asp)
 Get the logging subsystem for a given ASP. More...
 
const char * osmo_ss7_asp_get_name (const struct osmo_ss7_asp *asp)
 Get the name of a given ASP. More...
 
enum osmo_ss7_asp_protocol osmo_ss7_asp_get_proto (const struct osmo_ss7_asp *asp)
 Get the proto of a given ASP. More...
 
int osmo_ss7_asp_get_trans_proto (const struct osmo_ss7_asp *asp)
 Get the transport proto of a given ASP. More...
 
void osmo_ss7_register_rx_unknown_cb (osmo_ss7_asp_rx_unknown_cb *cb)
 Register a call-back function for unknown SCTP PPID / IPA Stream ID. More...
 
struct osmo_xua_serverosmo_ss7_xua_server_find (struct osmo_ss7_instance *inst, enum osmo_ss7_asp_protocol proto, uint16_t local_port) OSMO_DEPRECATED("Use osmo_ss7_xua_server_find2() instead")
 find an xUA server with the given parameters More...
 
struct osmo_xua_serverosmo_ss7_xua_server_find2 (struct osmo_ss7_instance *inst, int trans_proto, enum osmo_ss7_asp_protocol proto, uint16_t local_port)
 find an xUA server with the given parameters More...
 
struct osmo_xua_serverosmo_ss7_xua_server_create (struct osmo_ss7_instance *inst, enum osmo_ss7_asp_protocol proto, uint16_t local_port, const char *local_host) OSMO_DEPRECATED("Use osmo_ss7_xua_server_create2() instead")
 create a new xUA server configured with given ip/port More...
 
struct osmo_xua_serverosmo_ss7_xua_server_create2 (struct osmo_ss7_instance *inst, int trans_proto, enum osmo_ss7_asp_protocol proto, uint16_t local_port, const char *local_host)
 create a new xUA server configured with given ip/port More...
 
int osmo_ss7_xua_server_bind (struct osmo_xua_server *xs)
 Set the xUA server to bind/listen to the currently configured ip/port. More...
 
int osmo_ss7_xua_server_set_local_host (struct osmo_xua_server *xs, const char *local_host)
 
int osmo_ss7_xua_server_set_local_hosts (struct osmo_xua_server *xs, const char **local_hosts, size_t local_host_cnt)
 
int osmo_ss7_xua_server_add_local_host (struct osmo_xua_server *xs, const char *local_host)
 
int osmo_ss7_xua_server_del_local_host (struct osmo_xua_server *xs, const char *local_host)
 
void osmo_ss7_xua_server_destroy (struct osmo_xua_server *xs)
 
struct osmo_sccp_instanceosmo_sccp_simple_client (void *ctx, const char *name, uint32_t default_pc, enum osmo_ss7_asp_protocol prot, int default_local_port, const char *default_local_ip, int default_remote_port, const char *default_remote_ip)
 request an sccp client instance More...
 
struct osmo_sccp_instanceosmo_sccp_simple_client_on_ss7_id (void *ctx, uint32_t ss7_id, const char *name, uint32_t default_pc, enum osmo_ss7_asp_protocol prot, int default_local_port, const char *default_local_ip, int default_remote_port, const char *default_remote_ip)
 request an sccp client instance More...
 
struct osmo_sccp_instanceosmo_sccp_simple_server (void *ctx, uint32_t pc, enum osmo_ss7_asp_protocol prot, int local_port, const char *local_ip)
 
struct osmo_sccp_instanceosmo_sccp_simple_server_on_ss7_id (void *ctx, uint32_t ss7_id, uint32_t pc, enum osmo_ss7_asp_protocol prot, int local_port, const char *local_ip)
 
struct osmo_sccp_instanceosmo_sccp_simple_server_add_clnt (struct osmo_sccp_instance *inst, enum osmo_ss7_asp_protocol prot, const char *name, uint32_t pc, int local_port, int remote_port, const char *remote_ip)
 
void osmo_sccp_set_max_optional_data (struct osmo_sccp_instance *inst, int val)
 Adjust the upper bound for the optional data length (the payload) for CR, CC, CREF and RLSD messages. More...
 
enum osmo_ss7_as_traffic_mode osmo_ss7_tmode_from_xua (uint32_t in)
 
int osmo_ss7_tmode_to_xua (enum osmo_ss7_as_traffic_mode tmod)
 
void osmo_ss7_vty_init_asp (void *ctx)
 
void osmo_ss7_vty_init_sg (void *ctx)
 
int osmo_ss7_vty_go_parent (struct vty *vty)
 
int osmo_ss7_is_config_node (struct vty *vty, int node)
 

Variables

struct llist_head osmo_ss7_instances
 
struct value_string osmo_ss7_as_traffic_mode_vals []
 
struct value_string osmo_ss7_asp_protocol_vals []
 
const struct value_string osmo_ss7_asp_role_names []
 

Macro Definition Documentation

◆ _LOGSS7

#define _LOGSS7 (   inst,
  subsys,
  level,
  fmt,
  args ... 
)    LOGP(subsys, level, "%u: " fmt, inst ? (inst)->cfg.id : 0, ## args)

◆ LOGPAS

#define LOGPAS (   as,
  subsys,
  level,
  fmt,
  args ... 
)    _LOGSS7((as)->inst, subsys, level, "as-%s: " fmt, (as)->cfg.name, ## args)

◆ LOGPASP

◆ LOGSS7

◆ OSMO_SS7_ASP_QUIRK_DAUD_IN_ASP

#define OSMO_SS7_ASP_QUIRK_DAUD_IN_ASP   0x00000002

Accept DAUD in ASP role (RFC states only permitted in ASP->SG role)

Referenced by m3ua_rx_snm_asp(), and sua_rx_snm_asp().

◆ OSMO_SS7_ASP_QUIRK_NO_NOTIFY

#define OSMO_SS7_ASP_QUIRK_NO_NOTIFY   0x00000001

Peer SG doesn't send NTFY(AS-INACTIVE) after ASP-UP procedure.

Referenced by lm_timer_cb().

◆ OSMO_SS7_ASP_QUIRK_SNM_INACTIVE

#define OSMO_SS7_ASP_QUIRK_SNM_INACTIVE   0x00000004

Accept SSNM even if ASP is in AS-INACTIVE state.

Referenced by m3ua_rx_snm(), and sua_rx_snm().

◆ OSMO_SS7_PC_INVALID

#define OSMO_SS7_PC_INVALID   0xffffffff

Typedef Documentation

◆ osmo_ss7_asp_rx_unknown_cb

typedef int osmo_ss7_asp_rx_unknown_cb(struct osmo_ss7_asp *asp, int ppid_mux, struct msgb *msg)

Weak function to handle payload for unknown/unsupported PPID or IPA StreamID.

This function can be overridden by application code to implement whatever handling it wants for such additional payloads/streams.

Parameters
[in]aspApplication Server Process through which data was received
[in]ppid_sidSCTP PPID (in sigtran case) or IPA Stream ID
[in]msgMessage buffer containing received data. Continues to be owned by caller!
Returns
0 on success; negative on error

Enumeration Type Documentation

◆ osmo_ss7_as_patch_sccp_mode

Enumerator
OSMO_SS7_PATCH_NONE 
OSMO_SS7_PATCH_BOTH 

◆ osmo_ss7_as_traffic_mode

Enumerator
OSMO_SS7_AS_TMOD_OVERRIDE 
OSMO_SS7_AS_TMOD_BCAST 
OSMO_SS7_AS_TMOD_LOADSHARE 
OSMO_SS7_AS_TMOD_ROUNDROBIN 
_NUM_OSMO_SS7_ASP_TMOD 

◆ osmo_ss7_asp_admin_state

Enumerator
OSMO_SS7_ASP_ADM_S_SHUTDOWN 

no SCTP association with peer

OSMO_SS7_ASP_ADM_S_BLOCKED 

SCP association, but reject ASP-ACTIVE.

OSMO_SS7_ASP_ADM_S_ENABLED 

in normal operation

◆ osmo_ss7_asp_protocol

Enumerator
OSMO_SS7_ASP_PROT_NONE 
OSMO_SS7_ASP_PROT_SUA 
OSMO_SS7_ASP_PROT_M3UA 
OSMO_SS7_ASP_PROT_IPA 
_NUM_OSMO_SS7_ASP_PROT 

◆ osmo_ss7_asp_role

Enumerator
OSMO_SS7_ASP_ROLE_ASP 
OSMO_SS7_ASP_ROLE_SG 
OSMO_SS7_ASP_ROLE_IPSP 

◆ osmo_ss7_link_adm_state

Enumerator
OSMO_SS7_LS_SHUTDOWN 
OSMO_SS7_LS_INHIBITED 
OSMO_SS7_LS_ENABLED 
_NUM_OSMO_SS7_LS 

Function Documentation

◆ osmo_sccp_set_max_optional_data()

void osmo_sccp_set_max_optional_data ( struct osmo_sccp_instance inst,
int  val 
)

Adjust the upper bound for the optional data length (the payload) for CR, CC, CREF and RLSD messages.

For any Optional Data part larger than this value in octets, send CR, CC, CREF and RLSD messages without any payload, and send the data payload in a separate Data Form 1 message. ITU-T Q.713 sections 4.2 thru 4.5 define a limit of 130 bytes for the 'Data' parameter. This limit can be adjusted here. May be useful for interop with nonstandard SCCP peers.

Parameters
[in]sccpSCCP instance to reconfigure.
[in]valNumber of bytes to set as upper bound for the optional data length, or pass a negative value to set the standard value of SCCP_MAX_OPTIONAL_DATA == 130, which conforms to ITU-T Q.713.

References osmo_sccp_instance::max_optional_data.

Referenced by DEFUN_ATTR().

◆ osmo_sccp_simple_client()

struct osmo_sccp_instance* osmo_sccp_simple_client ( void *  ctx,
const char *  name,
uint32_t  default_pc,
enum osmo_ss7_asp_protocol  prot,
int  default_local_port,
const char *  default_local_ip,
int  default_remote_port,
const char *  default_remote_ip 
)

request an sccp client instance

Parameters
[in]ctxtalloc context
[in]namehuman readable name
[in]default_pcpointcode to be used on missing VTY setting
[in]protprotocol to be used (e.g OSMO_SS7_ASP_PROT_M3UA)
[in]default_local_portlocal port to be used on missing VTY setting
[in]default_local_iplocal IP-address to be used on missing VTY setting
[in]default_remote_portremote port to be used on missing VTY setting
[in]default_remote_ipremote IP-address to be used on missing VTY setting
Returns
callee-allocated SCCP instance on success; NULL on error

This is simplified version of osmo_sccp_simple_client_on_ss7_id(). the only difference is that the ID of the CS7 instance will be set to 0 statically

References osmo_sccp_simple_client_on_ss7_id().

◆ osmo_sccp_simple_client_on_ss7_id()

struct osmo_sccp_instance* osmo_sccp_simple_client_on_ss7_id ( void *  ctx,
uint32_t  ss7_id,
const char *  name,
uint32_t  default_pc,
enum osmo_ss7_asp_protocol  prot,
int  default_local_port,
const char *  default_local_ip,
int  default_remote_port,
const char *  default_remote_ip 
)

request an sccp client instance

Parameters
[in]ctxtalloc context
[in]ss7_idof the SS7/CS7 instance
[in]namehuman readable name
[in]default_pcpointcode to be used on missing VTY setting
[in]protprotocol to be used (e.g OSMO_SS7_ASP_PROT_M3UA)
[in]default_local_portlocal port to be used on missing VTY setting
[in]default_local_iplocal IP-address to be used on missing VTY setting (NULL: use library own defaults)
[in]default_remote_portremote port to be used on missing VTY setting
[in]default_remote_ipremote IP-address to be used on missing VTY setting (NULL: use library own defaults)
Returns
callee-allocated SCCP instance on success; NULL on error

The function will examine the given CS7 instance and its sub components (as, asp, etc.). If necessary it will allocate the missing components. If no CS7 instance can be detected under the caller supplied ID, a new instance will be created beforehand.

References osmo_ss7_instance::as_list, osmo_ss7_instance::asp_list, osmo_ss7_instance::cfg, osmo_ss7_as::cfg, osmo_ss7_asp::cfg, osmo_ss7_instance::id, osmo_ss7_asp::is_server, osmo_ss7_as::list, osmo_ss7_asp::list, osmo_ss7_asp::local, osmo_ss7_as::name, osmo_ss7_asp::name, osmo_ss7_as_add_asp(), osmo_ss7_as_destroy(), osmo_ss7_as_find_by_proto(), osmo_ss7_as_find_or_create(), osmo_ss7_as_has_asp(), osmo_ss7_asp_destroy(), osmo_ss7_asp_find_by_proto(), osmo_ss7_asp_find_or_create2(), osmo_ss7_asp_peer_set_hosts(), OSMO_SS7_ASP_PROT_IPA, osmo_ss7_asp_protocol_name(), osmo_ss7_asp_protocol_port(), osmo_ss7_asp_restart(), OSMO_SS7_ASP_ROLE_ASP, osmo_ss7_asp_use_default_lm(), osmo_ss7_ensure_sccp(), osmo_ss7_instance_destroy(), osmo_ss7_instance_find(), osmo_ss7_instance_find_or_create(), osmo_ss7_pc_is_valid(), osmo_ss7_pointcode_print(), osmo_ss7_route_create(), osmo_ss7_route_destroy(), osmo_ss7_route_find_dpc_mask(), osmo_ss7_xua_server_find2(), osmo_ss7_routing_key::pc, osmo_ss7_asp_peer::port, osmo_ss7_instance::primary_pc, osmo_ss7_asp::proto, osmo_ss7_asp::remote, osmo_ss7_asp::role, osmo_ss7_asp::role_set_by_vty, osmo_ss7_as::routing_key, osmo_ss7_instance::rtable_system, osmo_ss7_instance::sccp, osmo_ss7_as::simple_client_allocated, osmo_ss7_asp::simple_client_allocated, ss7_asp_set_default_peer_hosts(), ss7_default_trans_proto_for_asp_proto(), osmo_ss7_asp::trans_proto, and osmo_ss7_asp::trans_role_set_by_vty.

Referenced by osmo_sccp_simple_client().

◆ osmo_sccp_simple_server()

struct osmo_sccp_instance* osmo_sccp_simple_server ( void *  ctx,
uint32_t  pc,
enum osmo_ss7_asp_protocol  prot,
int  local_port,
const char *  local_ip 
)

◆ osmo_sccp_simple_server_add_clnt()

◆ osmo_sccp_simple_server_on_ss7_id()

◆ osmo_ss7_as_active()

bool osmo_ss7_as_active ( const struct osmo_ss7_as as)

Determine if given AS is in the active state.

Parameters
[in]asApplication Server.
Returns
true in case as is active; false otherwise.

References osmo_ss7_as::fi, and XUA_AS_S_ACTIVE.

Referenced by DEFUN().

◆ osmo_ss7_as_add_asp()

int osmo_ss7_as_add_asp ( struct osmo_ss7_as as,
const char *  asp_name 
)

Add given ASP to given AS.

Parameters
[in]asApplication Server to which asp is added
[in]aspApplication Server Process to be added to as
Returns
0 on success; negative in case of error

References osmo_ss7_as::asps, osmo_ss7_as::cfg, osmo_ss7_asp::cfg, osmo_ss7_asp::fi, osmo_ss7_as::inst, LOGPAS, osmo_ss7_asp::name, osmo_ss7_as_has_asp(), osmo_ss7_asp_find_by_name(), ss7_initialized, and XUA_ASP_E_AS_ASSIGNED.

Referenced by DEFUN_ATTR(), handle_rkey_reg(), ipa_asp_fsm_wait_id_resp(), osmo_sccp_simple_client_on_ss7_id(), and osmo_sccp_simple_server_add_clnt().

◆ osmo_ss7_as_del_asp()

int osmo_ss7_as_del_asp ( struct osmo_ss7_as as,
const char *  asp_name 
)

Delete given ASP from given AS.

Parameters
[in]asApplication Server from which asp is deleted
[in]aspApplication Server Process to delete from as
Returns
0 on success; negative in case of error

References osmo_ss7_as::asps, osmo_ss7_as::cfg, osmo_ss7_asp::cfg, osmo_ss7_as::inst, LOGPAS, osmo_ss7_asp::name, osmo_ss7_asp_find_by_name(), and ss7_initialized.

Referenced by DEFUN_ATTR(), and handle_rkey_dereg().

◆ osmo_ss7_as_destroy()

◆ osmo_ss7_as_down()

bool osmo_ss7_as_down ( const struct osmo_ss7_as as)

Determine if given AS is in the down state.

Parameters
[in]asApplication Server.
Returns
true in case as is down; false otherwise.

References osmo_ss7_as::fi, and XUA_AS_S_DOWN.

Referenced by hmrt_message_for_routing().

◆ osmo_ss7_as_find_by_l_rk_id()

struct osmo_ss7_as* osmo_ss7_as_find_by_l_rk_id ( struct osmo_ss7_instance inst,
uint32_t  l_rk_id 
)

Find Application Server by given local routing key ID.

Parameters
[in]instSS7 Instance on which we operate
[in]l_rk_idLocal Routing Key ID
Returns
pointer to Application Server on success; NULL otherwise

References osmo_ss7_instance::as_list, osmo_ss7_as::cfg, osmo_ss7_routing_key::l_rk_id, osmo_ss7_as::list, osmo_ss7_as::routing_key, and ss7_initialized.

Referenced by handle_reg_conf(), and ss7_find_free_l_rk_id().

◆ osmo_ss7_as_find_by_name()

struct osmo_ss7_as* osmo_ss7_as_find_by_name ( struct osmo_ss7_instance inst,
const char *  name 
)

Find Application Server by given name.

Parameters
[in]instSS7 Instance on which we operate
[in]nameName of AS
Returns
pointer to Application Server on success; NULL otherwise

References osmo_ss7_instance::as_list, osmo_ss7_as::cfg, osmo_ss7_as::list, osmo_ss7_as::name, and ss7_initialized.

Referenced by DEFUN_ATTR(), ipa_asp_fsm_wait_id_resp(), osmo_ss7_as_find_or_create(), and osmo_ss7_route_create().

◆ osmo_ss7_as_find_by_proto()

struct osmo_ss7_as* osmo_ss7_as_find_by_proto ( struct osmo_ss7_instance inst,
enum osmo_ss7_asp_protocol  proto 
)

Find Application Server (AS) by given protocol.

Parameters
[in]instSS7 Instance on which we operate
[in]protoProtocol identifier that must match
Returns
pointer to AS on success; NULL otherwise If an AS has an ASP also matching the given protocol, that AS is preferred. If there are multiple matches, return the first matching AS.

References osmo_ss7_instance::as_list, osmo_ss7_as::cfg, osmo_ss7_as::list, osmo_ss7_asp_find_by_proto(), osmo_ss7_as::proto, and ss7_initialized.

Referenced by osmo_sccp_simple_client_on_ss7_id().

◆ osmo_ss7_as_find_by_rctx()

struct osmo_ss7_as* osmo_ss7_as_find_by_rctx ( struct osmo_ss7_instance inst,
uint32_t  rctx 
)

Find Application Server by given routing context.

Parameters
[in]instSS7 Instance on which we operate
[in]rctxRouting Context
Returns
pointer to Application Server on success; NULL otherwise

References osmo_ss7_instance::as_list, osmo_ss7_as::cfg, osmo_ss7_routing_key::context, osmo_ss7_as::list, osmo_ss7_as::routing_key, and ss7_initialized.

Referenced by handle_rkey_dereg(), handle_rkey_reg(), osmo_ss7_find_free_rctx(), xua_asp_fsm_inactive(), and xua_find_as_for_asp().

◆ osmo_ss7_as_find_or_create()

struct osmo_ss7_as* osmo_ss7_as_find_or_create ( struct osmo_ss7_instance inst,
const char *  name,
enum osmo_ss7_asp_protocol  proto 
)

Find or Create Application Server.

Parameters
[in]instSS7 Instance on which we operate
[in]nameName of Application Server
[in]protoProtocol of Application Server
Returns
pointer to Application Server on success; NULL otherwise

References osmo_ss7_as::cfg, LOGPAS, osmo_ss7_as_find_by_name(), osmo_ss7_as::proto, ss7_as_alloc(), and ss7_initialized.

Referenced by DEFUN_ATTR(), handle_rkey_reg(), osmo_sccp_simple_client_on_ss7_id(), and osmo_sccp_simple_server_add_clnt().

◆ osmo_ss7_as_has_asp()

bool osmo_ss7_as_has_asp ( const struct osmo_ss7_as as,
const struct osmo_ss7_asp asp 
)

Determine if given AS contains ASP.

Parameters
[in]asApplication Server in which to look for asp
[in]aspApplication Server Process to look for in as
Returns
true in case asp is part of as; false otherwise

References osmo_ss7_as::asps, osmo_ss7_as::cfg, and ss7_initialized.

Referenced by as_list_for_asp(), determine_traf_mode(), dispatch_to_all_as(), find_single_as_for_asp(), get_all_rctx_for_asp(), handle_rkey_dereg(), ipa_find_as_for_asp(), osmo_sccp_simple_client_on_ss7_id(), osmo_ss7_as_add_asp(), xua_asp_fsm_inactive(), xua_find_as_for_asp(), xua_msg_add_asp_rctx(), and xua_rkm_cleanup_dyn_as_for_asp().

◆ osmo_ss7_as_tmode_compatible_xua()

◆ osmo_ss7_as_traffic_mode_name()

static const char* osmo_ss7_as_traffic_mode_name ( enum osmo_ss7_as_traffic_mode  mode)
inlinestatic

◆ osmo_ss7_asp_active()

◆ osmo_ss7_asp_destroy()

◆ osmo_ss7_asp_disconnect()

◆ osmo_ss7_asp_find()

struct osmo_ss7_asp* osmo_ss7_asp_find ( struct osmo_ss7_instance inst,
const char *  name,
uint16_t  remote_port,
uint16_t  local_port,
enum osmo_ss7_asp_protocol  proto 
)

◆ osmo_ss7_asp_find2()

struct osmo_ss7_asp* osmo_ss7_asp_find2 ( struct osmo_ss7_instance inst,
const char *  name,
uint16_t  remote_port,
uint16_t  local_port,
int  trans_proto,
enum osmo_ss7_asp_protocol  proto 
)

◆ osmo_ss7_asp_find_by_name()

◆ osmo_ss7_asp_find_by_proto()

struct osmo_ss7_asp* osmo_ss7_asp_find_by_proto ( struct osmo_ss7_as as,
enum osmo_ss7_asp_protocol  proto 
)

Find an ASP that matches the given ASP protocol (xUA variant).

Parameters
[in]asApplication Server in which to look for asp
[in]protoASP protocol (xUA variant) to match
Returns
SS7 ASP in case a matching one is found; NULL otherwise

References osmo_ss7_as::asps, osmo_ss7_as::cfg, osmo_ss7_asp::cfg, and osmo_ss7_asp::proto.

Referenced by osmo_sccp_simple_client_on_ss7_id(), and osmo_ss7_as_find_by_proto().

◆ osmo_ss7_asp_find_or_create()

struct osmo_ss7_asp* osmo_ss7_asp_find_or_create ( struct osmo_ss7_instance inst,
const char *  name,
uint16_t  remote_port,
uint16_t  local_port,
enum osmo_ss7_asp_protocol  proto 
)

◆ osmo_ss7_asp_find_or_create2()

◆ osmo_ss7_asp_get_log_subsys()

int osmo_ss7_asp_get_log_subsys ( const struct osmo_ss7_asp asp)

◆ osmo_ss7_asp_get_name()

const char* osmo_ss7_asp_get_name ( const struct osmo_ss7_asp asp)

Get the name of a given ASP.

Parameters
[in]aspThe ASP for which the name is requested
Returns
The name of the ASP, or NULL if not set

References osmo_ss7_asp::cfg, and osmo_ss7_asp::name.

◆ osmo_ss7_asp_get_proto()

enum osmo_ss7_asp_protocol osmo_ss7_asp_get_proto ( const struct osmo_ss7_asp asp)

Get the proto of a given ASP.

Parameters
[in]aspThe ASP for which the proto is requested
Returns
The proto of the ASP

References osmo_ss7_asp::cfg, and osmo_ss7_asp::proto.

◆ osmo_ss7_asp_get_trans_proto()

int osmo_ss7_asp_get_trans_proto ( const struct osmo_ss7_asp asp)

Get the transport proto of a given ASP.

Parameters
[in]aspThe ASP for which the transport proto is requested
Returns
The transport proto of the ASP (one of IPPROTO_*)

References osmo_ss7_asp::cfg, and osmo_ss7_asp::trans_proto.

◆ osmo_ss7_asp_peer_add_host()

int osmo_ss7_asp_peer_add_host ( struct osmo_ss7_asp_peer peer,
void *  talloc_ctx,
const char *  host 
)

Append (copy) address to a given ASP peer.

Previous addresses are kept.

Parameters
[in]peerApplication Server Process peer the address is appended to.
[in]talloc_ctxtalloc context used to allocate new address.
[in]hoststring containing an IP address.
Returns
0 on success; negative otherwise

References osmo_ss7_asp_peer_add_host2().

Referenced by osmo_sccp_simple_server_add_clnt(), osmo_ss7_xua_server_add_local_host(), and ss7_asp_set_default_peer_hosts().

◆ osmo_ss7_asp_peer_add_host2()

int osmo_ss7_asp_peer_add_host2 ( struct osmo_ss7_asp_peer peer,
void *  talloc_ctx,
const char *  host,
bool  is_primary_addr 
)

Append (copy) address to a given ASP peer.

Previous addresses are kept.

Parameters
[in]peerApplication Server Process peer the address is appended to.
[in]talloc_ctxtalloc context used to allocate new address.
[in]hoststring containing an IP address.
[in]is_primary_addrwhether this IP address is to be added as SCTP Primary Address
Returns
0 on success; negative otherwise

References osmo_ss7_asp_peer::host, osmo_ss7_asp_peer::host_cnt, host_is_ip_anyaddr(), and osmo_ss7_asp_peer::idx_primary.

Referenced by DEFUN_ATTR(), and osmo_ss7_asp_peer_add_host().

◆ osmo_ss7_asp_peer_del_host()

int osmo_ss7_asp_peer_del_host ( struct osmo_ss7_asp_peer peer,
const char *  host 
)

Remove address from a given ASP peer.

Parameters
[in]peerApplication Server Process peer the address is removed from.
[in]hoststring containing an IP address.
Returns
0 on success; negative otherwise

References osmo_ss7_asp_peer::host, osmo_ss7_asp_peer::host_cnt, and osmo_ss7_asp_peer::idx_primary.

Referenced by DEFUN_ATTR(), and osmo_ss7_xua_server_del_local_host().

◆ osmo_ss7_asp_peer_init()

void osmo_ss7_asp_peer_init ( struct osmo_ss7_asp_peer peer)

References osmo_ss7_asp_peer::idx_primary.

Referenced by ss7_asp_alloc().

◆ osmo_ss7_asp_peer_set_hosts()

int osmo_ss7_asp_peer_set_hosts ( struct osmo_ss7_asp_peer peer,
void *  talloc_ctx,
const char *const *  hosts,
size_t  host_cnt 
)

Set (copy) addresses for a given ASP peer.

Previous addresses are freed.

Parameters
[in]peerApplication Server Process peer whose addresses are to be set.
[in]talloc_ctxtalloc context used to allocate new addresses.
[in]hostsArray of strings containing IP addresses.
[in]host_cntNumber of strings in hosts
Returns
0 on success; negative otherwise

References osmo_ss7_asp_peer_set_hosts2().

Referenced by osmo_sccp_simple_client_on_ss7_id(), osmo_sccp_simple_server_add_clnt(), osmo_ss7_xua_server_set_local_hosts(), and xua_accept_cb().

◆ osmo_ss7_asp_peer_set_hosts2()

int osmo_ss7_asp_peer_set_hosts2 ( struct osmo_ss7_asp_peer peer,
void *  talloc_ctx,
const char *const *  hosts,
size_t  host_cnt,
int  idx_primary 
)

Set (copy) addresses for a given ASP peer.

Previous addresses are freed.

Parameters
[in]peerApplication Server Process peer whose addresses are to be set.
[in]talloc_ctxtalloc context used to allocate new addresses.
[in]hostsArray of strings containing IP addresses.
[in]host_cntNumber of strings in hosts
[in]idx_primaryIndex in "hosts" array marking the SCTP Primary Address, -1 if no explicit Primary Address set
Returns
0 on success; negative otherwise

References osmo_ss7_asp_peer::host, osmo_ss7_asp_peer::host_cnt, and osmo_ss7_asp_peer::idx_primary.

Referenced by osmo_ss7_asp_peer_set_hosts().

◆ osmo_ss7_asp_peer_snprintf()

int osmo_ss7_asp_peer_snprintf ( char *  buf,
size_t  buf_len,
struct osmo_ss7_asp_peer peer 
)

◆ osmo_ss7_asp_protocol_name()

◆ osmo_ss7_asp_protocol_port()

◆ osmo_ss7_asp_restart()

◆ osmo_ss7_asp_send()

int osmo_ss7_asp_send ( struct osmo_ss7_asp asp,
struct msgb *  msg 
)

◆ osmo_ss7_asp_use_default_lm()

◆ osmo_ss7_ensure_sccp()

struct osmo_sccp_instance* osmo_ss7_ensure_sccp ( struct osmo_ss7_instance inst)

◆ osmo_ss7_find_free_rctx()

int osmo_ss7_find_free_rctx ( struct osmo_ss7_instance inst)

References next_rctx, and osmo_ss7_as_find_by_rctx().

Referenced by handle_rkey_reg().

◆ osmo_ss7_init()

int osmo_ss7_init ( void  )

◆ osmo_ss7_instance_destroy()

◆ osmo_ss7_instance_find()

struct osmo_ss7_instance* osmo_ss7_instance_find ( uint32_t  id)

Find a SS7 Instance with given ID.

Parameters
[in]idID for which to search
Returns
osmo_ss7_instance on success; NULL on error

References osmo_ss7_instance::cfg, osmo_ss7_instance::id, osmo_ss7_instance::list, osmo_ss7_instances, and ss7_initialized.

Referenced by DEFUN(), osmo_sccp_simple_client_on_ss7_id(), osmo_ss7_instance_find_or_create(), show_asp(), show_asp_assoc_status(), and show_asp_remaddr().

◆ osmo_ss7_instance_find_or_create()

◆ osmo_ss7_instance_set_pc_fmt()

int osmo_ss7_instance_set_pc_fmt ( struct osmo_ss7_instance inst,
uint8_t  c0,
uint8_t  c1,
uint8_t  c2 
)

Set the point code format used in given SS7 instance.

References osmo_ss7_instance::cfg, osmo_ss7_pc_fmt::component_len, LOGSS7, and osmo_ss7_instance::pc_fmt.

◆ osmo_ss7_is_config_node()

int osmo_ss7_is_config_node ( struct vty *  vty,
int  node 
)

◆ osmo_ss7_link_destroy()

void osmo_ss7_link_destroy ( struct osmo_ss7_link link)

◆ osmo_ss7_link_find_or_create()

struct osmo_ss7_link* osmo_ss7_link_find_or_create ( struct osmo_ss7_linkset lset,
uint32_t  id 
)

Find or create SS7 Link with given ID in given Linkset.

Parameters
[in]lsetSS7 Linkset on which we operate
[in]idLink number within Linkset
Returns
pointer to SS7 Link on success; NULL on error

References osmo_ss7_link::cfg, osmo_ss7_linkset::cfg, osmo_ss7_link::id, osmo_ss7_linkset::inst, osmo_ss7_linkset::links, osmo_ss7_link::linkset, LOGSS7, osmo_ss7_linkset::name, and ss7_initialized.

◆ osmo_ss7_linkset_destroy()

◆ osmo_ss7_linkset_find_by_name()

struct osmo_ss7_linkset* osmo_ss7_linkset_find_by_name ( struct osmo_ss7_instance inst,
const char *  name 
)

Find SS7 Linkset by given name.

Parameters
[in]instSS7 Instance in which to look
[in]nameName of SS7 Linkset
Returns
pointer to linkset on success; NULL on error

References osmo_ss7_linkset::cfg, osmo_ss7_instance::linksets, osmo_ss7_linkset::list, osmo_ss7_linkset::name, and ss7_initialized.

Referenced by osmo_ss7_linkset_find_or_create(), and osmo_ss7_route_create().

◆ osmo_ss7_linkset_find_or_create()

struct osmo_ss7_linkset* osmo_ss7_linkset_find_or_create ( struct osmo_ss7_instance inst,
const char *  name,
uint32_t  pc 
)

Find or allocate SS7 Linkset.

Parameters
[in]instSS7 Instance in which we operate
[in]nameName of SS7 Linkset
[in]pcAdjacent Pointcode
Returns
pointer to Linkset on success; NULL on error

References osmo_ss7_linkset::adjacent_pc, osmo_ss7_linkset::cfg, osmo_ss7_linkset::inst, osmo_ss7_instance::linksets, osmo_ss7_linkset::list, LOGSS7, osmo_ss7_linkset::name, osmo_ss7_linkset_find_by_name(), and ss7_initialized.

◆ osmo_ss7_mtp_to_user()

◆ osmo_ss7_pc_is_local()

◆ osmo_ss7_pc_is_valid()

◆ osmo_ss7_pc_normalize()

uint32_t osmo_ss7_pc_normalize ( const struct osmo_ss7_pc_fmt pc_fmt,
uint32_t  pc 
)

◆ osmo_ss7_pc_width()

◆ osmo_ss7_pointcode_parse()

◆ osmo_ss7_pointcode_parse_mask_or_len()

int osmo_ss7_pointcode_parse_mask_or_len ( struct osmo_ss7_instance inst,
const char *  in 
)

◆ osmo_ss7_pointcode_print()

◆ osmo_ss7_pointcode_print2()

const char* osmo_ss7_pointcode_print2 ( const struct osmo_ss7_instance inst,
uint32_t  pc 
)

◆ osmo_ss7_pointcode_print_buf()

const char* osmo_ss7_pointcode_print_buf ( char *  buf,
size_t  buf_len,
const struct osmo_ss7_instance inst,
uint32_t  pc 
)

◆ osmo_ss7_register_rx_unknown_cb()

void osmo_ss7_register_rx_unknown_cb ( osmo_ss7_asp_rx_unknown_cb cb)

Register a call-back function for unknown SCTP PPID / IPA Stream ID.

References g_osmo_ss7_asp_rx_unknown_cb.

◆ osmo_ss7_route_create()

struct osmo_ss7_route* osmo_ss7_route_create ( struct osmo_ss7_route_table rtbl,
uint32_t  pc,
uint32_t  mask,
const char *  linkset_name 
)

Create a new route in the given routing table.

Parameters
[in]rtblRouting Table in which the route is to be created
[in]pcPoint Code of the destination of the route
[in]maskMask of the destination Point Code pc
[in]linkset_namestring name of the linkset to be used
Returns
caller-allocated + initialized route, NULL on error

References osmo_ss7_route::as, osmo_ss7_instance::cfg, osmo_ss7_linkset::cfg, osmo_ss7_route::cfg, osmo_ss7_as::cfg, osmo_ss7_route::dest, osmo_ss7_route_table::inst, osmo_ss7_route::linkset, osmo_ss7_route::linkset_name, LOGSS7, osmo_ss7_route::mask, osmo_ss7_linkset::name, osmo_ss7_as::name, osmo_ss7_as_find_by_name(), osmo_ss7_linkset_find_by_name(), osmo_ss7_pc_normalize(), osmo_ss7_pointcode_print(), osmo_ss7_route_find_dpc_mask(), osmo_ss7_route::pc, osmo_ss7_instance::pc_fmt, route_insert_sorted(), osmo_ss7_route::rtable, and ss7_initialized.

Referenced by _rout_key(), DEFUN_ATTR(), handle_rkey_reg(), ipa_add_route(), osmo_sccp_simple_client_on_ss7_id(), and osmo_sccp_simple_server_add_clnt().

◆ osmo_ss7_route_destroy()

◆ osmo_ss7_route_find_dpc()

struct osmo_ss7_route* osmo_ss7_route_find_dpc ( struct osmo_ss7_route_table rtbl,
uint32_t  dpc 
)

◆ osmo_ss7_route_find_dpc_mask()

◆ osmo_ss7_route_lookup()

struct osmo_ss7_route* osmo_ss7_route_lookup ( struct osmo_ss7_instance inst,
uint32_t  dpc 
)

Find a SS7 route for given destination point code in given SS7.

References osmo_ss7_route_find_dpc(), osmo_ss7_instance::rtable_system, and ss7_initialized.

Referenced by gen_mtp_transfer_req_xua(), hmrt_message_for_routing(), and xua_snm_rx_daud().

◆ osmo_ss7_route_name()

const char* osmo_ss7_route_name ( struct osmo_ss7_route rt,
bool  list_asps 
)

Return human readable representation of the route, in a static buffer.

This uses both osmo_ss7_pointcode_print() and osmo_ss7_pointcode_print2(), so pairing osmo_ss7_route_name() with osmo_ss7_pointcode_print() in the same printf statement is likely to conflict.

Parameters
[in]rtThe route information to print, or NULL.
[in]list_aspsIf true, append info for all ASPs for the route's AS.
Returns
A string constant or static buffer.

References APPEND, osmo_ss7_route::as, osmo_ss7_as::asps, osmo_ss7_linkset::cfg, osmo_ss7_route::cfg, osmo_ss7_as::cfg, osmo_ss7_asp::cfg, osmo_ss7_route::dest, osmo_ss7_route_table::inst, osmo_ss7_route::linkset, osmo_ss7_route::mask, osmo_ss7_linkset::name, osmo_ss7_as::name, osmo_ss7_asp::name, osmo_ss7_asp_protocol_name(), osmo_ss7_pointcode_print(), osmo_ss7_pointcode_print2(), osmo_ss7_route::pc, osmo_ss7_as::proto, osmo_ss7_route::rtable, and osmo_ss7_asp::sock_name.

Referenced by hmrt_message_for_routing().

◆ osmo_ss7_route_print()

◆ osmo_ss7_route_table_destroy()

void osmo_ss7_route_table_destroy ( struct osmo_ss7_route_table rtbl)

◆ osmo_ss7_route_table_find()

◆ osmo_ss7_route_table_find_or_create()

◆ osmo_ss7_tmode_from_xua()

◆ osmo_ss7_tmode_to_xua()

◆ osmo_ss7_user_mtp_xfer_req()

◆ osmo_ss7_user_register()

int osmo_ss7_user_register ( struct osmo_ss7_instance inst,
uint8_t  service_ind,
struct osmo_ss7_user user 
)

Register a MTP user for a given service indicator.

Parameters
[in]instSS7 instance for which we register the user
[in]service_indService (ISUP, SCCP, ...)
[in]userSS7 user (including primitive call-back)
Returns
0 on success; negative on error

References osmo_ss7_user::inst, osmo_ss7_user::name, osmo_ss7_user::priv, and osmo_ss7_instance::user.

Referenced by osmo_sccp_instance_create().

◆ osmo_ss7_user_unregister()

int osmo_ss7_user_unregister ( struct osmo_ss7_instance inst,
uint8_t  service_ind,
struct osmo_ss7_user user 
)

Unregister a MTP user for a given service indicator.

Parameters
[in]instSS7 instance for which we register the user
[in]service_indService (ISUP, SCCP, ...)
[in]user(optional) SS7 user. If present, we will not unregister other users
Returns
0 on success; negative on error

References osmo_ss7_user::inst, and osmo_ss7_instance::user.

Referenced by osmo_sccp_instance_destroy().

◆ osmo_ss7_vty_go_parent()

◆ osmo_ss7_vty_init_asp()

void osmo_ss7_vty_init_asp ( void *  ctx)

◆ osmo_ss7_vty_init_sg()

void osmo_ss7_vty_init_sg ( void *  ctx)

◆ osmo_ss7_xua_server_add_local_host()

int osmo_ss7_xua_server_add_local_host ( struct osmo_xua_server xs,
const char *  local_host 
)

◆ osmo_ss7_xua_server_bind()

int osmo_ss7_xua_server_bind ( struct osmo_xua_server xs)

Set the xUA server to bind/listen to the currently configured ip/port.

Parameters
[in]xsxUA server to operate
Returns
0 on success, negative value on error.

References osmo_xua_server::cfg, osmo_xua_server::local, osmo_ss7_asp_peer_snprintf(), osmo_ss7_asp_protocol_vals, osmo_xua_server::proto, osmo_xua_server::sctp_init, and osmo_xua_server::server.

Referenced by osmo_sccp_simple_server_on_ss7_id(), and osmo_ss7_vty_go_parent().

◆ osmo_ss7_xua_server_create()

struct osmo_xua_server* osmo_ss7_xua_server_create ( struct osmo_ss7_instance inst,
enum osmo_ss7_asp_protocol  proto,
uint16_t  local_port,
const char *  local_host 
)

create a new xUA server configured with given ip/port

Parameters
[in]ctxtalloc allocation context
[in]protoprotocol (xUA variant) to use
[in]local_portlocal SCTP port to bind/listen to
[in]local_hostlocal IP address to bind/listen to (optional)
Returns
callee-allocated osmo_xua_server in case of success

References osmo_ss7_xua_server_create2(), ss7_default_trans_proto_for_asp_proto(), and osmo_xua_server::trans_proto.

◆ osmo_ss7_xua_server_create2()

struct osmo_xua_server* osmo_ss7_xua_server_create2 ( struct osmo_ss7_instance inst,
int  trans_proto,
enum osmo_ss7_asp_protocol  proto,
uint16_t  local_port,
const char *  local_host 
)

create a new xUA server configured with given ip/port

Parameters
[in]instSS7 Instance on which we operate
[in]trans_prototransport protocol to use (one of IPPROTO_*)
[in]protoprotocol (xUA variant) to use
[in]local_portlocal SCTP port to bind/listen to
[in]local_hostlocal IP address to bind/listen to (optional)
Returns
callee-allocated osmo_xua_server in case of success

References osmo_xua_server::asp_list, osmo_xua_server::cfg, osmo_xua_server::inst, osmo_xua_server::list, osmo_xua_server::local, OSMO_SS7_ASP_PROT_SUA, osmo_ss7_asp_protocol_name(), osmo_ss7_asp_protocol_vals, osmo_ss7_ensure_sccp(), osmo_ss7_xua_server_set_local_host(), osmo_ss7_asp_peer::port, osmo_xua_server::proto, osmo_xua_server::server, ss7_asp_protocol_check_trans_proto(), ss7_initialized, osmo_xua_server::trans_proto, xua_accept_cb(), and osmo_ss7_instance::xua_servers.

Referenced by DEFUN_ATTR(), osmo_sccp_simple_server_on_ss7_id(), and osmo_ss7_xua_server_create().

◆ osmo_ss7_xua_server_del_local_host()

int osmo_ss7_xua_server_del_local_host ( struct osmo_xua_server xs,
const char *  local_host 
)

◆ osmo_ss7_xua_server_destroy()

◆ osmo_ss7_xua_server_find()

struct osmo_xua_server* osmo_ss7_xua_server_find ( struct osmo_ss7_instance inst,
enum osmo_ss7_asp_protocol  proto,
uint16_t  local_port 
)

find an xUA server with the given parameters

Parameters
[in]instSS7 Instance on which we operate
[in]protoprotocol (xUA variant) in use
[in]local_portlocal port of the server
Returns
osmo_xua_server or NULL (not found)

References osmo_ss7_xua_server_find2(), ss7_default_trans_proto_for_asp_proto(), and osmo_xua_server::trans_proto.

◆ osmo_ss7_xua_server_find2()

struct osmo_xua_server* osmo_ss7_xua_server_find2 ( struct osmo_ss7_instance inst,
int  trans_proto,
enum osmo_ss7_asp_protocol  proto,
uint16_t  local_port 
)

find an xUA server with the given parameters

Parameters
[in]instSS7 Instance on which we operate
[in]trans_prototransport protocol in use (one of IPPROTO_*)
[in]protoprotocol (xUA variant) in use
[in]local_portlocal port of the server
Returns
osmo_xua_server or NULL (not found)

References osmo_xua_server::cfg, osmo_xua_server::list, osmo_xua_server::local, osmo_ss7_asp_peer::port, osmo_xua_server::proto, ss7_initialized, osmo_xua_server::trans_proto, and osmo_ss7_instance::xua_servers.

Referenced by DEFUN_ATTR(), osmo_sccp_simple_client_on_ss7_id(), osmo_sccp_simple_server_add_clnt(), and osmo_ss7_xua_server_find().

◆ osmo_ss7_xua_server_set_local_host()

int osmo_ss7_xua_server_set_local_host ( struct osmo_xua_server xs,
const char *  local_host 
)

◆ osmo_ss7_xua_server_set_local_hosts()

int osmo_ss7_xua_server_set_local_hosts ( struct osmo_xua_server xs,
const char **  local_hosts,
size_t  local_host_cnt 
)

Variable Documentation

◆ osmo_ss7_as_traffic_mode_vals

struct value_string osmo_ss7_as_traffic_mode_vals[]

◆ osmo_ss7_asp_protocol_vals

◆ osmo_ss7_asp_role_names

const struct value_string osmo_ss7_asp_role_names[]

Referenced by show_one_asp(), and write_one_asp().

◆ osmo_ss7_instances