24#include <osmocom/core/prim.h>
27#include <netinet/in.h>
49#define OSMO_SCCP_ADDR_T_GT 0x0001
50#define OSMO_SCCP_ADDR_T_PC 0x0002
51#define OSMO_SCCP_ADDR_T_SSN 0x0004
52#define OSMO_SCCP_ADDR_T_IPv4 0x0008
53#define OSMO_SCCP_ADDR_T_IPv6 0x0010
54#define OSMO_SCCP_ADDR_T_MASK 0x001f
169#define OSMO_SCCP_SSN_SMLC_BSSAP OSMO_SCCP_SSN_SMLC_BSSAP_LE
245#define OSMO_SCU_UNITDATA_REQ_P_SEQUENCE_CONTROL_NOT_PRESENT 0xffffffff
294#define msgb_scu_prim(msg) ((struct osmo_scu_prim *)(msg)->l1h)
osmo_scu_prim_type
SCCP-User primitives as per Q.711.
Definition sccp_sap.h:32
@ OSMO_SCU_PRIM_N_CONNECT
Definition sccp_sap.h:34
@ OSMO_SCU_PRIM_N_NOTICE
Definition sccp_sap.h:42
@ OSMO_SCU_PRIM_N_INFORM
Definition sccp_sap.h:39
@ OSMO_SCU_PRIM_N_RESET
Definition sccp_sap.h:38
@ OSMO_SCU_PRIM_N_UNITDATA
Definition sccp_sap.h:41
@ OSMO_SCU_PRIM_N_PCSTATE
Definition sccp_sap.h:46
@ OSMO_SCU_PRIM_N_EXPEDITED_DATA
Definition sccp_sap.h:36
@ OSMO_SCU_PRIM_N_STATE
Definition sccp_sap.h:45
@ OSMO_SCU_PRIM_N_DISCONNECT
Definition sccp_sap.h:37
@ OSMO_SCU_PRIM_N_DATA
Definition sccp_sap.h:35
@ OSMO_SCU_PRIM_N_COORD
Definition sccp_sap.h:44
osmo_sccp_npi
Definition sccp_sap.h:83
@ OSMO_SCCP_NPI_F69_TELEX
Definition sccp_sap.h:88
@ OSMO_SCCP_NPI_E214_ISDN_MOBILE
Definition sccp_sap.h:91
@ OSMO_SCCP_NPI_GEERIC
Definition sccp_sap.h:86
@ OSMO_SCCP_NPI_E210_MARITIME
Definition sccp_sap.h:89
@ OSMO_SCCP_NPI_X121_DATA
Definition sccp_sap.h:87
@ OSMO_SCCP_NPI_E212_LAND
Definition sccp_sap.h:90
@ OSMO_SCCP_NPI_E164_ISDN
Definition sccp_sap.h:85
@ OSMO_SCCP_NPI_UNKNOWN
Definition sccp_sap.h:84
@ OSMO_SCCP_NPI_PRIVATE
Definition sccp_sap.h:92
int osmo_sccp_user_sap_down_nofree(struct osmo_sccp_user *scu, struct osmo_prim_hdr *oph)
Main entrance function for primitives from SCCP User.
Definition sccp_scoc.c:1945
static const char * osmo_sccp_ssn_name(enum osmo_sccp_ssn val)
Definition sccp_sap.h:172
void osmo_sccp_user_set_priv(struct osmo_sccp_user *scu, void *priv)
Definition sccp_user.c:178
char * osmo_scu_prim_hdr_name_c(void *ctx, const struct osmo_prim_hdr *oph)
Definition sccp_sap.c:67
const struct value_string osmo_sccp_sp_status_names[]
Definition sccp_sap.c:123
struct osmo_sccp_instance * osmo_sccp_get_sccp(const struct osmo_sccp_user *scu)
get the SCCP instance that is related to the given sccp user
Definition sccp_user.c:941
osmo_sccp_originator
Definition sccp_sap.h:215
@ OSMO_SCCP_ORIG_NS_USER
Definition sccp_sap.h:217
@ OSMO_SCCP_ORIG_NS_PROVIDER
Definition sccp_sap.h:216
@ OSMO_SCCP_ORIG_UNDEFINED
Definition sccp_sap.h:218
void osmo_sccp_instance_destroy(struct osmo_sccp_instance *inst)
Definition sccp_user.c:278
struct osmo_sccp_user * osmo_sccp_user_find(struct osmo_sccp_instance *inst, uint16_t ssn, uint32_t pc)
Find a SCCP User registered for given PC+SSN or SSN only.
Definition sccp_user.c:87
const struct value_string osmo_sccp_rem_sccp_status_names[]
Definition sccp_sap.c:130
bool osmo_sccp_check_addr(struct osmo_sccp_addr *addr, uint32_t presence)
check whether a given SCCP-Address is consistent.
Definition sccp_user.c:329
static const char * osmo_sccp_sp_status_name(enum osmo_sccp_sp_status val)
Definition sccp_sap.h:148
osmo_sccp_gti
Definition sccp_sap.h:70
@ OSMO_SCCP_GTI_TT_NPL_ENC_NAI
Definition sccp_sap.h:75
@ OSMO_SCCP_GTI_NAI_ONLY
Definition sccp_sap.h:72
@ OSMO_SCCP_GTI_TT_ONLY
Definition sccp_sap.h:73
@ OSMO_SCCP_GTI_TT_NPL_ENC
Definition sccp_sap.h:74
@ OSMO_SCCP_GTI_NO_GT
Definition sccp_sap.h:71
int osmo_scu_prim_hdr_name_buf(char *buf, size_t buflen, const struct osmo_prim_hdr *oph)
Definition sccp_sap.c:52
struct osmo_ss7_instance * osmo_sccp_addr_by_name(struct osmo_sccp_addr *dest_addr, const char *name)
Lookup an SCCP address from the addressbook by its name.
Definition ss7_vty.c:2679
int osmo_sccp_gt_cmp(const struct osmo_sccp_gt *a, const struct osmo_sccp_gt *b)
Compare two SCCP Global Titles.
Definition sccp_user.c:372
static const char * osmo_sccp_routing_ind_name(enum osmo_sccp_routing_ind val)
Definition sccp_sap.h:65
osmo_sccp_routing_ind
Definition sccp_sap.h:57
@ OSMO_SCCP_RI_GT
Definition sccp_sap.h:59
@ OSMO_SCCP_RI_NONE
Definition sccp_sap.h:58
@ OSMO_SCCP_RI_SSN_PC
Definition sccp_sap.h:60
@ OSMO_SCCP_RI_SSN_IP
Definition sccp_sap.h:61
void * osmo_sccp_get_priv(struct osmo_sccp_instance *sccp)
Definition sccp_user.c:300
struct osmo_sccp_user * osmo_sccp_user_bind_pc(struct osmo_sccp_instance *inst, const char *name, osmo_prim_cb prim_cb, uint16_t ssn, uint32_t pc)
Bind a given SCCP User to a given SSN+PC.
Definition sccp_user.c:144
static const char * osmo_sccp_rem_sccp_status_name(enum osmo_sccp_rem_sccp_status val)
Definition sccp_sap.h:163
static const char * osmo_sccp_gti_name(enum osmo_sccp_gti val)
Definition sccp_sap.h:79
const struct value_string osmo_sccp_ssn_names[]
Definition sccp_sap.c:139
int osmo_sccp_addr_by_name_local(struct osmo_sccp_addr *dest_addr, const char *name, const struct osmo_ss7_instance *inst)
Lookup an SCCP address from the addressbook of a specific instance by its name.
Definition ss7_vty.c:2701
void osmo_sccp_vty_init(void)
Definition sccp_vty.c:285
struct osmo_ss7_instance * osmo_sccp_get_ss7(const struct osmo_sccp_instance *sccp)
get the SS7 instance that is related to the given SCCP instance
Definition sccp_user.c:931
void * osmo_sccp_user_get_priv(struct osmo_sccp_user *scu)
Definition sccp_user.c:183
const struct value_string osmo_sccp_routing_ind_names[]
Definition sccp_sap.c:106
int osmo_sccp_user_sap_down(struct osmo_sccp_user *scu, struct osmo_prim_hdr *oph)
Main entrance function for primitives from SCCP User.
Definition sccp_scoc.c:2002
void osmo_sccp_set_priv(struct osmo_sccp_instance *sccp, void *priv)
Definition sccp_user.c:295
struct osmo_sccp_instance * osmo_sccp_instance_create(struct osmo_ss7_instance *ss7, void *priv)
create a SCCP Instance and register it as user with SS7 inst
Definition sccp_user.c:243
static const char * osmo_scu_prim_type_name(enum osmo_scu_prim_type val)
Definition sccp_sap.h:297
struct osmo_sccp_user * osmo_sccp_user_bind(struct osmo_sccp_instance *inst, const char *name, osmo_prim_cb prim_cb, uint16_t ssn)
Bind a given SCCP User to a given SSN (at any PC)
Definition sccp_user.c:161
const char * osmo_sccp_name_by_addr(const struct osmo_sccp_addr *addr)
Reverse lookup the lookup-name of a specified SCCP address.
Definition ss7_vty.c:2719
osmo_sccp_ssn
Definition sccp_sap.h:106
@ OSMO_SCCP_SSN_BSC_BSSAP_LE
Definition sccp_sap.h:133
@ OSMO_SCCP_SSN_ISUP
Definition sccp_sap.h:109
@ OSMO_SCCP_SSN_RES_INTL
Definition sccp_sap.h:119
@ OSMO_SCCP_SSN_MSC_BSSAP_LE
Definition sccp_sap.h:134
@ OSMO_SCCP_SSN_HLR
Definition sccp_sap.h:112
@ OSMO_SCCP_SSN_SGSN_MAP
Definition sccp_sap.h:129
@ OSMO_SCCP_SSN_VLR
Definition sccp_sap.h:113
@ OSMO_SCCP_SSN_RANAP
Definition sccp_sap.h:123
@ OSMO_SCCP_SSN_gsmSCF_MAP
Definition sccp_sap.h:127
@ OSMO_SCCP_SSN_MSC
Definition sccp_sap.h:114
@ OSMO_SCCP_SSN_GMLC_MAP
Definition sccp_sap.h:125
@ OSMO_SCCP_SSN_BSSAP
Definition sccp_sap.h:137
@ OSMO_SCCP_SSN_ISDN_SS
Definition sccp_sap.h:118
@ OSMO_SCCP_SSN_SMLC_BSSAP_LE
Definition sccp_sap.h:135
@ OSMO_SCCP_SSN_MAP
Definition sccp_sap.h:111
@ OSMO_SCCP_SSN_GGSN_MAP
Definition sccp_sap.h:130
@ OSMO_SCCP_SSN_EIR
Definition sccp_sap.h:115
@ OSMO_SCCP_SSN_CAP
Definition sccp_sap.h:126
@ OSMO_SCCP_SSN_TC_TEST
Definition sccp_sap.h:121
@ OSMO_SCCP_SSN_RNSAP
Definition sccp_sap.h:124
@ OSMO_SCCP_SSN_PCAP
Definition sccp_sap.h:132
@ OSMO_SCCP_SSN_AUC
Definition sccp_sap.h:116
@ OSMO_SCCP_SSN_OMAP
Definition sccp_sap.h:110
@ OSMO_SCCP_SSN_BISDN
Definition sccp_sap.h:120
@ OSMO_SCCP_SSN_BSS_OAM
Definition sccp_sap.h:136
@ OSMO_SCCP_SSN_SIWF_MAP
Definition sccp_sap.h:128
@ OSMO_SCCP_SSN_MGMT
Definition sccp_sap.h:108
osmo_sccp_nai
Definition sccp_sap.h:96
@ OSMO_SCCP_NAI_SUBSCR
Definition sccp_sap.h:98
@ OSMO_SCCP_NAI_INTL
Definition sccp_sap.h:101
@ OSMO_SCCP_NAI_UNKNOWN
Definition sccp_sap.h:97
@ OSMO_SCCP_NAI_RES_NAT_USE
Definition sccp_sap.h:99
@ OSMO_SCCP_NAI_NATL
Definition sccp_sap.h:100
osmo_sccp_rem_sccp_status
Definition sccp_sap.h:154
@ OSMO_SCCP_REM_SCCP_S_UNEQUIPPED
Definition sccp_sap.h:157
@ OSMO_SCCP_REM_SCCP_S_CONGESTED
Definition sccp_sap.h:159
@ OSMO_SCCP_REM_SCCP_S_INACCESSIBLE
Definition sccp_sap.h:158
@ OSMO_SCCP_REM_SCCP_S_AVAILABLE
Definition sccp_sap.h:155
@ OSMO_SCCP_REM_SCCP_S_UNAVAILABLE_UNKNOWN
Definition sccp_sap.h:156
void osmo_sccp_local_addr_by_instance(struct osmo_sccp_addr *dest_addr, const struct osmo_sccp_instance *inst, uint32_t ssn)
derive a basic local SCCP-Address from a given SCCP instance.
Definition sccp_user.c:309
char * osmo_scu_prim_name(const struct osmo_prim_hdr *oph)
Definition sccp_sap.c:46
const char * osmo_sccp_user_name(struct osmo_sccp_user *scu)
Compose a human readable string to describe the SCCP user's connection.
Definition sccp_user.c:490
osmo_sccp_sp_status
Definition sccp_sap.h:141
@ OSMO_SCCP_SP_S_CONGESTED
Definition sccp_sap.h:143
@ OSMO_SCCP_SP_S_INACCESSIBLE
Definition sccp_sap.h:142
@ OSMO_SCCP_SP_S_ACCESSIBLE
Definition sccp_sap.h:144
int osmo_sccp_addr_cmp(const struct osmo_sccp_addr *a, const struct osmo_sccp_addr *b, uint32_t presence_criteria)
Compare two SCCP addresses by given presence criteria.
Definition sccp_user.c:394
const struct value_string osmo_sccp_gti_names[]
Definition sccp_sap.c:114
void osmo_sccp_user_unbind(struct osmo_sccp_user *scu)
Unbind a given SCCP user.
Definition sccp_user.c:170
int osmo_sccp_instance_next_conn_id(struct osmo_sccp_instance *sccp)
Definition sccp_scoc.c:529
const struct value_string osmo_scu_prim_type_names[]
Definition sccp_sap.c:28
int osmo_sccp_addr_ri_cmp(const struct osmo_sccp_addr *a, const struct osmo_sccp_addr *b)
Compare the routing information of two SCCP addresses.
Definition sccp_user.c:454
Definition sccp_sap.h:183
uint32_t pc
Definition sccp_sap.h:187
union osmo_sccp_addr::@19 ip
uint32_t ssn
Definition sccp_sap.h:188
enum osmo_sccp_routing_ind ri
Definition sccp_sap.h:185
struct osmo_sccp_gt gt
Definition sccp_sap.h:186
uint32_t presence
Definition sccp_sap.h:184
Definition sccp_sap.h:175
uint8_t gti
Definition sccp_sap.h:176
uint32_t nai
Definition sccp_sap.h:179
uint32_t npi
Definition sccp_sap.h:178
char digits[32]
Definition sccp_sap.h:180
uint8_t tt
Definition sccp_sap.h:177
Definition sccp_internal.h:41
struct osmo_ss7_instance * ss7
Definition sccp_internal.h:52
void * priv
Definition sccp_internal.h:53
Definition sccp_internal.h:67
struct osmo_sccp_instance * inst
pointer back to SCCP instance
Definition sccp_internal.h:71
uint32_t pc
Definition sccp_internal.h:77
uint16_t ssn
SSN and/or point code to which we are bound.
Definition sccp_internal.h:76
char * name
human-readable name of this user
Definition sccp_internal.h:73
osmo_prim_cb prim_cb
Definition sccp_internal.h:83
Definition sccp_sap.h:197
struct osmo_sccp_addr calling_addr
Definition sccp_sap.h:199
struct osmo_sccp_addr responding_addr
Definition sccp_sap.h:200
uint32_t sccp_class
Definition sccp_sap.h:202
uint32_t importance
Definition sccp_sap.h:203
struct osmo_sccp_addr called_addr
Definition sccp_sap.h:198
uint32_t conn_id
Definition sccp_sap.h:204
Definition sccp_sap.h:209
uint32_t importance
Definition sccp_sap.h:211
uint32_t conn_id
Definition sccp_sap.h:210
Definition sccp_sap.h:222
uint32_t conn_id
Definition sccp_sap.h:226
enum osmo_sccp_originator originator
Definition sccp_sap.h:223
uint32_t importance
Definition sccp_sap.h:227
struct osmo_sccp_addr responding_addr
Definition sccp_sap.h:224
uint32_t cause
Definition sccp_sap.h:225
Definition sccp_sap.h:256
struct osmo_sccp_addr called_addr
Definition sccp_sap.h:257
uint32_t cause
Definition sccp_sap.h:259
uint32_t importance
Definition sccp_sap.h:260
struct osmo_sccp_addr calling_addr
Definition sccp_sap.h:258
Definition sccp_sap.h:273
uint32_t restricted_importance_level
Definition sccp_sap.h:275
enum osmo_sccp_rem_sccp_status remote_sccp_status
Definition sccp_sap.h:277
uint32_t affected_pc
Definition sccp_sap.h:274
enum osmo_sccp_sp_status sp_status
Definition sccp_sap.h:276
Definition sccp_sap.h:280
struct osmo_prim_hdr oph
Definition sccp_sap.h:281
union osmo_scu_prim::@20 u
Definition sccp_sap.h:232
uint32_t conn_id
Definition sccp_sap.h:235
uint32_t cause
Definition sccp_sap.h:234
enum osmo_sccp_originator originator
Definition sccp_sap.h:233
Definition sccp_sap.h:265
uint32_t ssn_multiplicity_ind
Definition sccp_sap.h:269
uint32_t affected_ssn
Definition sccp_sap.h:267
bool user_in_service
Definition sccp_sap.h:268
uint32_t affected_pc
Definition sccp_sap.h:266
Definition sccp_sap.h:246
uint32_t return_option
Definition sccp_sap.h:250
uint32_t in_sequence_control
Definition sccp_sap.h:249
struct osmo_sccp_addr called_addr
Definition sccp_sap.h:247
struct osmo_sccp_addr calling_addr
Definition sccp_sap.h:248
uint32_t importance
Definition sccp_sap.h:251
Definition ss7_instance.h:21
struct osmo_sccp_instance * sccp
Definition ss7_instance.h:40
char * name
Definition ss7_instance.h:44
uint8_t data[0]
Definition xua_types.h:5