libosmo-sigtran 2.1.0.172-a2b0
Osmocom SIGTRAN library
Loading...
Searching...
No Matches
ss7_asp.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdint.h>
4#include <osmocom/core/linuxlist.h>
5#include <osmocom/core/fsm.h>
6#include <osmocom/core/msgb.h>
7#include <osmocom/core/tdef.h>
8#include <osmocom/netif/stream.h>
9
11
12#include "ss7_asp_peer.h"
13#include "ss7_internal.h"
14
15/***********************************************************************
16 * SS7 Application Server Processes
17 ***********************************************************************/
18
21
23 /* 0 kept unused on purpose since it's handled specially by osmo_fsm */
24 SS7_ASP_XUA_T_ACK = 1, /* RFC3868 & RFC4666 timer T(ack) */
25 SS7_ASP_XUA_T_BEAT, /* RFC3868 & RFC4666 timer T(beat) */
26 /* This must remain the last item: */
28};
29extern const struct value_string ss7_asp_xua_timer_names[];
30extern const struct osmo_tdef ss7_asp_xua_timer_defaults[SS7_ASP_XUA_TIMERS_LEN];
31/* According to SUA RFC3868 Section 8, M3UA RFC4666 Section 4.3.4.1 */
32#define SS7_ASP_XUA_DEFAULT_T_ACK_SEC 2
33/* According to SUA RFC3868 Section 8 */
34#define SS7_ASP_XUA_DEFAULT_T_BEAT_SEC 30
35
41
44 struct llist_head list;
46
48 struct osmo_fsm_inst *fi;
49
52 struct llist_head siblings;
53
55 struct osmo_stream_cli *client;
56 struct osmo_stream_srv *server;
58 char *sock_name;
59
60 /* ASP Identifier for ASP-UP + NTFY, as received by the peer.
61 * (In IPA ASPs it's used internally to hold 4-bit SLS).
62 * FIXME: This should actually be stored in a AS-ASP relation, since it
63 * can be different per AS, see RFC4666 3.5.1
64 * "The optional ASP Identifier parameter contains a unique value that
65 * is locally significant among the ASPs that support an AS".
66 */
67 uint32_t remote_asp_id;
69
70 /* Layer Manager to which we talk */
72 void *lm_priv;
73
76
79
81 struct rate_ctr_group *ctrg;
82
84 struct msgb *pending_msg;
85
86 /* IPA proto ASP specific fields. */
87 struct {
88 /* Incoming IPA PDUs have no SLS field, hence a potentially
89 * unique one within AS is assigned to this ASP and applied
90 * manually when received. */
91 uint8_t sls:4;
93 } ipa;
94
95 struct {
96 bool enabled;
98
99 struct {
100 char *name;
108 /* Used internally by "asp" node to figure out if "no shutdown"
109 * was done explicitly, in order to avoid automatic asp
110 * reconfiguring/restart at go_parent().
111 * Can be dropped in the future once we make sure everybody uses
112 * "[no] shutdown" explicitly in cfg files. */
114
117 uint8_t qos_class;
118 uint32_t quirks;
119
120 /* Whether to Tx xUA DAUD during ASP activation when in ASP role. */
122
123 /* T_defs used by the default_lm: */
124 struct osmo_tdef *T_defs_xua;
125
126 /* T_defs used by the default_lm: */
127 struct osmo_tdef *T_defs_lm;
128
129 struct {
137 uint16_t max_init_timeo_value; /* ms */
139
140 struct {
146 int keepalive_time_value; /* seconds */
147 int keepalive_intvl_value; /* seconds */
149 unsigned int user_timeout_value; /* milliseconds */
151
155};
156
157struct osmo_ss7_asp *ss7_asp_alloc(struct osmo_ss7_instance *inst, const char *name,
158 uint16_t remote_port, uint16_t local_port,
161bool ss7_asp_is_started(const struct osmo_ss7_asp *asp);
162int ss7_asp_get_fd(const struct osmo_ss7_asp *asp);
164
165int ss7_asp_apply_tcp_pars(const struct osmo_ss7_asp *asp);
167int ss7_asp_apply_primary_address(const struct osmo_ss7_asp *asp);
168int ss7_asp_apply_new_local_address(const struct osmo_ss7_asp *asp, unsigned int loc_idx);
169int ss7_asp_apply_drop_local_address(const struct osmo_ss7_asp *asp, unsigned int loc_idx);
170
173
174unsigned int ss7_asp_get_all_rctx(const struct osmo_ss7_asp *asp, uint32_t *rctx, unsigned int rctx_size,
175 const struct osmo_ss7_as *excl_as);
176unsigned int ss7_asp_get_all_rctx_be(const struct osmo_ss7_asp *asp, uint32_t *rctx, unsigned int rctx_size,
177 const struct osmo_ss7_as *excl_as);
178
179int ss7_asp_determine_traf_mode(const struct osmo_ss7_asp *asp);
180
181#define LOGPASP(asp, subsys, level, fmt, args ...) \
182 _LOGSS7((asp)->inst, subsys, level, "ASP(%s) " fmt, (asp)->cfg.name, ## args)
osmo_ss7_asp_protocol
Definition osmo_ss7.h:157
osmo_ss7_asp_role
Definition osmo_ss7.h:253
osmo_ss7_asp_admin_state
Definition osmo_ss7.h:243
int ss7_asp_determine_traf_mode(const struct osmo_ss7_asp *asp)
Definition ss7_asp.c:1572
bool ss7_asp_is_started(const struct osmo_ss7_asp *asp)
Definition ss7_asp.c:959
void osmo_ss7_asp_remove_default_lm(struct osmo_ss7_asp *asp)
Definition xua_default_lm_fsm.c:419
int ss7_asp_apply_primary_address(const struct osmo_ss7_asp *asp)
Definition ss7_asp.c:423
ss7_asp_xua_timer
Definition ss7_asp.h:22
@ SS7_ASP_XUA_TIMERS_LEN
Definition ss7_asp.h:27
@ SS7_ASP_XUA_T_ACK
Definition ss7_asp.h:24
@ SS7_ASP_XUA_T_BEAT
Definition ss7_asp.h:25
ss7_asp_ctr
Definition ss7_asp.h:36
@ SS7_ASP_CTR_PKT_TX_TOTAL
Definition ss7_asp.h:39
@ SS7_ASP_CTR_PKT_RX_UNKNOWN
Definition ss7_asp.h:38
@ SS7_ASP_CTR_PKT_RX_TOTAL
Definition ss7_asp.h:37
void ss7_asp_restart_after_reconfigure(struct osmo_ss7_asp *asp)
Definition ss7_asp.c:1519
int ss7_asp_apply_peer_primary_address(const struct osmo_ss7_asp *asp)
Definition ss7_asp.c:381
int ss7_asp_get_fd(const struct osmo_ss7_asp *asp)
Get the fd of a given ASP.
Definition ss7_asp.c:1506
int ss7_asp_disconnect_stream(struct osmo_ss7_asp *asp)
Definition ss7_asp.c:848
const struct osmo_tdef ss7_asp_xua_timer_defaults[SS7_ASP_XUA_TIMERS_LEN]
Definition ss7_asp.c:120
int ss7_asp_apply_new_local_address(const struct osmo_ss7_asp *asp, unsigned int loc_idx)
Definition ss7_asp.c:337
int ss7_asp_apply_tcp_pars(const struct osmo_ss7_asp *asp)
Definition ss7_asp.c:328
unsigned int ss7_asp_get_all_rctx(const struct osmo_ss7_asp *asp, uint32_t *rctx, unsigned int rctx_size, const struct osmo_ss7_as *excl_as)
Definition ss7_asp.c:1561
int ss7_asp_apply_drop_local_address(const struct osmo_ss7_asp *asp, unsigned int loc_idx)
Definition ss7_asp.c:359
struct osmo_ss7_asp * ss7_asp_alloc(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)
Definition ss7_asp.c:700
const struct value_string ss7_asp_xua_timer_names[]
Definition ss7_asp.c:129
unsigned int ss7_asp_get_all_rctx_be(const struct osmo_ss7_asp *asp, uint32_t *rctx, unsigned int rctx_size, const struct osmo_ss7_as *excl_as)
Definition ss7_asp.c:1554
bool ss7_asp_set_default_peer_hosts(struct osmo_ss7_asp *asp)
Definition ss7_asp.c:562
Definition ss7_as.h:76
Definition ss7_asp_peer.h:11
Definition ss7_asp.h:42
enum osmo_ss7_asp_role role
Definition ss7_asp.h:105
char * sock_name
pre-formatted human readable local/remote socket name
Definition ss7_asp.h:58
bool role_set_by_vty
Definition ss7_asp.h:106
int keepalive_time_value
Definition ss7_asp.h:146
struct osmo_ss7_asp_peer remote
Definition ss7_asp.h:116
bool max_attempts_present
Definition ss7_asp.h:132
bool explicit_shutdown_state_by_vty_since_node_enter
Definition ss7_asp.h:113
struct osmo_ss7_asp::@30::@31 sctp_init
bool max_instreams_present
Definition ss7_asp.h:131
struct osmo_tdef * T_defs_lm
Definition ss7_asp.h:127
struct osmo_fsm_inst * fi
ASP FSM.
Definition ss7_asp.h:48
uint16_t max_attempts_value
Definition ss7_asp.h:136
struct osmo_ss7_asp::@28 ipa
struct osmo_tdef * T_defs_xua
Definition ss7_asp.h:124
uint16_t max_instreams_value
Definition ss7_asp.h:135
struct llist_head list
entry in osmo_ss7_instance::asp_list
Definition ss7_asp.h:44
uint8_t sls
Definition ss7_asp.h:91
enum osmo_ss7_asp_protocol proto
Definition ss7_asp.h:102
void * lm_priv
Definition ss7_asp.h:72
struct osmo_ss7_instance * inst
Definition ss7_asp.h:45
const struct osmo_xua_layer_manager * lm
Definition ss7_asp.h:71
bool num_ostreams_present
Definition ss7_asp.h:130
uint32_t remote_asp_id
Definition ss7_asp.h:67
struct osmo_stream_srv * server
Definition ss7_asp.h:56
uint32_t quirks
Definition ss7_asp.h:118
bool simple_client_allocated
Were we allocated by "simple client" support?
Definition ss7_asp.h:78
int keepalive_probes_value
Definition ss7_asp.h:148
bool sls_assigned
Definition ss7_asp.h:92
struct osmo_stream_cli * client
osmo_stream / libosmo-netif handles
Definition ss7_asp.h:55
bool trans_role_set_by_vty
Definition ss7_asp.h:107
enum osmo_ss7_asp_admin_state adm_state
Definition ss7_asp.h:103
struct osmo_xua_server * xua_server
osmo_xua_server over which we were established
Definition ss7_asp.h:51
struct osmo_ss7_asp_peer local
Definition ss7_asp.h:115
struct osmo_ss7_asp::@30 cfg
bool is_server
Definition ss7_asp.h:104
bool enabled
Definition ss7_asp.h:96
int keepalive_intvl_value
Definition ss7_asp.h:147
bool user_timeout_present
Definition ss7_asp.h:145
unsigned int user_timeout_value
Definition ss7_asp.h:149
bool daud_act
Definition ss7_asp.h:121
bool dyn_allocated
Were we dynamically allocated.
Definition ss7_asp.h:75
bool max_init_timeo_present
Definition ss7_asp.h:133
char * name
Definition ss7_asp.h:100
bool keepalive_probes_present
Definition ss7_asp.h:144
bool keepalive_time_present
Definition ss7_asp.h:142
bool keepalive_intvl_present
Definition ss7_asp.h:143
struct osmo_ss7_asp::@29 tcap
uint8_t qos_class
Definition ss7_asp.h:117
struct msgb * pending_msg
Pending message for non-blocking IPA read.
Definition ss7_asp.h:84
uint16_t num_ostreams_value
Definition ss7_asp.h:134
int trans_proto
The underlaying transport protocol (one of IPPROTO_*)
Definition ss7_asp.h:153
char * description
Definition ss7_asp.h:101
bool keepalive_enable
Definition ss7_asp.h:141
struct osmo_ss7_asp::@30::@32 tcp
bool remote_asp_id_present
Definition ss7_asp.h:68
struct rate_ctr_group * ctrg
Rate Counter Group.
Definition ss7_asp.h:81
struct llist_head siblings
Definition ss7_asp.h:52
uint16_t max_init_timeo_value
Definition ss7_asp.h:137
Definition ss7_instance.h:21
Definition ss7_xua_srv.h:18
Definition ss7_xua_srv.h:22