| 
    libosmo-sigtran 1.9.0.3-fc4c
    
   Osmocom SIGTRAN library 
   | 
 
#include <string.h>#include <errno.h>#include <unistd.h>#include <inttypes.h>#include <netdb.h>#include <netinet/in.h>#include <netinet/sctp.h>#include <osmocom/sigtran/osmo_ss7.h>#include <osmocom/sigtran/mtp_sap.h>#include <osmocom/sigtran/protocol/mtp.h>#include <osmocom/sigtran/protocol/sua.h>#include <osmocom/sigtran/protocol/m3ua.h>#include <osmocom/core/linuxlist.h>#include <osmocom/core/select.h>#include <osmocom/core/utils.h>#include <osmocom/core/talloc.h>#include <osmocom/core/logging.h>#include <osmocom/core/msgb.h>#include <osmocom/core/socket.h>#include <osmocom/core/sockaddr_str.h>#include <osmocom/netif/stream.h>#include <osmocom/netif/ipa.h>#include <osmocom/netif/sctp.h>#include "sccp_internal.h"#include "xua_internal.h"#include "ss7_internal.h"#include "xua_asp_fsm.h"#include "xua_as_fsm.h"Macros | |
| #define | MAX_PC_STR_LEN 32 | 
Functions | |
| LLIST_HEAD (osmo_ss7_instances) | |
| int | osmo_ss7_find_free_rctx (struct osmo_ss7_instance *inst) | 
| uint32_t | ss7_find_free_l_rk_id (struct osmo_ss7_instance *inst) | 
| static int | strnappendchar (char *str, char c, size_t n) | 
| static const char * | gen_pc_fmtstr (const struct osmo_ss7_pc_fmt *pc_fmt, unsigned int *num_comp_exp) | 
| static unsigned int | num_pc_comp_exp (const struct osmo_ss7_pc_fmt *pc_fmt) | 
| 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) | 
| static unsigned int | get_pc_comp_shift (const struct osmo_ss7_pc_fmt *pc_fmt, unsigned int comp_num) | 
| static uint32_t | pc_comp_shift_and_mask (const struct osmo_ss7_pc_fmt *pc_fmt, unsigned int comp_num, uint32_t pc) | 
| int | osmo_ss7_pointcode_parse (struct osmo_ss7_instance *inst, const char *str) | 
| const char * | osmo_ss7_pointcode_print_buf (char *buf, size_t 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) | 
| int | osmo_ss7_pointcode_parse_mask_or_len (struct osmo_ss7_instance *inst, const char *in) | 
| struct osmo_ss7_instance * | osmo_ss7_instance_find (uint32_t id) | 
| Find a SS7 Instance with given ID.  More... | |
| struct osmo_ss7_instance * | osmo_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_instance * | osmo_ss7_ensure_sccp (struct osmo_ss7_instance *inst) | 
| Allocate an SCCP instance, if not present yet.  More... | |
| 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) | 
| void | osmo_ss7_linkset_destroy (struct osmo_ss7_linkset *lset) | 
| Destroy a SS7 Linkset.  More... | |
| struct osmo_ss7_linkset * | osmo_ss7_linkset_find_by_name (struct osmo_ss7_instance *inst, const char *name) | 
| Find SS7 Linkset by given name.  More... | |
| 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.  More... | |
| void | osmo_ss7_link_destroy (struct osmo_ss7_link *link) | 
| Destroy SS7 Link.  More... | |
| 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.  More... | |
| struct osmo_ss7_route_table * | osmo_ss7_route_table_find (struct osmo_ss7_instance *inst, const char *name) | 
| struct osmo_ss7_route_table * | osmo_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_route * | osmo_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_route * | osmo_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_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.  More... | |
| static void | route_insert_sorted (struct osmo_ss7_route_table *rtbl, struct osmo_ss7_route *cmp) | 
| 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.  More... | |
| void | osmo_ss7_route_destroy (struct osmo_ss7_route *rt) | 
| Destroy a given SS7 route.  More... | |
| static unsigned int | count_leading_one_bits (uint32_t inp, unsigned int nbits) | 
| static int | u32_masklen (uint32_t mask, unsigned int nbits) | 
| const char * | osmo_ss7_route_print (const struct osmo_ss7_route *rt) | 
| struct osmo_ss7_as * | osmo_ss7_as_find_by_name (struct osmo_ss7_instance *inst, const char *name) | 
| Find Application Server by given name.  More... | |
| 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.  More... | |
| 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.  More... | |
| 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.  More... | |
| 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.  More... | |
| bool | ss7_ipv6_sctp_supported (const char *host, bool bind) | 
| struct osmo_ss7_asp * | osmo_ss7_asp_find_by_name (struct osmo_ss7_instance *inst, const char *name) | 
| 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).  More... | |
| 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) | 
| 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) | 
| struct osmo_ss7_asp * | osmo_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) | 
| 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) | 
| 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  More... | |
| 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  More... | |
| bool | osmo_ss7_pc_is_local (struct osmo_ss7_instance *inst, uint32_t pc) | 
| int | osmo_ss7_init (void) | 
| int | osmo_ss7_tmode_to_xua (enum osmo_ss7_as_traffic_mode tmod) | 
| enum osmo_ss7_as_traffic_mode | osmo_ss7_tmode_from_xua (uint32_t in) | 
| bool | osmo_ss7_as_tmode_compatible_xua (struct osmo_ss7_as *as, uint32_t m3ua_tmt) | 
Variables | |
| bool | ss7_initialized = false | 
| static int32_t | next_rctx = 1 | 
| static int32_t | next_l_rk_id = 1 | 
| const struct value_string | mtp_unavail_cause_vals [] | 
| static const struct osmo_ss7_pc_fmt | default_pc_fmt | 
| #define MAX_PC_STR_LEN 32 | 
      
  | 
  static | 
Referenced by u32_masklen().
      
  | 
  static | 
References osmo_ss7_pc_fmt::component_len, osmo_ss7_pc_fmt::delimiter, MAX_PC_STR_LEN, and strnappendchar().
Referenced by osmo_ss7_pointcode_parse(), and osmo_ss7_pointcode_print_buf().
      
  | 
  static | 
References osmo_ss7_pc_fmt::component_len, and osmo_ss7_pc_width().
Referenced by osmo_ss7_pointcode_parse(), and pc_comp_shift_and_mask().
| LLIST_HEAD | ( | osmo_ss7_instances | ) | 
      
  | 
  static | 
References osmo_ss7_pc_fmt::component_len.
Referenced by osmo_ss7_pointcode_parse(), and osmo_ss7_pointcode_print_buf().
| 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.
| [in] | inst | SS7 Instance on which we operate | 
| [in] | l_rk_id | Local Routing Key ID | 
References osmo_ss7_instance::as_list, osmo_ss7_as::cfg, osmo_ss7_as::inst, 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().
| struct osmo_ss7_as * osmo_ss7_as_find_by_name | ( | struct osmo_ss7_instance * | inst, | 
| const char * | name | ||
| ) | 
Find Application Server by given name.
| [in] | inst | SS7 Instance on which we operate | 
| [in] | name | Name of AS | 
References osmo_ss7_instance::as_list, osmo_ss7_as::cfg, osmo_ss7_as::inst, 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().
| 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.
| [in] | inst | SS7 Instance on which we operate | 
| [in] | proto | Protocol identifier that must match | 
References osmo_ss7_instance::as_list, osmo_ss7_as::cfg, osmo_ss7_as::inst, 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().
| 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.
| [in] | inst | SS7 Instance on which we operate | 
| [in] | rctx | Routing Context | 
References osmo_ss7_instance::as_list, osmo_ss7_as::cfg, osmo_ss7_routing_key::context, osmo_ss7_as::inst, 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().
| 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.
| [in] | inst | SS7 Instance on which we operate | 
| [in] | name | Name of Application Server | 
| [in] | proto | Protocol of Application Server | 
References osmo_ss7_as::cfg, osmo_ss7_as::inst, LOGPAS, osmo_ss7_as::name, 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().
| bool osmo_ss7_as_tmode_compatible_xua | ( | struct osmo_ss7_as * | as, | 
| uint32_t | m3ua_tmt | ||
| ) | 
References osmo_ss7_as::cfg, M3UA_TMOD_BCAST, M3UA_TMOD_LOADSHARE, M3UA_TMOD_OVERRIDE, osmo_ss7_as::mode, osmo_ss7_as::mode_set_by_peer, osmo_ss7_as::mode_set_by_vty, OSMO_SS7_AS_TMOD_BCAST, OSMO_SS7_AS_TMOD_LOADSHARE, OSMO_SS7_AS_TMOD_OVERRIDE, and OSMO_SS7_AS_TMOD_ROUNDROBIN.
Referenced by handle_rkey_reg(), and xua_asp_fsm_inactive().
| 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 | ||
| ) | 
| 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 | ||
| ) | 
| struct osmo_ss7_asp * osmo_ss7_asp_find_by_name | ( | struct osmo_ss7_instance * | inst, | 
| const char * | name | ||
| ) | 
References osmo_ss7_instance::asp_list, osmo_ss7_asp::cfg, osmo_ss7_asp::inst, osmo_ss7_asp::list, osmo_ss7_asp::name, and ss7_initialized.
Referenced by DEFUN(), DEFUN_ATTR(), osmo_ss7_as_add_asp(), osmo_ss7_as_del_asp(), osmo_ss7_asp_find2(), osmo_ss7_asp_find_or_create2(), show_asp(), show_asp_assoc_status(), and show_asp_remaddr().
| 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).
| [in] | as | Application Server in which to look for asp | 
| [in] | proto | ASP protocol (xUA variant) to match | 
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().
| 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 | ||
| ) | 
| struct osmo_ss7_asp * osmo_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 | ||
| ) | 
References osmo_ss7_asp::cfg, osmo_ss7_asp::inst, osmo_ss7_asp::local, osmo_ss7_asp::name, osmo_ss7_asp_find_by_name(), osmo_ss7_asp_peer::port, osmo_ss7_asp::proto, osmo_ss7_asp::remote, ss7_asp_alloc(), ss7_initialized, and osmo_ss7_asp::trans_proto.
Referenced by DEFUN_ATTR(), osmo_sccp_simple_client_on_ss7_id(), osmo_sccp_simple_server_add_clnt(), osmo_ss7_asp_find_or_create(), and xua_accept_cb().
| struct osmo_sccp_instance * osmo_ss7_ensure_sccp | ( | struct osmo_ss7_instance * | inst | ) | 
Allocate an SCCP instance, if not present yet.
References LOGSS7, osmo_sccp_instance_create(), and osmo_ss7_instance::sccp.
Referenced by DEFUN_ATTR(), osmo_sccp_simple_client_on_ss7_id(), osmo_sccp_simple_server_on_ss7_id(), osmo_ss7_xua_server_create2(), and ss7_asp_alloc().
| 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().
| int osmo_ss7_init | ( | void | ) | 
References ipa_asp_fsm, sccp_scoc_fsm, ss7_initialized, xua_as_fsm, xua_asp_fsm, and xua_default_lm_fsm.
| void osmo_ss7_instance_destroy | ( | struct osmo_ss7_instance * | inst | ) | 
Destroy a SS7 Instance.
| [in] | inst | SS7 Instance to be destroyed | 
References osmo_ss7_instance::as_list, osmo_ss7_instance::asp_list, osmo_ss7_asp::inst, osmo_ss7_instance::linksets, osmo_ss7_instance::list, osmo_ss7_asp::list, LOGSS7, osmo_ss7_as_destroy(), osmo_ss7_asp_destroy(), osmo_ss7_linkset_destroy(), and ss7_initialized.
Referenced by osmo_sccp_simple_client_on_ss7_id(), and osmo_sccp_simple_server_on_ss7_id().
| struct osmo_ss7_instance * osmo_ss7_instance_find | ( | uint32_t | id | ) | 
Find a SS7 Instance with given ID.
| [in] | id | ID for which to search | 
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().
| struct osmo_ss7_instance * osmo_ss7_instance_find_or_create | ( | void * | ctx, | 
| uint32_t | id | ||
| ) | 
Find or create a SS7 Instance.
| [in] | ctx | talloc allocation context to use for allocations | 
| [in] | id | ID of SS7 Instance | 
References osmo_ss7_instance::as_list, osmo_ss7_instance::asp_list, osmo_ss7_instance::cfg, osmo_ss7_pc_fmt::component_len, osmo_ss7_pc_fmt::delimiter, osmo_ss7_instance::id, osmo_ss7_instance::linksets, osmo_ss7_instance::list, LOGSS7, osmo_ss7_instance_find(), osmo_ss7_instances, OSMO_SS7_PC_INVALID, osmo_ss7_route_table_find_or_create(), osmo_ss7_instance::pc_fmt, osmo_ss7_instance::primary_pc, osmo_ss7_instance::rtable_list, osmo_ss7_instance::rtable_system, osmo_ss7_instance::sccp_address_book, ss7_initialized, and osmo_ss7_instance::xua_servers.
Referenced by DEFUN_ATTR(), osmo_sccp_simple_client_on_ss7_id(), and osmo_sccp_simple_server_on_ss7_id().
| 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, osmo_ss7_asp::inst, LOGSS7, and osmo_ss7_instance::pc_fmt.
| void osmo_ss7_link_destroy | ( | struct osmo_ss7_link * | link | ) | 
Destroy SS7 Link.
| [in] | link | SS7 Link to be destroyed | 
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.
Referenced by osmo_ss7_linkset_destroy().
| 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.
| [in] | lset | SS7 Linkset on which we operate | 
| [in] | id | Link number within Linkset | 
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.
| void osmo_ss7_linkset_destroy | ( | struct osmo_ss7_linkset * | lset | ) | 
Destroy a SS7 Linkset.
| [in] | lset | Linkset to be destroyed | 
References osmo_ss7_linkset::cfg, osmo_ss7_route::dest, osmo_ss7_linkset::inst, osmo_ss7_linkset::links, osmo_ss7_route::linkset, osmo_ss7_linkset::list, osmo_ss7_route::list, LOGSS7, osmo_ss7_linkset::name, osmo_ss7_link_destroy(), osmo_ss7_route_destroy(), osmo_ss7_route_table::routes, osmo_ss7_instance::rtable_system, and ss7_initialized.
Referenced by osmo_ss7_instance_destroy().
| struct osmo_ss7_linkset * osmo_ss7_linkset_find_by_name | ( | struct osmo_ss7_instance * | inst, | 
| const char * | name | ||
| ) | 
Find SS7 Linkset by given name.
| [in] | inst | SS7 Instance in which to look | 
| [in] | name | Name of SS7 Linkset | 
References osmo_ss7_linkset::cfg, osmo_ss7_linkset::inst, 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().
| 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.
| [in] | inst | SS7 Instance in which we operate | 
| [in] | name | Name of SS7 Linkset | 
| [in] | pc | Adjacent Pointcode | 
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.
| int osmo_ss7_mtp_to_user | ( | struct osmo_ss7_instance * | inst, | 
| struct osmo_mtp_prim * | omp | ||
| ) | 
| bool osmo_ss7_pc_is_local | ( | struct osmo_ss7_instance * | inst, | 
| uint32_t | pc | ||
| ) | 
| uint32_t osmo_ss7_pc_normalize | ( | const struct osmo_ss7_pc_fmt * | pc_fmt, | 
| uint32_t | pc | ||
| ) | 
References osmo_ss7_pc_width().
Referenced by osmo_ss7_route_create(), osmo_ss7_route_find_dpc(), and osmo_ss7_route_find_dpc_mask().
| uint8_t osmo_ss7_pc_width | ( | const struct osmo_ss7_pc_fmt * | pc_fmt | ) | 
References osmo_ss7_pc_fmt::component_len.
Referenced by get_pc_comp_shift(), osmo_ss7_pc_normalize(), osmo_ss7_pointcode_parse_mask_or_len(), and osmo_ss7_route_print().
| int osmo_ss7_pointcode_parse | ( | struct osmo_ss7_instance * | inst, | 
| const char * | str | ||
| ) | 
References osmo_ss7_instance::cfg, osmo_ss7_pc_fmt::component_len, default_pc_fmt, gen_pc_fmtstr(), get_pc_comp_shift(), LOGSS7, num_pc_comp_exp(), and osmo_ss7_instance::pc_fmt.
Referenced by _rout_key(), DEFUN_ATTR(), and osmo_ss7_pointcode_parse_mask_or_len().
| int osmo_ss7_pointcode_parse_mask_or_len | ( | struct osmo_ss7_instance * | inst, | 
| const char * | in | ||
| ) | 
References osmo_ss7_instance::cfg, default_pc_fmt, osmo_ss7_pc_width(), osmo_ss7_pointcode_parse(), and osmo_ss7_instance::pc_fmt.
Referenced by DEFUN_ATTR().
| const char * osmo_ss7_pointcode_print | ( | const struct osmo_ss7_instance * | inst, | 
| uint32_t | pc | ||
| ) | 
References MAX_PC_STR_LEN, and osmo_ss7_pointcode_print_buf().
Referenced by DEFUN(), format_affected_pcs_c(), handle_rkey_dereg(), handle_rkey_reg(), hmrt_message_for_routing(), ipa_del_route(), m3ua_hmdc_rx_from_l2(), m3ua_rx_xfer(), osmo_sccp_simple_client_on_ss7_id(), osmo_sccp_user_unbind(), osmo_ss7_route_create(), osmo_ss7_route_destroy(), osmo_ss7_route_name(), osmo_ss7_route_print(), sccp_addr_to_str_buf(), sccp_scoc_rx_inval_opc(), sccp_user_bind_pc(), scrc_node_6(), show_user(), vty_show_connection(), write_one_as(), write_one_cs7(), write_one_rtable(), write_sccp_addressbook(), and xua_snm_rx_dupu().
| const char * osmo_ss7_pointcode_print2 | ( | const struct osmo_ss7_instance * | inst, | 
| uint32_t | pc | ||
| ) | 
References MAX_PC_STR_LEN, and osmo_ss7_pointcode_print_buf().
Referenced by m3ua_rx_xfer(), osmo_ss7_route_name(), osmo_ss7_route_print(), sccp_scoc_rx_inval_opc(), and write_one_rtable().
| const char * osmo_ss7_pointcode_print_buf | ( | char * | buf, | 
| size_t | len, | ||
| const struct osmo_ss7_instance * | inst, | ||
| uint32_t | pc | ||
| ) | 
References osmo_ss7_instance::cfg, default_pc_fmt, gen_pc_fmtstr(), len, num_pc_comp_exp(), osmo_ss7_pc_is_valid(), pc_comp_shift_and_mask(), and osmo_ss7_instance::pc_fmt.
Referenced by osmo_ss7_pointcode_print(), and osmo_ss7_pointcode_print2().
| 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.
| [in] | rtbl | Routing Table in which the route is to be created | 
| [in] | pc | Point Code of the destination of the route | 
| [in] | mask | Mask of the destination Point Code pc | 
| [in] | linkset_name | string name of the linkset to be used | 
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().
| void osmo_ss7_route_destroy | ( | struct osmo_ss7_route * | rt | ) | 
Destroy a given SS7 route.
References osmo_ss7_route::cfg, osmo_ss7_route_table::inst, osmo_ss7_route::linkset_name, osmo_ss7_route::list, LOGSS7, osmo_ss7_route::mask, osmo_ss7_pointcode_print(), osmo_ss7_route::pc, osmo_ss7_route::rtable, and ss7_initialized.
Referenced by _rout_key(), DEFUN_ATTR(), handle_rkey_dereg(), handle_rkey_reg(), ipa_del_route(), osmo_sccp_simple_client_on_ss7_id(), osmo_sccp_simple_server_add_clnt(), osmo_ss7_as_destroy(), and osmo_ss7_linkset_destroy().
| struct osmo_ss7_route * osmo_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.
References osmo_ss7_instance::cfg, osmo_ss7_route::cfg, dpc, osmo_ss7_route_table::inst, osmo_ss7_route::list, osmo_ss7_route::mask, osmo_ss7_pc_normalize(), osmo_ss7_route::pc, osmo_ss7_instance::pc_fmt, osmo_ss7_route_table::routes, and ss7_initialized.
Referenced by handle_rkey_dereg(), and osmo_ss7_route_lookup().
| struct osmo_ss7_route * osmo_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.
References osmo_ss7_instance::cfg, osmo_ss7_route::cfg, dpc, osmo_ss7_route_table::inst, osmo_ss7_route::list, osmo_ss7_route::mask, osmo_ss7_pc_normalize(), osmo_ss7_route::pc, osmo_ss7_instance::pc_fmt, osmo_ss7_route_table::routes, and ss7_initialized.
Referenced by _rout_key(), DEFUN_ATTR(), ipa_add_route(), ipa_del_route(), osmo_sccp_simple_client_on_ss7_id(), and osmo_ss7_route_create().
| 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 dpc, 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().
| const char * osmo_ss7_route_print | ( | const struct osmo_ss7_route * | rt | ) | 
References osmo_ss7_instance::cfg, osmo_ss7_route::cfg, osmo_ss7_route_table::inst, osmo_ss7_route::mask, osmo_ss7_pc_width(), osmo_ss7_pointcode_print(), osmo_ss7_pointcode_print2(), osmo_ss7_route::pc, osmo_ss7_instance::pc_fmt, osmo_ss7_route::rtable, and u32_masklen().
Referenced by vty_dump_rtable().
| void osmo_ss7_route_table_destroy | ( | struct osmo_ss7_route_table * | rtbl | ) | 
References osmo_ss7_route_table::list.
| struct osmo_ss7_route_table * osmo_ss7_route_table_find | ( | struct osmo_ss7_instance * | inst, | 
| const char * | name | ||
| ) | 
| struct osmo_ss7_route_table * osmo_ss7_route_table_find_or_create | ( | struct osmo_ss7_instance * | inst, | 
| const char * | name | ||
| ) | 
| enum osmo_ss7_as_traffic_mode osmo_ss7_tmode_from_xua | ( | uint32_t | in | ) | 
References M3UA_TMOD_BCAST, M3UA_TMOD_LOADSHARE, M3UA_TMOD_OVERRIDE, OSMO_SS7_AS_TMOD_BCAST, OSMO_SS7_AS_TMOD_LOADSHARE, and OSMO_SS7_AS_TMOD_OVERRIDE.
Referenced by handle_rkey_reg(), and xua_asp_fsm_inactive().
| int osmo_ss7_tmode_to_xua | ( | enum osmo_ss7_as_traffic_mode | tmod | ) | 
References M3UA_TMOD_BCAST, M3UA_TMOD_LOADSHARE, M3UA_TMOD_OVERRIDE, OSMO_SS7_AS_TMOD_BCAST, OSMO_SS7_AS_TMOD_LOADSHARE, and OSMO_SS7_AS_TMOD_OVERRIDE.
Referenced by peer_send(), and xua_rkm_send_reg_req().
| 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.
| [in] | inst | SS7 instance for which we register the user | 
| [in] | service_ind | Service (ISUP, SCCP, ...) | 
| [in] | user | SS7 user (including primitive call-back) | 
References osmo_ss7_user::inst, osmo_ss7_user::name, osmo_ss7_user::priv, and osmo_ss7_instance::user.
Referenced by osmo_sccp_instance_create().
| 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.
| [in] | inst | SS7 instance for which we register the user | 
| [in] | service_ind | Service (ISUP, SCCP, ...) | 
| [in] | user | (optional) SS7 user. If present, we will not unregister other users | 
References osmo_ss7_user::inst, and osmo_ss7_instance::user.
Referenced by osmo_sccp_instance_destroy().
| 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
| [in] | inst | SS7 Instance on which we operate | 
| [in] | proto | protocol (xUA variant) in use | 
| [in] | local_port | local port of the server | 
References osmo_xua_server::inst, osmo_ss7_xua_server_find2(), osmo_xua_server::proto, ss7_default_trans_proto_for_asp_proto(), and osmo_xua_server::trans_proto.
| 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
| [in] | inst | SS7 Instance on which we operate | 
| [in] | trans_proto | transport protocol in use (one of IPPROTO_*) | 
| [in] | proto | protocol (xUA variant) in use | 
| [in] | local_port | local port of the server | 
References osmo_xua_server::cfg, osmo_xua_server::inst, 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().
      
  | 
  static | 
References osmo_ss7_pc_fmt::component_len, and get_pc_comp_shift().
Referenced by osmo_ss7_pointcode_print_buf().
      
  | 
  static | 
References osmo_ss7_route::cfg, osmo_ss7_route::list, osmo_ss7_route::mask, and osmo_ss7_route_table::routes.
Referenced by osmo_ss7_route_create().
| uint32_t ss7_find_free_l_rk_id | ( | struct osmo_ss7_instance * | inst | ) | 
References next_l_rk_id, and osmo_ss7_as_find_by_l_rk_id().
Referenced by ss7_as_alloc().
| bool ss7_ipv6_sctp_supported | ( | const char * | host, | 
| bool | bind | ||
| ) | 
Referenced by ss7_asp_set_default_peer_hosts(), and ss7_xua_server_set_default_local_hosts().
      
  | 
  static | 
Referenced by gen_pc_fmtstr().
      
  | 
  static | 
References count_leading_one_bits().
Referenced by osmo_ss7_route_print().
      
  | 
  static | 
Referenced by osmo_ss7_pointcode_parse(), osmo_ss7_pointcode_parse_mask_or_len(), and osmo_ss7_pointcode_print_buf().
| const struct value_string mtp_unavail_cause_vals[] | 
Referenced by mtp_unavail_cause_str().
      
  | 
  static | 
Referenced by ss7_find_free_l_rk_id().
      
  | 
  static | 
Referenced by osmo_ss7_find_free_rctx().
| bool ss7_initialized = false | 
Referenced by osmo_ss7_as_add_asp(), osmo_ss7_as_del_asp(), osmo_ss7_as_destroy(), osmo_ss7_as_find_by_l_rk_id(), osmo_ss7_as_find_by_name(), osmo_ss7_as_find_by_proto(), osmo_ss7_as_find_by_rctx(), osmo_ss7_as_find_or_create(), osmo_ss7_as_has_asp(), osmo_ss7_asp_destroy(), osmo_ss7_asp_find2(), osmo_ss7_asp_find_by_name(), osmo_ss7_asp_find_or_create2(), osmo_ss7_asp_restart(), osmo_ss7_asp_send(), osmo_ss7_init(), osmo_ss7_instance_destroy(), osmo_ss7_instance_find(), osmo_ss7_instance_find_or_create(), osmo_ss7_link_destroy(), osmo_ss7_link_find_or_create(), osmo_ss7_linkset_destroy(), osmo_ss7_linkset_find_by_name(), osmo_ss7_linkset_find_or_create(), osmo_ss7_pc_is_local(), osmo_ss7_route_create(), osmo_ss7_route_destroy(), osmo_ss7_route_find_dpc(), osmo_ss7_route_find_dpc_mask(), osmo_ss7_route_lookup(), osmo_ss7_route_table_find(), osmo_ss7_route_table_find_or_create(), osmo_ss7_xua_server_create2(), osmo_ss7_xua_server_find2(), osmo_ss7_xua_server_set_local_hosts(), and ss7_asp_find_by_socket_addr().