libosmogb  1.5.1
Osmocom Gb library
gprs_ns2_internal.h
Go to the documentation of this file.
1 
3 #pragma once
4 
5 #include <stdbool.h>
6 #include <stdint.h>
7 
10 
11 #define LOGNSE(nse, lvl, fmt, args ...) \
12  LOGP(DLNS, lvl, "NSE(%05u) " fmt, (nse)->nsei, ## args)
13 
14 #define LOGBIND(bind, lvl, fmt, args ...) \
15  LOGP(DLNS, lvl, "BIND(%s) " fmt, (bind)->name, ## args)
16 
17 
18 #define LOGNSVC(nsvc, lvl, fmt, args ...) \
19  do { \
20  if ((nsvc)->nsvci_is_valid) { \
21  LOGP(DLNS, lvl, "NSE(%05u)-NSVC(%05u) " fmt, \
22  (nsvc)->nse->nsei, (nsvc)->nsvci, ## args); \
23  } else { \
24  LOGP(DLNS, lvl, "NSE(%05u)-NSVC(none) " fmt, \
25  (nsvc)->nse->nsei, ## args); \
26  } \
27  } while (0)
28 
29 struct osmo_fsm_inst;
30 struct tlv_parsed;
31 struct vty;
32 
33 struct gprs_ns2_vc_driver;
34 struct gprs_ns2_vc_bind;
35 
36 #define NS_TIMERS_COUNT 10
37 #define NS_TIMERS "(tns-block|tns-block-retries|tns-reset|tns-reset-retries|tns-test|tns-alive|tns-alive-retries|tsns-prov|tsns-size-retries|tsns-config-retries)"
38 #define NS_TIMERS_HELP \
39  "(un)blocking Timer (Tns-block) timeout\n" \
40  "(un)blocking Timer (Tns-block) number of retries\n" \
41  "Reset Timer (Tns-reset) timeout\n" \
42  "Reset Timer (Tns-reset) number of retries\n" \
43  "Test Timer (Tns-test) timeout\n" \
44  "Alive Timer (Tns-alive) timeout\n" \
45  "Alive Timer (Tns-alive) number of retries\n" \
46  "SNS Provision Timer (Tsns-prov) timeout\n" \
47  "SNS Size number of retries\n" \
48  "SNS Config number of retries\n" \
49 
50 /* Educated guess - LLC user payload is 1500 bytes plus possible headers */
51 #define NS_ALLOC_SIZE 3072
52 #define NS_ALLOC_HEADROOM 20
53 
65 };
66 
68  /* standard timers */
73 };
74 
77 };
78 
81 };
82 
84 enum ns2_cs {
90 };
91 
92 enum ns_ctr {
108 };
109 
110 #define NSE_S_BLOCKED 0x0001
111 #define NSE_S_ALIVE 0x0002
112 #define NSE_S_RESET 0x0004
113 
114 #define NS_DESC_B(st) ((st) & NSE_S_BLOCKED ? "BLOCKED" : "UNBLOCKED")
115 #define NS_DESC_A(st) ((st) & NSE_S_ALIVE ? "ALIVE" : "DEAD")
116 #define NS_DESC_R(st) ((st) & NSE_S_RESET ? "RESET" : "UNRESET")
117 
122 
124  void *cb_data;
125 
127  struct llist_head binding;
128 
130  struct llist_head nse;
131 
133 
137 
140 };
141 
142 
144 struct gprs_ns2_nse {
145  uint16_t nsei;
146 
149 
151  struct llist_head list;
152 
154  struct llist_head nsvc;
155 
158 
161 
164  bool first;
165 
167  bool alive;
168 
170  enum gprs_ns2_ll ll;
171 
174 
176 
178  uint32_t sum_data_weight;
179 
181  uint32_t sum_sig_weight;
182 
184  uint16_t mtu;
185 };
186 
188 struct gprs_ns2_vc {
190  struct llist_head list;
191 
193  struct llist_head blist;
194 
196  struct gprs_ns2_nse *nse;
197 
200 
203 
205  uint16_t nsvci;
206 
208  uint8_t sig_weight;
209 
211  uint8_t sig_counter;
212 
214  uint8_t data_weight;
215 
217  void *priv;
218 
220  bool sns_only;
221 
224 
225  enum gprs_ns2_vc_mode mode;
226 
227  struct osmo_fsm_inst *fi;
228 };
229 
233  const char *name;
235  struct llist_head list;
237  struct llist_head nsvc;
239  void *priv;
243 
246 
249 
251  uint16_t mtu;
252 
254  enum gprs_ns2_ll ll;
255 
257  int (*send_vc)(struct gprs_ns2_vc *nsvc, struct msgb *msg);
258 
260  void (*free_vc)(struct gprs_ns2_vc *nsvc);
261 
263  void (*dump_vty)(const struct gprs_ns2_vc_bind *bind,
264  struct vty *vty, bool stats);
265 
267  uint8_t sns_sig_weight;
270 
272 };
273 
275  const char *name;
276  void *priv;
278 };
279 
280 enum ns2_cs ns2_create_vc(struct gprs_ns2_vc_bind *bind,
281  struct msgb *msg,
282  const char *logname,
283  struct msgb **reject,
284  struct gprs_ns2_vc **success);
285 
286 int ns2_recv_vc(struct gprs_ns2_vc *nsvc,
287  struct msgb *msg);
288 
290  struct gprs_ns2_nse *nse,
291  bool initiater,
292  enum gprs_ns2_vc_mode vc_mode,
293  const char *id);
294 
295 int ns2_bind_alloc(struct gprs_ns2_inst *nsi, const char *name,
296  struct gprs_ns2_vc_bind **result);
297 
298 struct msgb *ns2_msgb_alloc(void);
299 
300 void ns2_sns_write_vty(struct vty *vty, const struct gprs_ns2_nse *nse);
301 void ns2_sns_dump_vty(struct vty *vty, const char *prefix, const struct gprs_ns2_nse *nse, bool stats);
302 void ns2_prim_status_ind(struct gprs_ns2_nse *nse,
303  struct gprs_ns2_vc *nsvc,
304  uint16_t bvci,
305  enum gprs_ns2_affecting_cause cause);
306 void ns2_nse_notify_alive(struct gprs_ns2_vc *nsvc, bool alive);
307 void ns2_nse_update_mtu(struct gprs_ns2_nse *nse);
308 
309 /* message */
310 int ns2_validate(struct gprs_ns2_vc *nsvc,
311  uint8_t pdu_type,
312  struct msgb *msg,
313  struct tlv_parsed *tp,
314  uint8_t *cause);
315 
316 /* SNS messages */
317 int ns2_tx_sns_ack(struct gprs_ns2_vc *nsvc, uint8_t trans_id, uint8_t *cause,
318  const struct gprs_ns_ie_ip4_elem *ip4_elems,
319  unsigned int num_ip4_elems,
320  const struct gprs_ns_ie_ip6_elem *ip6_elems,
321  unsigned int num_ip6_elems);
322 int ns2_tx_sns_config(struct gprs_ns2_vc *nsvc, bool end_flag,
323  const struct gprs_ns_ie_ip4_elem *ip4_elems,
324  unsigned int num_ip4_elems,
325  const struct gprs_ns_ie_ip6_elem *ip6_elems,
326  unsigned int num_ip6_elems);
327 int ns2_tx_sns_config_ack(struct gprs_ns2_vc *nsvc, uint8_t *cause);
328 int ns2_tx_sns_size(struct gprs_ns2_vc *nsvc, bool reset_flag, uint16_t max_nr_nsvc,
329  int ip4_ep_nr, int ip6_ep_nr);
330 int ns2_tx_sns_size_ack(struct gprs_ns2_vc *nsvc, uint8_t *cause);
331 
332 /* transmit message over a VC */
333 int ns2_tx_block(struct gprs_ns2_vc *nsvc, uint8_t cause);
334 int ns2_tx_block_ack(struct gprs_ns2_vc *nsvc);
335 
336 int ns2_tx_reset(struct gprs_ns2_vc *nsvc, uint8_t cause);
337 int ns2_tx_reset_ack(struct gprs_ns2_vc *nsvc);
338 
339 int ns2_tx_unblock(struct gprs_ns2_vc *nsvc);
340 int ns2_tx_unblock_ack(struct gprs_ns2_vc *nsvc);
341 
342 int ns2_tx_alive(struct gprs_ns2_vc *nsvc);
343 int ns2_tx_alive_ack(struct gprs_ns2_vc *nsvc);
344 
345 int ns2_tx_unit_data(struct gprs_ns2_vc *nsvc,
346  uint16_t bvci, uint8_t sducontrol,
347  struct msgb *msg);
348 
349 int ns2_tx_status(struct gprs_ns2_vc *nsvc, uint8_t cause,
350  uint16_t bvci, struct msgb *orig_msg);
351 
352 /* driver */
354  struct gprs_ns2_nse *nse,
355  const struct osmo_sockaddr *remote);
356 int ns2_ip_count_bind(struct gprs_ns2_inst *nsi, struct osmo_sockaddr *remote);
358  struct osmo_sockaddr *remote,
359  int index);
360 
361 /* sns */
362 int ns2_sns_rx(struct gprs_ns2_vc *nsvc, struct msgb *msg, struct tlv_parsed *tp);
364  const char *id);
365 void ns2_sns_replace_nsvc(struct gprs_ns2_vc *nsvc);
366 void ns2_sns_notify_alive(struct gprs_ns2_nse *nse, struct gprs_ns2_vc *nsvc, bool alive);
367 void ns2_sns_update_weights(struct gprs_ns2_vc_bind *bind);
368 
369 /* vc */
370 struct osmo_fsm_inst *ns2_vc_fsm_alloc(struct gprs_ns2_vc *nsvc,
371  const char *id, bool initiate);
372 int ns2_vc_fsm_start(struct gprs_ns2_vc *nsvc);
373 int ns2_vc_force_unconfigured(struct gprs_ns2_vc *nsvc);
374 int ns2_vc_rx(struct gprs_ns2_vc *nsvc, struct msgb *msg, struct tlv_parsed *tp);
375 int ns2_vc_is_alive(struct gprs_ns2_vc *nsvc);
376 int ns2_vc_is_unblocked(struct gprs_ns2_vc *nsvc);
377 int ns2_vc_block(struct gprs_ns2_vc *nsvc);
378 int ns2_vc_unblock(struct gprs_ns2_vc *nsvc);
379 
380 /* nse */
381 void ns2_nse_notify_unblocked(struct gprs_ns2_vc *nsvc, bool unblocked);
383 int ns2_count_transfer_cap(struct gprs_ns2_nse *nse,
384  uint16_t bvci);
osmo_cell_global_id_ps::rai
struct osmo_routing_area_id rai
gprs_ns_ll_str_c
char * gprs_ns_ll_str_c(const void *ctx, const struct gprs_nsvc *nsvc)
Definition: gprs_ns.c:1554
NS_DESC_A
#define NS_DESC_A(st)
Definition: gprs_ns.h:49
BSSGP_IE_PACKET_FLOW_TIMER
@ BSSGP_IE_PACKET_FLOW_TIMER
Definition: gsm_08_18.h:159
osmo_bssgp_prim
Definition: gprs_bssgp.h:64
stats.h
data_weight
uint8_t data_weight
Definition: gsm_08_16.h:3
priv_bind::retry_us
uint32_t retry_us
Definition: gprs_ns2_fr.c:115
ns2_load_sharing_signal
static struct gprs_ns2_vc * ns2_load_sharing_signal(struct gprs_ns2_nse *nse)
Definition: gprs_ns2.c:331
ns2_vc_unblock
int ns2_vc_unblock(struct gprs_ns2_vc *nsvc)
Unblock a NS-VC.
Definition: gprs_ns2_vc_fsm.c:754
osmo_gprs_ns2_prim::nsvc
char * nsvc
Definition: gprs_ns2.h:130
sig_weight
uint8_t sig_weight
Definition: gsm_08_16.h:2
BSSGP_IE_BUCKET_FULL_RATIO
@ BSSGP_IE_BUCKET_FULL_RATIO
Definition: gsm_08_18.h:162
gprs_ns_rx_block
static int gprs_ns_rx_block(struct gprs_nsvc *nsvc, struct msgb *msg)
Definition: gprs_ns.c:1444
BSSGP_PDUT_PS_HO_REQUEST_NACK
@ BSSGP_PDUT_PS_HO_REQUEST_NACK
Definition: gsm_08_18.h:77
version
uint8_t version
BSSGP_CAUSE_DTM_HO_NO_CS_RES
@ BSSGP_CAUSE_DTM_HO_NO_CS_RES
Definition: gsm_08_18.h:317
BSSGP_PDUT_OVERLOAD
@ BSSGP_PDUT_OVERLOAD
Definition: gsm_08_18.h:61
osmo_gettimeofday
int osmo_gettimeofday(struct timeval *tv, struct timezone *tz)
bssgp_rim_ri_name_buf
char * bssgp_rim_ri_name_buf(char *buf, size_t buf_len, const struct bssgp_rim_routing_info *ri)
Encode a RIM Routing information into a human readable string.
Definition: gprs_bssgp_rim.c:155
nsvc_ctr_description
static const struct rate_ctr_desc nsvc_ctr_description[]
Definition: gprs_ns.c:143
BSSGP_IE_RIM_APP_IDENTITY
@ BSSGP_IE_RIM_APP_IDENTITY
Definition: gsm_08_18.h:177
priv_bind::backlog
struct priv_bind::@26 backlog
osmo_timer_list
osmo_prim_cb
int(* osmo_prim_cb)(struct osmo_prim_hdr *oph, void *ctx)
NS_CAUSE_INVAL_WEIGH
@ NS_CAUSE_INVAL_WEIGH
Definition: gsm_08_16.h:99
bssgp_ran_inf_x_cont
Definition: gprs_bssgp_rim.c:404
gprs_ns_tx_unblock
int gprs_ns_tx_unblock(struct gprs_nsvc *nsvc)
Transmit a NS-UNBLOCK on a given NS-VC.
Definition: gprs_ns.c:692
BSSGP_IE_SON_TRANSFER_APP_ID
@ BSSGP_IE_SON_TRANSFER_APP_ID
Definition: gsm_08_18.h:232
ns2_cs
ns2_cs
Osmocom NS2 VC create status.
Definition: gprs_ns2_internal.h:84
GPRS_NS_CS_CREATED
@ GPRS_NS_CS_CREATED
A NSVC object has been created.
Definition: gprs_ns.h:66
gprs_ns2_fr_connect2
struct gprs_ns2_vc * gprs_ns2_fr_connect2(struct gprs_ns2_vc_bind *bind, uint16_t nsei, uint16_t nsvci, uint16_t dlci)
Create, connect and activate a new FR-based NS-VC.
Definition: gprs_ns2_fr.c:1005
NSVC_TIMER_TNS_RESET
@ NSVC_TIMER_TNS_RESET
Definition: gprs_ns.h:117
BSSGP_IE_DTM_HO_COMMAND
@ BSSGP_IE_DTM_HO_COMMAND
Definition: gsm_08_18.h:221
free_vc
static void free_vc(struct gprs_ns2_vc *nsvc)
Definition: gprs_ns2_fr.c:125
NS_CTR_PKTS_IN
@ NS_CTR_PKTS_IN
Definition: gprs_ns.c:129
mod_bss_pfc_ies
static const uint8_t mod_bss_pfc_ies[]
Definition: gprs_bssgp_util.c:226
gprs_ns2_nsvc_by_sockaddr_nse
struct gprs_ns2_vc * gprs_ns2_nsvc_by_sockaddr_nse(struct gprs_ns2_nse *nse, const struct osmo_sockaddr *sockaddr)
Find NS-VC for given socket address.
Definition: gprs_ns2.c:1095
handle_rx_gre_ipv4
static int handle_rx_gre_ipv4(struct osmo_fd *bfd, struct msgb *msg, struct iphdr *iph, struct gre_hdr *greh)
Definition: gprs_ns2_frgre.c:224
gprs_ns_inst::bss_sns_fi
struct osmo_fsm_inst * bss_sns_fi
Definition: gprs_ns.h:110
bssgp_dec_ran_inf_app_cont_nacc
int bssgp_dec_ran_inf_app_cont_nacc(struct bssgp_ran_inf_app_cont_nacc *cont, const uint8_t *buf, size_t len)
Decode a RAN Information Application Container (3GPP TS 48.018, section 11.3.63.2....
Definition: gprs_bssgp_rim.c:254
bssgp_tx_simple_bvci
int bssgp_tx_simple_bvci(uint8_t pdu_type, uint16_t nsei, uint16_t bvci, uint16_t ns_bvci)
Definition: gprs_bssgp_util.c:536
bssgp_ran_inf_app_err_rim_cont
Definition: gprs_bssgp_rim.h:224
libgb_msgb_cb::bvci
uint16_t bvci
Definition: gprs_msgb.h:16
NS_TOUT_TSNS_PROV
@ NS_TOUT_TSNS_PROV
Definition: gprs_ns2_internal.h:62
nsbind_stat_description
const struct osmo_stat_item_desc nsbind_stat_description[]
Definition: gprs_ns2.c:201
OSMO_SOCK_F_CONNECT
#define OSMO_SOCK_F_CONNECT
gprs_ns2_vc::ctrg
struct rate_ctr_group * ctrg
Definition: gprs_ns2_internal.h:222
tlvp_val16be
static uint16_t tlvp_val16be(const struct tlv_parsed *tp, int pos)
BSSGP_IE_MLAT_TIMER
@ BSSGP_IE_MLAT_TIMER
Definition: gsm_08_18.h:258
bssgp_ran_information_pdu::req_rim_cont
struct bssgp_ran_inf_req_rim_cont req_rim_cont
Definition: gprs_bssgp_rim.h:253
osmo_sockaddr::sa
struct sockaddr sa
gprs_ns2_sns_del_bind
int gprs_ns2_sns_del_bind(struct gprs_ns2_nse *nse, struct gprs_ns2_vc_bind *bind)
Definition: gprs_ns2_sns.c:1898
BSSGP_CAUSE_INVAL_CSG_CELL
@ BSSGP_CAUSE_INVAL_CSG_CELL
Definition: gsm_08_18.h:323
LOGNSVC
#define LOGNSVC(nsvc, lvl, fmt, args ...)
Definition: gprs_ns2_internal.h:18
BSSGP_PDUT_STATUS
@ BSSGP_PDUT_STATUS
Definition: gsm_08_18.h:60
gprs_ns2_fr_nsvc_dlci
uint16_t gprs_ns2_fr_nsvc_dlci(const struct gprs_ns2_vc *nsvc)
Return the dlci of the nsvc.
Definition: gprs_ns2_fr.c:1062
gprs_ns_msgb_alloc
struct msgb * gprs_ns_msgb_alloc(void)
Definition: gprs_ns.c:206
BSSGP_IE_LLC_FRAMES_DISCARDED
@ BSSGP_IE_LLC_FRAMES_DISCARDED
Definition: gsm_08_18.h:133
BSSGP_PDUT_PERFORM_LOC_RESP
@ BSSGP_PDUT_PERFORM_LOC_RESP
Definition: gsm_08_18.h:83
gprs_ns2_ip_connect_inactive
struct gprs_ns2_vc * gprs_ns2_ip_connect_inactive(struct gprs_ns2_vc_bind *bind, const struct osmo_sockaddr *remote, struct gprs_ns2_nse *nse, uint16_t nsvci)
Create, and connect an inactive, new IP-based NS-VC.
Definition: gprs_ns2.c:1028
BSSGP_IE_UNCONF_SEND_STATE_VAR
@ BSSGP_IE_UNCONF_SEND_STATE_VAR
Definition: gsm_08_18.h:238
rate_ctr_desc
read_nsip_msg
static struct msgb * read_nsip_msg(struct osmo_fd *bfd, int *error, struct sockaddr_in *saddr)
Definition: gprs_ns.c:1960
BSSGP_IE_LCS_CAPABILITY
@ BSSGP_IE_LCS_CAPABILITY
Definition: gsm_08_18.h:175
buffer::size
size_t size
gprs_ns2_free_nse
void gprs_ns2_free_nse(struct gprs_ns2_nse *nse)
Destroy given NS Entity.
Definition: gprs_ns2.c:828
BSSGP_PDUT_SGSN_INVOKE_TRACE
@ BSSGP_PDUT_SGSN_INVOKE_TRACE
Definition: gsm_08_18.h:59
NS2_CS_CREATED
@ NS2_CS_CREATED
A NSVC object has been created.
Definition: gprs_ns2_internal.h:85
ns2_tx_unblock_ack
int ns2_tx_unblock_ack(struct gprs_ns2_vc *nsvc)
Transmit a NS-UNBLOCK-ACK on a given NS-VC.
Definition: gprs_ns2_message.c:356
BSSGP_CAUSE_UNKN_DST
@ BSSGP_CAUSE_UNKN_DST
Definition: gsm_08_18.h:290
BSSGP_CAUSE_INV_MAND_INF
@ BSSGP_CAUSE_INV_MAND_INF
Definition: gsm_08_18.h:281
BSSGP_PDUT_SUSPEND
@ BSSGP_PDUT_SUSPEND
Definition: gsm_08_18.h:32
NS_IE_NSEI
@ NS_IE_NSEI
Definition: gsm_08_16.h:70
time
char time[12]
gprs_ns2_nse::list
struct llist_head list
llist entry for gprs_ns2_inst
Definition: gprs_ns2_internal.h:151
gprs_ns_inst::remote_port
uint16_t remote_port
Definition: gprs_ns.h:98
osmo_sockaddr_cmp
int osmo_sockaddr_cmp(const struct osmo_sockaddr *a, const struct osmo_sockaddr *b)
IPPROTO_GRE
#define IPPROTO_GRE
Definition: gprs_ns2_frgre.c:56
bssgp_ran_inf_err_rim_cont::err_pdu_len
size_t err_pdu_len
Definition: gprs_bssgp_rim.h:212
priv_vc::dlci
uint16_t dlci
Definition: gprs_ns2_fr.c:121
ns2_tx_sns_ack
int ns2_tx_sns_ack(struct gprs_ns2_vc *nsvc, uint8_t trans_id, uint8_t *cause, const struct gprs_ns_ie_ip4_elem *ip4_elems, unsigned int num_ip4_elems, const struct gprs_ns_ie_ip6_elem *ip6_elems, unsigned int num_ip6_elems)
Encode + Transmit a SNS-ACK as per Section 9.3.1.
Definition: gprs_ns2_message.c:492
BSSGP_IE_PFC_TO_BE_SETUP_LIST
@ BSSGP_IE_PFC_TO_BE_SETUP_LIST
Definition: gsm_08_18.h:203
BSSGP_CAUSE_ABQP_NOT_SUPP
@ BSSGP_CAUSE_ABQP_NOT_SUPP
Definition: gsm_08_18.h:279
BSSGP_CAUSE_MISSING_COND_IE
@ BSSGP_CAUSE_MISSING_COND_IE
Definition: gsm_08_18.h:283
ns_att_tlvdef1
static const struct tlv_definition ns_att_tlvdef1
Definition: gprs_ns2.c:102
gprs_ns2_bind_by_name
struct gprs_ns2_vc_bind * gprs_ns2_bind_by_name(struct gprs_ns2_inst *nsi, const char *name)
Search for a bind with a unique name.
Definition: gprs_ns2.c:1366
BSSGP_CAUSE_UNEXP_COND_IE
@ BSSGP_CAUSE_UNEXP_COND_IE
Definition: gsm_08_18.h:284
log_set_bvc_filter
static void log_set_bvc_filter(struct log_target *target, struct bssgp_bvc_ctx *bctx)
Definition: gprs_bssgp_vty.c:47
DNS
#define DNS
Definition: gprs_ns2_vc_fsm.c:52
flush_ll_ack_ies
static const uint8_t flush_ll_ack_ies[]
Definition: gprs_bssgp_util.c:203
NS_IE_PDU
@ NS_IE_PDU
Definition: gsm_08_16.h:68
signal.h
osmo_fr_tx_dlc
int osmo_fr_tx_dlc(struct msgb *msg)
Definition: frame_relay.c:834
osmo_rai_name
const char * osmo_rai_name(const struct gprs_ra_id *rai)
nsip_fd_cb
static int nsip_fd_cb(struct osmo_fd *bfd, unsigned int what)
Definition: gprs_ns.c:2030
BSSGP_IE_LIST_OF_SETUP_PFC
@ BSSGP_IE_LIST_OF_SETUP_PFC
Definition: gsm_08_18.h:204
osmo_bssgp_prim::oph
struct osmo_prim_hdr oph
Definition: gprs_bssgp.h:65
gprs_ns2_ip_connect
struct gprs_ns2_vc * gprs_ns2_ip_connect(struct gprs_ns2_vc_bind *bind, const struct osmo_sockaddr *remote, struct gprs_ns2_nse *nse, uint16_t nsvci)
Create, connect and activate a new IP-based NS-VC.
Definition: gprs_ns2.c:1053
GRE_PTYPE_KAR
#define GRE_PTYPE_KAR
Definition: gprs_ns2_frgre.c:53
ns2_find_vc_by_dlci
static int ns2_find_vc_by_dlci(struct gprs_ns2_vc_bind *bind, uint16_t dlci, struct gprs_ns2_vc **result)
Definition: gprs_ns2_frgre.c:406
gprs_nsvc::list
struct llist_head list
list of NS-VCs within NS Instance
Definition: gprs_ns.h:124
gprs_ns2_vc::priv
void * priv
can be used by the bind/driver of the virtual circuit.
Definition: gprs_ns2_internal.h:217
BSSGP_IE_RIM_REQ_APP_CONTAINER
@ BSSGP_IE_RIM_REQ_APP_CONTAINER
Definition: gsm_08_18.h:179
ps_ho_required_ies
static const uint8_t ps_ho_required_ies[]
Definition: gprs_bssgp_util.c:235
ns2_count_transfer_cap
int ns2_count_transfer_cap(struct gprs_ns2_nse *nse, uint16_t bvci)
calculate the transfer capabilities for a nse
Definition: gprs_ns2.c:1439
vty.h
gprs_ns2_inst
An instance of the NS protocol stack.
Definition: gprs_ns2_internal.h:119
BSSGP_CAUSE_MS_BACK_OLD_CHAN
@ BSSGP_CAUSE_MS_BACK_OLD_CHAN
Definition: gsm_08_18.h:305
ns2_sns_rx
int ns2_sns_rx(struct gprs_ns2_vc *nsvc, struct msgb *msg, struct tlv_parsed *tp)
main entry point for receiving SNS messages from the network.
Definition: gprs_ns2_sns.c:1557
gprs_ra_id::mnc
uint16_t mnc
BSSGP_IE_ALIGNMENT
@ BSSGP_IE_ALIGNMENT
Definition: gsm_08_18.h:118
GRE_PTYPE_IPv6
#define GRE_PTYPE_IPv6
Definition: gprs_ns2_frgre.c:52
get_value_string
const char * get_value_string(const struct value_string *vs, uint32_t val)
nsvc_start_timer
static void nsvc_start_timer(struct gprs_nsvc *nsvc, enum nsvc_timer_mode mode)
Definition: gprs_ns.c:743
BSSGP_PDUT_BVC_BLOCK
@ BSSGP_PDUT_BVC_BLOCK
Definition: gsm_08_18.h:44
rate_ctr_add
void rate_ctr_add(struct rate_ctr *ctr, int inc)
gprs_ns2_vc_bind::statg
struct osmo_stat_item_group * statg
Definition: gprs_ns2_internal.h:271
BSSGP_IE_RA_CAP_UPD_CAUSE
@ BSSGP_IE_RA_CAP_UPD_CAUSE
Definition: gsm_08_18.h:144
gprs_ns_tx_alive_ack
int gprs_ns_tx_alive_ack(struct gprs_nsvc *nsvc)
Transmit a NS-ALIVE-ACK on a given NS-VC.
Definition: gprs_ns.c:721
gprs_msgb.h
osmo_fsm_inst_term
#define osmo_fsm_inst_term(fi, cause, data)
rad_sts_ies
static const uint8_t rad_sts_ies[]
Definition: gprs_bssgp_util.c:190
BSSGP_IE_SCI
@ BSSGP_IE_SCI
Definition: gsm_08_18.h:240
gprs_bssgp.h
BSSGP_RIM_ROUTING_INFO_UTRAN
@ BSSGP_RIM_ROUTING_INFO_UTRAN
Definition: gprs_bssgp_rim.h:34
osmo_plmn_name_buf
char * osmo_plmn_name_buf(char *buf, size_t buf_len, const struct osmo_plmn_id *plmn)
bssgp_ran_information_pdu::rim_cont_iei
uint8_t rim_cont_iei
Definition: gprs_bssgp_rim.h:246
BSSGP_IE_EUTRAN_IRAT_HO_INFO
@ BSSGP_IE_EUTRAN_IRAT_HO_INFO
Definition: gsm_08_18.h:228
NS_TOUT_TNS_BLOCK_RETRIES
@ NS_TOUT_TNS_BLOCK_RETRIES
Definition: gprs_ns2_internal.h:56
cause
uint8_t cause
len
static size_t len(const char *str)
BSSGP_IE_RELIABLE_IRAT_HO_INFO
@ BSSGP_IE_RELIABLE_IRAT_HO_INFO
Definition: gsm_08_18.h:231
BSSGP_CAUSE_DTM_HO_PS_ALLOC_FAIL
@ BSSGP_CAUSE_DTM_HO_PS_ALLOC_FAIL
Definition: gsm_08_18.h:318
osmo_sock_init_osa_ofd
int osmo_sock_init_osa_ofd(struct osmo_fd *ofd, int type, int proto, const struct osmo_sockaddr *local, const struct osmo_sockaddr *remote, unsigned int flags)
gprs_ra_id::mnc_3_digits
bool mnc_3_digits
pdu_type
uint8_t pdu_type
NS PDU type.
Definition: gsm_08_16.h:0
bssgp_bvc_ctx::fc
struct bssgp_flow_control * fc
Definition: gprs_bssgp.h:122
NS_CAUSE_PROTO_ERR_UNSPEC
@ NS_CAUSE_PROTO_ERR_UNSPEC
Definition: gsm_08_16.h:92
BSSGP_CAUSE_MS_UNDER_PS_HO
@ BSSGP_CAUSE_MS_UNDER_PS_HO
Definition: gsm_08_18.h:296
ns2_tx_block_ack
int ns2_tx_block_ack(struct gprs_ns2_vc *nsvc)
Transmit a NS-BLOCK-ACK on a given NS-VC.
Definition: gprs_ns2_message.c:243
GPRS_NS2_AFF_CAUSE_SNS_CONFIGURED
@ GPRS_NS2_AFF_CAUSE_SNS_CONFIGURED
Definition: gprs_ns2.h:84
NSE_S_BLOCKED
#define NSE_S_BLOCKED
Definition: gprs_ns.h:44
bssgp_node
static struct cmd_node bssgp_node
Definition: gprs_bssgp_vty.c:59
osmo_gprs_ns2_prim::oph
struct osmo_prim_hdr oph
Definition: gprs_ns2.h:110
gprs_ns2_vc_driver::priv
void * priv
Definition: gprs_ns2_internal.h:276
BSSGP_IE_RI_REQ_RIM_CONTAINER
@ BSSGP_IE_RI_REQ_RIM_CONTAINER
Definition: gsm_08_18.h:187
gprs_ns2_internal.h
vc_driver_fr
struct gprs_ns2_vc_driver vc_driver_fr
Definition: gprs_ns2_fr.c:94
BSSGP_PDUT_SUSPEND_NACK
@ BSSGP_PDUT_SUSPEND_NACK
Definition: gsm_08_18.h:34
bssgp_rim_routing_info_discr_str
static const char * bssgp_rim_routing_info_discr_str(enum bssgp_rim_routing_info_discr val)
Obtain a human-readable string for NACC Cause code.
Definition: gprs_bssgp_rim.h:41
BSSGP_IE_CONTAINER_ID
@ BSSGP_IE_CONTAINER_ID
Definition: gsm_08_18.h:210
BSSGP_CAUSE_PS_HO_TARG_NA
@ BSSGP_CAUSE_PS_HO_TARG_NA
Definition: gsm_08_18.h:314
BSSGP_IE_CSG_ID
@ BSSGP_IE_CSG_ID
Definition: gsm_08_18.h:233
gprs_ns2_vc_bind::dump_vty
void(* dump_vty)(const struct gprs_ns2_vc_bind *bind, struct vty *vty, bool stats)
allow to show information for the vty
Definition: gprs_ns2_internal.h:263
LIBGB_MSGB_CB
#define LIBGB_MSGB_CB(__msgb)
Definition: gprs_msgb.h:21
GPRS_NS2_PRIM_STATUS
@ GPRS_NS2_PRIM_STATUS
Definition: gprs_ns2.h:55
rate_ctr_group_free
void rate_ctr_group_free(struct rate_ctr_group *grp)
NS_ALLOC_HEADROOM
#define NS_ALLOC_HEADROOM
Definition: gprs_ns.h:31
OSMO_ASSERT
#define OSMO_ASSERT(exp)
bssgp_parse_cell_id
uint16_t bssgp_parse_cell_id(struct gprs_ra_id *raid, const uint8_t *buf)
Definition: gprs_bssgp.c:311
gprs_ns2_create_nse
struct gprs_ns2_nse * gprs_ns2_create_nse(struct gprs_ns2_inst *nsi, uint16_t nsei, enum gprs_ns2_ll linklayer, enum gprs_ns2_dialect dialect)
Create a NS Entity within given NS instance.
Definition: gprs_ns2.c:780
BSSGP_CAUSE_UNKN_RIM_AI
@ BSSGP_CAUSE_UNKN_RIM_AI
Definition: gsm_08_18.h:291
ns_att_tlvdef2
static const struct tlv_definition ns_att_tlvdef2
Definition: gprs_ns2.c:120
fr_alloc_vc
static struct priv_vc * fr_alloc_vc(struct gprs_ns2_vc_bind *bind, struct gprs_ns2_vc *nsvc, uint16_t dlci)
Definition: gprs_ns2_fr.c:196
osmo_bssgp_prim::tp
struct tlv_parsed * tp
Definition: gprs_bssgp.h:71
GPRS_NS2_LL_FR_GRE
@ GPRS_NS2_LL_FR_GRE
NS/FR/GRE/IP.
Definition: gprs_ns2.h:48
DEBUGP
#define DEBUGP(ss, fmt, args...)
osmo_stat_item_group
priv_bind::dscp
int dscp
Definition: gprs_ns2_frgre.c:114
osmo_prim_hdr
BSSGP_IE_RIM_PROTOCOL_VERSION
@ BSSGP_IE_RIM_PROTOCOL_VERSION
Definition: gsm_08_18.h:185
PTM
#define PTM
Definition: gprs_bssgp_util.c:259
gprs_active_nsvc_by_nsei
static struct gprs_nsvc * gprs_active_nsvc_by_nsei(struct gprs_ns_inst *nsi, uint16_t nsei, uint16_t bvci)
Determine active NS-VC for given NSEI + BVCI.
Definition: gprs_ns.c:267
TVLV_HDR_MAXLEN
#define TVLV_HDR_MAXLEN
Definition: gprs_bssgp_rim.c:35
ps_ho_compl_ack_ies
static const uint8_t ps_ho_compl_ack_ies[]
Definition: gprs_bssgp_util.c:247
bssgp_rim_routing_info::utran
struct bssgp_rim_routing_info::@5::@8 utran
PRIM_BSSGP_RIM_PDU_TRANSFER
@ PRIM_BSSGP_RIM_PDU_TRANSFER
Definition: gprs_bssgp.h:61
S_NS_REPLACED
@ S_NS_REPLACED
Definition: gprs_ns.h:237
ns_pdu_type
ns_pdu_type
NS PDU Type (TS 08.16, Section 10.3.7, Table 14)
Definition: gsm_08_16.h:42
gprs_nsvc::nsi
struct gprs_ns_inst * nsi
pointer to NS Instance
Definition: gprs_ns.h:126
osmo_prim_init
static void osmo_prim_init(struct osmo_prim_hdr *oph, unsigned int sap, unsigned int primitive, enum osmo_prim_operation operation, struct msgb *msg)
msgb_put
static unsigned char * msgb_put(struct msgb *msgb, unsigned int len)
pag_cs_ies
static const uint8_t pag_cs_ies[]
Definition: gprs_bssgp_util.c:187
osmo_stat_item_group_free
void osmo_stat_item_group_free(struct osmo_stat_item_group *grp)
NS_TOUT_TNS_ALIVE
@ NS_TOUT_TNS_ALIVE
Definition: gprs_ns.h:39
BSSGP_IE_BVC_MEASUREMENT
@ BSSGP_IE_BVC_MEASUREMENT
Definition: gsm_08_18.h:124
ns2_load_sharing_modulo
static struct gprs_ns2_vc * ns2_load_sharing_modulo(struct gprs_ns2_nse *nse, uint16_t bvci, uint32_t load_selector)
Definition: gprs_ns2.c:364
tlv_parse
int tlv_parse(struct tlv_parsed *dec, const struct tlv_definition *def, const uint8_t *buf, int buf_len, uint8_t lv_tag, uint8_t lv_tag2)
NS_TOUT_TNS_TEST
@ NS_TOUT_TNS_TEST
Definition: gprs_ns2_internal.h:59
BSSGP_IE_POSITIONING_DATA
@ BSSGP_IE_POSITIONING_DATA
Definition: gsm_08_18.h:171
gsm0808_utils.h
NS_PDUT_BLOCK
@ NS_PDUT_BLOCK
Definition: gsm_08_16.h:46
LOG_FLT_GB_BVC
LOG_FLT_GB_BVC
gprs_nsvc::timer
struct osmo_timer_list timer
Definition: gprs_ns.h:134
NS_IE_VCI
@ NS_IE_VCI
Definition: gsm_08_16.h:67
gprs_ns_destroy
void gprs_ns_destroy(struct gprs_ns_inst *nsi)
Destroy an entire NS instance.
Definition: gprs_ns.c:1948
tvlv_att_def
struct tlv_definition tvlv_att_def
GPRS_NS_CS_SKIPPED
@ GPRS_NS_CS_SKIPPED
Skipped message.
Definition: gprs_ns.h:69
bssgp_msgb_alloc
struct msgb * bssgp_msgb_alloc(void)
Definition: gprs_bssgp_util.c:494
gprs_ns_rx_status
static int gprs_ns_rx_status(struct gprs_nsvc *nsvc, struct msgb *msg)
Definition: gprs_ns.c:1142
gprs_ns2_inst::cb_data
void * cb_data
callback data
Definition: gprs_ns2_internal.h:124
BSSGP_IE_IRAT_MEAS_CFG_E_EARFCN
@ BSSGP_IE_IRAT_MEAS_CFG_E_EARFCN
Definition: gsm_08_18.h:245
bssgp_tx_status
int bssgp_tx_status(uint8_t cause, uint16_t *bvci, struct msgb *orig_msg)
Definition: gprs_bssgp_util.c:555
data
uint8_t data[0]
variable-length payload
Definition: gsm_08_16.h:1
gprs_ns2_nse::nsvc
struct llist_head nsvc
llist head to hold all nsvc
Definition: gprs_ns2_internal.h:154
gprs_sns_bss_fsm_start
int gprs_sns_bss_fsm_start(struct gprs_ns_inst *nsi)
Definition: gprs_ns_sns.c:680
BSSGP_IE_SGSN_GROUP_ID
@ BSSGP_IE_SGSN_GROUP_ID
Definition: gsm_08_18.h:255
rinfo_ack_ies
static const uint8_t rinfo_ack_ies[]
Definition: gprs_bssgp_util.c:251
gprs_ns2_vc_bind::sns_data_weight
uint8_t sns_data_weight
the IP-SNS data weight when doing dynamic configuration
Definition: gprs_ns2_internal.h:269
gprs_ns2_vc_bind::accept_ipaccess
bool accept_ipaccess
Definition: gprs_ns2_internal.h:244
gprs_ns2_vc_bind::send_vc
int(* send_vc)(struct gprs_ns2_vc *nsvc, struct msgb *msg)
send a msg over a VC
Definition: gprs_ns2_internal.h:257
reject_status_msg
static int reject_status_msg(struct msgb *orig_msg, struct tlv_parsed *tp, struct msgb **reject, enum ns_cause cause)
Create a status message to be sent over a new connection.
Definition: gprs_ns2.c:687
ns_osmo_signal_dispatch_mismatch
static void ns_osmo_signal_dispatch_mismatch(struct gprs_nsvc *nsvc, struct msgb *msg, uint8_t pdu_type, uint8_t ie_type)
Definition: gprs_ns.c:374
nsvc_timer_elapsed_ms
static int nsvc_timer_elapsed_ms(struct gprs_nsvc *nsvc)
Definition: gprs_ns.c:761
osmo_cell_global_id_ps
gprs_nsvc::nsvci_is_valid
unsigned int nsvci_is_valid
Definition: gprs_ns.h:141
LOG_CTX_GB_NSVC
LOG_CTX_GB_NSVC
NS_PDUT_ALIVE_ACK
@ NS_PDUT_ALIVE_ACK
Definition: gsm_08_16.h:52
gprs_ns_tx_block
int gprs_ns_tx_block(struct gprs_nsvc *nsvc, uint8_t cause)
Transmit a NS-BLOCK on a given NS-VC.
Definition: gprs_ns.c:627
NSVC_TIMER_TNS_TEST
@ NSVC_TIMER_TNS_TEST
Definition: gprs_ns2_internal.h:69
ns_set_remote_state
#define ns_set_remote_state(ns_, st_)
Definition: gprs_ns.c:93
common_vty.h
TLVP_PRES_LEN
#define TLVP_PRES_LEN(tp, tag, min_len)
priv_vc
Definition: gprs_ns2_fr.c:119
gprs_ns_nsip_connect_sns
struct gprs_nsvc * gprs_ns_nsip_connect_sns(struct gprs_ns_inst *nsi, struct sockaddr_in *dest, uint16_t nsei, uint16_t nsvci)
Establish a NS connection (from the BSS) to the SGSN using SNS auto-configuration.
Definition: gprs_ns.c:2175
osmo_fd_register
int osmo_fd_register(struct osmo_fd *fd)
bssgp_ran_information_pdu::routing_info_src
struct bssgp_rim_routing_info routing_info_src
Definition: gprs_bssgp_rim.h:243
bssgp_ran_inf_app_cont_nacc::num_si
uint8_t num_si
Definition: gprs_bssgp_rim.h:90
bssgp_rim_ri_name
const char * bssgp_rim_ri_name(const struct bssgp_rim_routing_info *ri)
Encode a RIM Routing information into a human readable string.
Definition: gprs_bssgp_rim.c:206
msgb_alloc_headroom
static struct msgb * msgb_alloc_headroom(int size, int headroom, const char *name)
GPRS_NS2_AFF_CAUSE_RECOVERY
@ GPRS_NS2_AFF_CAUSE_RECOVERY
Definition: gprs_ns2.h:82
gprs_ns_hdr::pdu_type
uint8_t pdu_type
NS PDU type.
Definition: gsm_08_16.h:18
NS_CAUSE_INVAL_NR_NS_VC
@ NS_CAUSE_INVAL_NR_NS_VC
Definition: gsm_08_16.h:98
osmo_bssgp_prim::bvci
uint16_t bvci
Definition: gprs_bssgp.h:69
osmo_fr_role_str
static const char * osmo_fr_role_str(enum osmo_fr_role role)
Definition: frame_relay.h:49
gprs_ns2_vc::sig_counter
uint8_t sig_counter
signalling packet counter for the load sharing function
Definition: gprs_ns2_internal.h:211
gprs_ns2_ll
gprs_ns2_ll
Osmocom NS link layer types.
Definition: gprs_ns2.h:44
BSSGP_IE_SUB_PID4RAT_FREQ_PRIO
@ BSSGP_IE_SUB_PID4RAT_FREQ_PRIO
Definition: gsm_08_18.h:229
osmo_fd::cb
int(* cb)(struct osmo_fd *fd, unsigned int what)
BSSGP_IE_RI_RIM_CONTAINER
@ BSSGP_IE_RI_RIM_CONTAINER
Definition: gsm_08_18.h:188
ps_ho_required_ack_ies
static const uint8_t ps_ho_required_ack_ies[]
Definition: gprs_bssgp_util.c:237
ns2_nse_notify_unblocked
void ns2_nse_notify_unblocked(struct gprs_ns2_vc *nsvc, bool unblocked)
Notify a nse about the change of a NS-VC.
Definition: gprs_ns2.c:1239
gprs_ns_inst::use_reset_block_unblock
bool use_reset_block_unblock
IPA compatibility: NS-RESET/BLOCK/UNBLOCK even on IP-SNS.
Definition: gprs_ns.h:101
BSSGP_CAUSE_CELL_TRAF_CONG
@ BSSGP_CAUSE_CELL_TRAF_CONG
Definition: gsm_08_18.h:273
gprs_ns_instantiate
struct gprs_ns_inst * gprs_ns_instantiate(gprs_ns_cb_t *cb, void *ctx)
Create a new GPRS NS instance.
Definition: gprs_ns.c:1884
inv_trc_ies
static const uint8_t inv_trc_ies[]
Definition: gprs_bssgp_util.c:219
PRIM_OP_INDICATION
PRIM_OP_INDICATION
VTY_NEWLINE
#define VTY_NEWLINE
bssgp_ran_inf_x_cont::pdu_ind
struct bssgp_rim_pdu_ind pdu_ind
Definition: gprs_bssgp_rim.c:407
ps_ho_cancel_ies
static const uint8_t ps_ho_cancel_ies[]
Definition: gprs_bssgp_util.c:246
ns2_tx_alive_ack
int ns2_tx_alive_ack(struct gprs_ns2_vc *nsvc)
Transmit a NS-ALIVE-ACK on a given NS-VC.
Definition: gprs_ns2_message.c:383
osmo_gprs_ns2_prim::status
struct osmo_gprs_ns2_prim::@20::@23 status
BSSGP_IE_EXT_FEATURE_BITMAP
@ BSSGP_IE_EXT_FEATURE_BITMAP
Definition: gsm_08_18.h:205
BIT_DURATION_NS
#define BIT_DURATION_NS
Definition: gprs_ns2_fr.c:84
BSSGP_CAUSE_CAPA_GREATER_0KPBS
@ BSSGP_CAUSE_CAPA_GREATER_0KPBS
Definition: gsm_08_18.h:270
BSSGP_NACC_CAUSE_SIPSI_SET_ERR
@ BSSGP_NACC_CAUSE_SIPSI_SET_ERR
Definition: gprs_bssgp_rim.h:106
gprs_nsvc::ll
enum gprs_ns_ll ll
which link-layer are we based on?
Definition: gprs_ns.h:147
BSSGP_IE_INTER_RAT_HO_INFO
@ BSSGP_IE_INTER_RAT_HO_INFO
Definition: gsm_08_18.h:215
msgb.h
BSSGP_IE_RIM_SEQ_NR
@ BSSGP_IE_RIM_SEQ_NR
Definition: gsm_08_18.h:178
rinfo_req_ies
static const uint8_t rinfo_req_ies[]
Definition: gprs_bssgp_util.c:250
BSSGP_NACC_CAUSE_UNSPEC
@ BSSGP_NACC_CAUSE_UNSPEC
Definition: gprs_bssgp_rim.h:101
BSSGP_IE_ROUTEING_AREA
@ BSSGP_IE_ROUTEING_AREA
Definition: gsm_08_18.h:145
ns2_prim_status_ind
void ns2_prim_status_ind(struct gprs_ns2_nse *nse, struct gprs_ns2_vc *nsvc, uint16_t bvci, enum gprs_ns2_affecting_cause cause)
Send a STATUS.ind primitive to the specified NS instance user.
Definition: gprs_ns2.c:541
osmo_plmn_id
gprs_ns2_fr_bind_netif
const char * gprs_ns2_fr_bind_netif(struct gprs_ns2_vc_bind *bind)
Return the network interface of the bind.
Definition: gprs_ns2_fr.c:920
gprs_ns2_vc::statg
struct osmo_stat_item_group * statg
Definition: gprs_ns2_internal.h:223
BSSGP_IE_SI_PSI_CONTAINER
@ BSSGP_IE_SI_PSI_CONTAINER
Definition: gsm_08_18.h:218
GPRS_NS2_AFF_CAUSE_VC_FAILURE
@ GPRS_NS2_AFF_CAUSE_VC_FAILURE
Definition: gprs_ns2.h:79
bssgp_flow_control::queue_depth
uint32_t queue_depth
current length of queue (msgs)
Definition: gprs_bssgp.h:95
gprs_ns_rx_unitdata
static int gprs_ns_rx_unitdata(struct gprs_nsvc *nsvc, struct msgb *msg)
Definition: gprs_ns.c:1123
SNS_PDUT_CHANGE_WEIGHT
@ SNS_PDUT_CHANGE_WEIGHT
Definition: gsm_08_16.h:56
TLVP_LEN
#define TLVP_LEN(x, y)
msg
uint8_t msg[0]
unblock_ack_ies
static const uint8_t unblock_ack_ies[]
Definition: gprs_bssgp_util.c:215
osmo_stat_item_inc
void osmo_stat_item_inc(struct osmo_stat_item *item, int32_t value)
gprs_ns2_vc_bind::accept_sns
bool accept_sns
Definition: gprs_ns2_internal.h:245
gprs_nsvc_delete
void gprs_nsvc_delete(struct gprs_nsvc *nsvc)
Delete given NS-VC.
Definition: gprs_ns.c:353
llist_for_each_entry_safe
#define llist_for_each_entry_safe(pos, n, head, member)
priv_bind::link
struct osmo_fr_link * link
Definition: gprs_ns2_fr.c:101
bssgp_nsi
struct gprs_ns_inst * bssgp_nsi
Definition: gprs_bssgp_util.c:37
fc_bvc_ies
static const uint8_t fc_bvc_ies[]
Definition: gprs_bssgp_util.c:206
bssgp_ran_information_pdu::rim_cont
const uint8_t * rim_cont
Definition: gprs_bssgp_rim.h:247
bssgp_flow_control::max_queue_depth
uint32_t max_queue_depth
how many packets to queue (mgs)
Definition: gprs_bssgp.h:94
bssgp_rx_rim
int bssgp_rx_rim(struct msgb *msg, struct tlv_parsed *tp, uint16_t bvci)
Definition: gprs_bssgp_rim.c:1183
BSSGP_PDUT_MS_REGISTR_ENQ
@ BSSGP_PDUT_MS_REGISTR_ENQ
Definition: gsm_08_18.h:41
BSSGP_RIM_SI_LEN
#define BSSGP_RIM_SI_LEN
Definition: gprs_bssgp_rim.h:83
osmo_tlv_prot_def
gprs_ns_tx_simple
static int gprs_ns_tx_simple(struct gprs_nsvc *nsvc, uint8_t pdu_type)
Definition: gprs_ns.c:516
PRIM_OP_REQUEST
PRIM_OP_REQUEST
ns_set_state_with_log
static void ns_set_state_with_log(struct gprs_nsvc *nsvc, uint32_t state, bool is_remote, const char *file, unsigned line)
Definition: gprs_ns.c:218
osmo_sockaddr
BSSGP_IE_TRACE_REFERENC
@ BSSGP_IE_TRACE_REFERENC
Definition: gsm_08_18.h:151
BSSGP_IE_SERVICE_UTRAN_CCO
@ BSSGP_IE_SERVICE_UTRAN_CCO
Definition: gsm_08_18.h:163
TLV_TYPE_FIXED
TLV_TYPE_FIXED
nsvc_ctrg_desc
static const struct rate_ctr_group_desc nsvc_ctrg_desc
Definition: gprs_ns.c:158
bssgp_ran_inf_x_cont::prot_ver
uint8_t prot_ver
Definition: gprs_bssgp_rim.c:408
bssgp_ran_inf_err_rim_cont::prot_ver
uint8_t prot_ver
Definition: gprs_bssgp_rim.h:207
BSSGP_IE_CS_INDICATION
@ BSSGP_IE_CS_INDICATION
Definition: gsm_08_18.h:222
gprs_ns2_nse::nsi
struct gprs_ns2_inst * nsi
entry back to ns2_inst
Definition: gprs_ns2_internal.h:148
BSSGP_PDUT_BVC_BLOCK_ACK
@ BSSGP_PDUT_BVC_BLOCK_ACK
Definition: gsm_08_18.h:45
BSSGP_CAUSE_DTM_HO_INVAL_CS_IND
@ BSSGP_CAUSE_DTM_HO_INVAL_CS_IND
Definition: gsm_08_18.h:320
BSSGP_PDUT_UL_UNITDATA
@ BSSGP_PDUT_UL_UNITDATA
Definition: gsm_08_18.h:20
bssgp_nacc_cause_strs
const struct value_string bssgp_nacc_cause_strs[]
Definition: gprs_bssgp_rim.c:344
msgb_v_put
static uint8_t * msgb_v_put(struct msgb *msg, uint8_t val)
BSSGP_PDUT_PS_HO_REQUIRED
@ BSSGP_PDUT_PS_HO_REQUIRED
Definition: gsm_08_18.h:72
NS_DESC_B
#define NS_DESC_B(st)
Definition: gprs_ns.h:48
ns2_vc_fsm_alloc
struct osmo_fsm_inst * ns2_vc_fsm_alloc(struct gprs_ns2_vc *nsvc, const char *id, bool initiate)
gprs_ns2_vc_fsm_alloc
Definition: gprs_ns2_vc_fsm.c:704
gprs_ns_inst::nsip
struct gprs_ns_inst::@14 nsip
NS-over-IP specific bits.
osmo_fd_setup
void osmo_fd_setup(struct osmo_fd *ofd, int fd, unsigned int when, int(*cb)(struct osmo_fd *fd, unsigned int what), void *data, unsigned int priv_nr)
BSSGP_PDUT_PS_HO_REQUEST_ACK
@ BSSGP_PDUT_PS_HO_REQUEST_ACK
Definition: gsm_08_18.h:76
gprs_ns2_inst::nse
struct llist_head nse
linked lists of all NSVC in this instance
Definition: gprs_ns2_internal.h:130
ns2_tx_sns_config
int ns2_tx_sns_config(struct gprs_ns2_vc *nsvc, bool end_flag, const struct gprs_ns_ie_ip4_elem *ip4_elems, unsigned int num_ip4_elems, const struct gprs_ns_ie_ip6_elem *ip6_elems, unsigned int num_ip6_elems)
Encode + Transmit a SNS-CONFIG as per Section 9.3.4.
Definition: gprs_ns2_message.c:550
NS_CTR_BLOCKED
@ NS_CTR_BLOCKED
Definition: gprs_ns.c:133
crt_bss_pfc_nack_ies
static const uint8_t crt_bss_pfc_nack_ies[]
Definition: gprs_bssgp_util.c:225
gprs_ns2_nse::mtu
uint16_t mtu
MTU of a NS PDU.
Definition: gprs_ns2_internal.h:184
BSSGP_IE_MS_BUCKET_SIZE
@ BSSGP_IE_MS_BUCKET_SIZE
Definition: gsm_08_18.h:136
BSSGP_IE_MBMS_SESSION_DURATION
@ BSSGP_IE_MBMS_SESSION_DURATION
Definition: gsm_08_18.h:194
libgb_msgb_cb::nsei
uint16_t nsei
Identifiers of a BTS, equal to 'struct bssgp_bts_ctx'.
Definition: gprs_msgb.h:15
bssgp_bvc_ctxts
struct llist_head bssgp_bvc_ctxts
BSSGP_IE_LLC_PDU
@ BSSGP_IE_LLC_PDU
Definition: gsm_08_18.h:132
rate_ctr.h
BSSGP_CAUSE_PROTO_ERR_UNSPEC
@ BSSGP_CAUSE_PROTO_ERR_UNSPEC
Definition: gsm_08_18.h:287
gprs_ns2_find_vc_by_dlci
int gprs_ns2_find_vc_by_dlci(struct gprs_ns2_vc_bind *bind, uint16_t dlci, struct gprs_ns2_vc **result)
Definition: gprs_ns2_fr.c:222
gprs_ns2_nse::ll
enum gprs_ns2_ll ll
which link-layer are we based on?
Definition: gprs_ns2_internal.h:170
NS_CAUSE_INVAL_NR_IPv6_EP
@ NS_CAUSE_INVAL_NR_IPv6_EP
Definition: gsm_08_16.h:97
osmo_stat_item_group_desc
NS_CTR_LOST_ALIVE
@ NS_CTR_LOST_ALIVE
Definition: gprs_ns.c:139
name
const char * name
msgb_tv16_put
static uint8_t * msgb_tv16_put(struct msgb *msg, uint8_t tag, uint16_t val)
gsm48_parse_ra
void gsm48_parse_ra(struct gprs_ra_id *raid, const uint8_t *buf)
LOG_CTX_GB_NSE
LOG_CTX_GB_NSE
BSSGP_IE_NSEI
@ BSSGP_IE_NSEI
Definition: gsm_08_18.h:164
osmo_fd_unregister
void osmo_fd_unregister(struct osmo_fd *fd)
bssgp_enc_ran_inf_app_err_rim_cont
int bssgp_enc_ran_inf_app_err_rim_cont(uint8_t *buf, size_t len, const struct bssgp_ran_inf_app_err_rim_cont *cont)
Encode a RAN Information Application Error RIM Container (3GPP TS 48.018, table 11....
Definition: gprs_bssgp_rim.c:918
BSSGP_PDUT_DL_UNITDATA
@ BSSGP_PDUT_DL_UNITDATA
Definition: gsm_08_18.h:19
gprs_bssgp_internal.h
fr_backlog_timer_cb
static void fr_backlog_timer_cb(void *data)
Definition: gprs_ns2_fr.c:415
osmo_gprs_ns2_prim::u
union osmo_gprs_ns2_prim::@20 u
bssgp_rim_routing_info::eutran
struct bssgp_rim_routing_info::@5::@9 eutran
GPRS_NS_EVT_UNIT_DATA
@ GPRS_NS_EVT_UNIT_DATA
Definition: gprs_ns.h:61
gprs_ns_process_msg
int gprs_ns_process_msg(struct gprs_ns_inst *nsi, struct msgb *msg, struct gprs_nsvc **nsvc)
Process NS message independently from underlying transport layer.
Definition: gprs_ns.c:1725
BSSGP_IE_CHAN_NEEDED
@ BSSGP_IE_CHAN_NEEDED
Definition: gsm_08_18.h:127
bssgp_ran_inf_req_app_cont_nacc
Definition: gprs_bssgp_rim.h:75
BSSGP_IE_REDIRECTION_COMPLETED
@ BSSGP_IE_REDIRECTION_COMPLETED
Definition: gsm_08_18.h:237
OSMO_FD_READ
#define OSMO_FD_READ
NS_CAUSE_MISSING_ESSENT_IE
@ NS_CAUSE_MISSING_ESSENT_IE
Definition: gsm_08_16.h:94
osmo_routing_area_id::rac
uint8_t rac
gprs_bssgp_rim.h
osmo_log_vty2tgt
struct log_target * osmo_log_vty2tgt(struct vty *vty)
gprs_ra_id
osmo_sockaddr_str::ip
char ip[INET6_ADDRSTRLEN]
__attribute__
struct priv_bind __attribute__
dl_mb_ud_ies
static const uint8_t dl_mb_ud_ies[]
Definition: gprs_bssgp_util.c:184
BSSGP_IE_CAUSE
@ BSSGP_IE_CAUSE
Definition: gsm_08_18.h:125
dub_tlvp_header
static uint8_t * dub_tlvp_header(uint8_t *buf, uint8_t iei, uint16_t len)
Definition: gprs_bssgp_rim.c:520
gprs_ns2_nse
Structure repesenting a NSE.
Definition: gprs_ns2_internal.h:144
INIT_LLIST_HEAD
#define INIT_LLIST_HEAD(ptr)
vty_out_rate_ctr_group
void vty_out_rate_ctr_group(struct vty *vty, const char *prefix, struct rate_ctr_group *ctrg)
gprs_ns2_fr_nsvc_dlci
uint16_t gprs_ns2_fr_nsvc_dlci(const struct gprs_ns2_vc *nsvc)
Return the dlci of the nsvc.
Definition: gprs_ns2_fr.c:1062
BSSGP_IE_LOCATION_AREA
@ BSSGP_IE_LOCATION_AREA
Definition: gsm_08_18.h:134
BSSGP_IE_REDIRECTION_INDICATION
@ BSSGP_IE_REDIRECTION_INDICATION
Definition: gsm_08_18.h:236
NS_TOUT_TSNS_CONFIG_RETRIES
@ NS_TOUT_TSNS_CONFIG_RETRIES
Definition: gprs_ns2_internal.h:64
osmo_ntohs
#define osmo_ntohs(x)
gprs_ns2_vc::list
struct llist_head list
list of NS-VCs within NSE
Definition: gprs_ns2_internal.h:190
BSSGP_IE_ACTIVE_PFC_LIST
@ BSSGP_IE_ACTIVE_PFC_LIST
Definition: gsm_08_18.h:219
BSSGP_PDUT_RAN_INFO_ERROR
@ BSSGP_PDUT_RAN_INFO_ERROR
Definition: gsm_08_18.h:91
bssgp_enc_ran_inf_err_rim_cont
int bssgp_enc_ran_inf_err_rim_cont(uint8_t *buf, size_t len, const struct bssgp_ran_inf_err_rim_cont *cont)
Encode a RAN Information Error RIM Container (3GPP TS 48.018, table 11.3.62a.4.b).
Definition: gprs_bssgp_rim.c:845
ps_ho_compl_ies
static const uint8_t ps_ho_compl_ies[]
Definition: gprs_bssgp_util.c:245
gprs_ns_cb_t
int gprs_ns_cb_t(enum gprs_ns_evt event, struct gprs_nsvc *nsvc, struct msgb *msg, uint16_t bvci)
Osmocom GPRS callback function type.
Definition: gprs_ns.h:75
fr_netif_ofd_cb
static int fr_netif_ofd_cb(struct osmo_fd *bfd, uint32_t what)
Definition: gprs_ns2_fr.c:245
bssgp_ran_inf_ack_rim_cont::son_trans_app_id_len
size_t son_trans_app_id_len
Definition: gprs_bssgp_rim.h:197
frgre_alloc_vc
static struct priv_vc * frgre_alloc_vc(struct gprs_ns2_vc_bind *bind, struct gprs_ns2_vc *nsvc, struct osmo_sockaddr *remote, uint16_t dlci)
Definition: gprs_ns2_frgre.c:150
BSSGP_IE_NAS_CONT_FOR_PS_HO
@ BSSGP_IE_NAS_CONT_FOR_PS_HO
Definition: gsm_08_18.h:202
NS_TOUT_TNS_RESET
@ NS_TOUT_TNS_RESET
Definition: gprs_ns.h:36
BSSGP_IE_RRLP_APDU
@ BSSGP_IE_RRLP_APDU
Definition: gsm_08_18.h:165
bssgp_dec_ran_inf_err_rim_cont
int bssgp_dec_ran_inf_err_rim_cont(struct bssgp_ran_inf_err_rim_cont *cont, const uint8_t *buf, size_t len)
Decode a RAN Information Error RIM Container (3GPP TS 48.018, table 11.3.62a.4.b).
Definition: gprs_bssgp_rim.c:800
nsvc_timer_mode
nsvc_timer_mode
Definition: gprs_ns.h:113
gprs_ns_sendmsg
int gprs_ns_sendmsg(struct gprs_ns_inst *nsi, struct msgb *msg)
High-level function for transmitting a NS-UNITDATA messsage.
Definition: gprs_ns.c:1081
BSSGP_IE_TIME_TO_MBMS_DATA_XFR
@ BSSGP_IE_TIME_TO_MBMS_DATA_XFR
Definition: gsm_08_18.h:213
frgre_fd_cb
static int frgre_fd_cb(struct osmo_fd *bfd, unsigned int what)
Definition: gprs_ns2_frgre.c:520
handle_nsfrgre_write
static int handle_nsfrgre_write(struct osmo_fd *bfd)
Definition: gprs_ns2_frgre.c:476
BSSGP_IE_TRACE_TYPE
@ BSSGP_IE_TRACE_TYPE
Definition: gsm_08_18.h:152
llc_disc_ies
static const uint8_t llc_disc_ies[]
Definition: gprs_bssgp_util.c:204
gprs_ns_tx_status
int gprs_ns_tx_status(struct gprs_nsvc *nsvc, uint8_t cause, uint16_t bvci, struct msgb *orig_msg)
Transmit a NS-STATUS on a given NSVC.
Definition: gprs_ns.c:573
container_of
#define container_of(ptr, type, member)
BSSGP_NACC_CAUSE_SIPSI_TYPE_ERR
@ BSSGP_NACC_CAUSE_SIPSI_TYPE_ERR
Definition: gprs_bssgp_rim.h:104
gre_hdr::ptype
uint16_t ptype
Definition: gprs_ns2_fr.c:88
dl_bss_pfc_ies
static const uint8_t dl_bss_pfc_ies[]
Definition: gprs_bssgp_util.c:220
log_target::filter_data
void * filter_data[LOG_MAX_FILTERS+1]
resume_nack_ies
static const uint8_t resume_nack_ies[]
Definition: gprs_bssgp_util.c:196
BSSGP_IE_OMC_ID
@ BSSGP_IE_OMC_ID
Definition: gsm_08_18.h:138
timersub
#define timersub(a, b, result)
BSSGP_CAUSE_BVCI_BLOCKED
@ BSSGP_CAUSE_BVCI_BLOCKED
Definition: gsm_08_18.h:276
ns_att_tlvdef
static const struct tlv_definition ns_att_tlvdef
Definition: gprs_ns.c:109
gprs_ns2_nse::nsvc_count
int nsvc_count
count all active NSVCs
Definition: gprs_ns2_internal.h:157
ns_mark_alive
#define ns_mark_alive(ns_)
Definition: gprs_ns.c:96
free_vc
static void free_vc(struct gprs_ns2_vc *nsvc)
Definition: gprs_ns2_frgre.c:122
BSSGP_IE_MBMS_SESSION_INFO
@ BSSGP_IE_MBMS_SESSION_INFO
Definition: gsm_08_18.h:198
ns2_ip_bind_connect
struct gprs_ns2_vc * ns2_ip_bind_connect(struct gprs_ns2_vc_bind *bind, struct gprs_ns2_nse *nse, const struct osmo_sockaddr *remote)
Create new NS-VC to a given remote address.
Definition: gprs_ns2_udp.c:386
ns_stat
ns_stat
Definition: gprs_ns.c:166
osmo_cell_global_id_ps::cell_identity
uint16_t cell_identity
bssgp_flow_control::bucket_leak_rate
uint32_t bucket_leak_rate
leak rate of the bucket (octets/sec)
Definition: gprs_bssgp.h:88
BSSGP_CAUSE_TRASIT_NET_FAIL
@ BSSGP_CAUSE_TRASIT_NET_FAIL
Definition: gsm_08_18.h:269
gprs_nsvc::frgre
struct gprs_nsvc::@16::@19 frgre
BSSGP_PDUT_PAGING_CS
@ BSSGP_PDUT_PAGING_CS
Definition: gsm_08_18.h:28
osmo_fsm_inst
NS_TOUT_TNS_ALIVE_RETRIES
@ NS_TOUT_TNS_ALIVE_RETRIES
Definition: gprs_ns.h:40
gprs_ns2_lltype_strs
const struct value_string gprs_ns2_lltype_strs[]
Definition: gprs_ns2.c:232
bssgp_dec_ran_inf_req_app_cont_nacc
int bssgp_dec_ran_inf_req_app_cont_nacc(struct bssgp_ran_inf_req_app_cont_nacc *cont, const uint8_t *buf, size_t len)
Decode a RAN Information Request Application Container for NACC (3GPP TS 48.018, section 11....
Definition: gprs_bssgp_rim.c:216
BSSGP_IE_PAGE_MODE
@ BSSGP_IE_PAGE_MODE
Definition: gsm_08_18.h:209
bssgp_pdu_strings
static const struct value_string bssgp_pdu_strings[]
Definition: gprs_bssgp_util.c:104
gprs_ns2_affecting_cause
gprs_ns2_affecting_cause
Osmocom NS primitives according to 48.016 5.2.2.6 Service primitives.
Definition: gprs_ns2.h:78
cmd_node
DEFUN
DEFUN(cfg_bssgp, cfg_bssgp_cmd, "bssgp", "Configure the GPRS BSS Gateway Protocol")
Definition: gprs_bssgp_vty.c:72
BSSGP_PDUT_PS_HO_COMPLETE
@ BSSGP_PDUT_PS_HO_COMPLETE
Definition: gsm_08_18.h:78
dec_rim_cont_common
static int dec_rim_cont_common(struct bssgp_ran_inf_x_cont *cont, struct tlv_parsed *tp)
Definition: gprs_bssgp_rim.c:411
GPRS_NS2_LL_FR
@ GPRS_NS2_LL_FR
NS/FR.
Definition: gprs_ns2.h:47
BSSGP_IE_ENB_ID
@ BSSGP_IE_ENB_ID
Definition: gsm_08_18.h:227
bssgp_ran_inf_app_id
bssgp_ran_inf_app_id
Definition: gprs_bssgp_rim.h:128
gprs_ns_inst::local_port
uint16_t local_port
Definition: gprs_ns.h:96
BSSGP_PDUT_PTM_UNITDATA
@ BSSGP_PDUT_PTM_UNITDATA
Definition: gsm_08_18.h:23
enc_rim_cont_common
static uint8_t * enc_rim_cont_common(uint8_t *buf, size_t len, const struct bssgp_ran_inf_x_cont *cont)
Definition: gprs_bssgp_rim.c:436
NS2_CS_ERROR
@ NS2_CS_ERROR
Failed to process message.
Definition: gprs_ns2_internal.h:89
osmo_pdef_bssgp
const struct osmo_tlv_prot_def osmo_pdef_bssgp
Definition: gprs_bssgp_util.c:261
bssgp_dec_ran_inf_app_err_rim_cont
int bssgp_dec_ran_inf_app_err_rim_cont(struct bssgp_ran_inf_app_err_rim_cont *cont, const uint8_t *buf, size_t len)
Decode a RAN Information Application Error RIM Container (3GPP TS 48.018, table 11....
Definition: gprs_bssgp_rim.c:878
NS_CTR_INV_NSEI
@ NS_CTR_INV_NSEI
Definition: gprs_ns.c:138
ns_mark_unblocked
#define ns_mark_unblocked(ns_)
Definition: gprs_ns.c:95
BSSGP_CAUSE_PS_HO_TARG_NOT_SUPP
@ BSSGP_CAUSE_PS_HO_TARG_NOT_SUPP
Definition: gsm_08_18.h:315
ra_cap_ies
static const uint8_t ra_cap_ies[]
Definition: gprs_bssgp_util.c:183
NS_CAUSE_INVAL_NR_IPv4_EP
@ NS_CAUSE_INVAL_NR_IPv4_EP
Definition: gsm_08_16.h:96
gprs_ns2_vc_bind::name
const char * name
unique name
Definition: gprs_ns2_internal.h:233
BSSGP_CAUSE_DTM_HO_T24_EXPIRY
@ BSSGP_CAUSE_DTM_HO_T24_EXPIRY
Definition: gsm_08_18.h:319
ns2_bind_stat
ns2_bind_stat
Definition: gprs_ns2_internal.h:79
gprs_nsvc::ctrg
struct rate_ctr_group * ctrg
Definition: gprs_ns.h:143
BSSGP_CAUSE_NOT_ALL_PFC
@ BSSGP_CAUSE_NOT_ALL_PFC
Definition: gsm_08_18.h:308
gprs_ns2_free
void gprs_ns2_free(struct gprs_ns2_inst *nsi)
Destroy a NS Instance (including all its NSEs, binds, ...).
Definition: gprs_ns2.c:1298
BSSGP_IE_GANSS_LOCATION_TYPE
@ BSSGP_IE_GANSS_LOCATION_TYPE
Definition: gsm_08_18.h:224
msgb_length
uint16_t msgb_length(const struct msgb *msg)
reset_ack_ies
static const uint8_t reset_ack_ies[]
Definition: gprs_bssgp_util.c:217
BSSGP_RAN_INF_APP_ID_MBMS
@ BSSGP_RAN_INF_APP_ID_MBMS
Definition: gprs_bssgp_rim.h:131
bssgp_bvc_ctx::cell_id
uint16_t cell_id
Cell ID of the remote BTS.
Definition: gprs_bssgp.h:111
bssgp_tx_rim
int bssgp_tx_rim(const struct bssgp_ran_information_pdu *pdu, uint16_t nsei)
Send RIM RAN INFORMATION REQUEST via BSSGP (3GPP TS 48.018, section 10.6.1).
Definition: gprs_bssgp_rim.c:1155
gprs_ns2_vc_bind::mtu
uint16_t mtu
MTU of a NS PDU on this bind.
Definition: gprs_ns2_internal.h:251
BSSGP_IE_SBSS_TO_TBSS_TR_CONT
@ BSSGP_IE_SBSS_TO_TBSS_TR_CONT
Definition: gsm_08_18.h:200
bssgp_dec_app_err_cont_nacc
int bssgp_dec_app_err_cont_nacc(struct bssgp_app_err_cont_nacc *cont, const uint8_t *buf, size_t len)
Decode a Application Error Container for NACC (3GPP TS 48.018, section 11.3.64.1).
Definition: gprs_bssgp_rim.c:358
BSSGP_IE_MOBILE_ID
@ BSSGP_IE_MOBILE_ID
Definition: gsm_08_18.h:135
ns2_tx_sns_config_ack
int ns2_tx_sns_config_ack(struct gprs_ns2_vc *nsvc, uint8_t *cause)
Encode + Transmit a SNS-CONFIG-ACK as per Section 9.3.5.
Definition: gprs_ns2_message.c:603
llist_del
static void llist_del(struct llist_head *entry)
BSSGP_IE_DRX_PARAMS
@ BSSGP_IE_DRX_PARAMS
Definition: gsm_08_18.h:128
bssgp_normal_hdr::pdu_type
uint8_t pdu_type
BSSGP PDU type.
Definition: gsm_08_18.h:112
gprs_ns_inst
An instance of the NS protocol stack.
Definition: gprs_ns.h:79
BSSGP_IE_REQUESTED_GPS_AST_DATA
@ BSSGP_IE_REQUESTED_GPS_AST_DATA
Definition: gsm_08_18.h:168
bssgp_bvc_ctx::nsei
uint16_t nsei
Definition: gprs_bssgp.h:116
BSSGP_RIM_ROUTING_INFO_GERAN
@ BSSGP_RIM_ROUTING_INFO_GERAN
Definition: gprs_bssgp_rim.h:33
ns2_create_vc
enum ns2_cs ns2_create_vc(struct gprs_ns2_vc_bind *bind, struct msgb *msg, const char *logname, struct msgb **reject, struct gprs_ns2_vc **success)
Create a new NS-VC based on a [received] message.
Definition: gprs_ns2.c:875
SAP_BSSGP_RIM
SAP_BSSGP_RIM
tlvp_val32be
static uint32_t tlvp_val32be(const struct tlv_parsed *tp, int pos)
NS_CTR_DEAD
@ NS_CTR_DEAD
Definition: gprs_ns.c:134
install_lib_element_ve
void install_lib_element_ve(struct cmd_element *cmd)
GPRS_NS2_VC_MODE_BLOCKRESET
@ GPRS_NS2_VC_MODE_BLOCKRESET
The VC will use RESET/BLOCK/UNBLOCK to start the connection and do ALIVE/ACK.
Definition: gprs_ns2.h:29
BSSGP_CAUSE_COND_IE_ERR
@ BSSGP_CAUSE_COND_IE_ERR
Definition: gsm_08_18.h:285
bssgp_ran_inf_app_id_strs
const struct value_string bssgp_ran_inf_app_id_strs[]
Definition: gprs_bssgp_rim.c:459
ns2_sns_write_vty
void ns2_sns_write_vty(struct vty *vty, const struct gprs_ns2_nse *nse)
write IP-SNS to a vty
Definition: gprs_ns2_sns.c:1677
CHECK_TX_RC
#define CHECK_TX_RC(rc, nsvc)
Definition: gprs_ns.c:193
ns2_vc_is_alive
int ns2_vc_is_alive(struct gprs_ns2_vc *nsvc)
reset_ies
static const uint8_t reset_ies[]
Definition: gprs_bssgp_util.c:216
ns2_vc_stat
ns2_vc_stat
Definition: gprs_ns2_internal.h:75
resume_ies
static const uint8_t resume_ies[]
Definition: gprs_bssgp_util.c:194
BSSGP_PDUT_POSITION_RESPONSE
@ BSSGP_PDUT_POSITION_RESPONSE
Definition: gsm_08_18.h:86
osmo_mnl::priv
void * priv
osmo_prim_hdr::operation
enum osmo_prim_operation operation
osmo_stat_item_set
void osmo_stat_item_set(struct osmo_stat_item *item, int32_t value)
BSSGP_PDUT_BVC_RESET_ACK
@ BSSGP_PDUT_BVC_RESET_ACK
Definition: gsm_08_18.h:47
NS_IE_MAX_NR_NSVC
@ NS_IE_MAX_NR_NSVC
Definition: gsm_08_16.h:74
BSSGP_IE_TA_REQ
@ BSSGP_IE_TA_REQ
Definition: gsm_08_18.h:262
pag_ps_ies
static const uint8_t pag_ps_ies[]
Definition: gprs_bssgp_util.c:186
NS_PDUT_ALIVE
@ NS_PDUT_ALIVE
Definition: gsm_08_16.h:51
NS_CAUSE_EQUIP_FAIL
@ NS_CAUSE_EQUIP_FAIL
Definition: gsm_08_16.h:86
GPRS_NS2_DIALECT_STATIC_ALIVE
@ GPRS_NS2_DIALECT_STATIC_ALIVE
Definition: gprs_ns2.h:37
gprs_ns_ll_str
const char * gprs_ns_ll_str(const struct gprs_nsvc *nsvc)
Definition: gprs_ns.c:1548
gprs_ns_tx_reset_ack
static int gprs_ns_tx_reset_ack(struct gprs_nsvc *nsvc)
Definition: gprs_ns.c:837
BSSGP_IE_FLUSH_ACTION
@ BSSGP_IE_FLUSH_ACTION
Definition: gsm_08_18.h:130
BSSGP_CAUSE_TIME_CRIT_RELOC
@ BSSGP_CAUSE_TIME_CRIT_RELOC
Definition: gsm_08_18.h:313
gprs_ns_hdr::data
uint8_t data[0]
variable-length payload
Definition: gsm_08_16.h:19
gprs_ns_inst::remote_ip
uint32_t remote_ip
Definition: gprs_ns.h:97
BSSGP_CAUSE_PFC_CREATED
@ BSSGP_CAUSE_PFC_CREATED
Definition: gsm_08_18.h:294
ns2_msgb_alloc
struct msgb * ns2_msgb_alloc(void)
Allocate a message buffer for use with the NS2 stack.
Definition: gprs_ns2.c:670
TLV_TYPE_TvLV
TLV_TYPE_TvLV
gsm48_encode_ra
void gsm48_encode_ra(struct gsm48_ra_id *out, const struct gprs_ra_id *raid)
S_NS_RESET
@ S_NS_RESET
Definition: gprs_ns.h:233
DLBSSGP
#define DLBSSGP
log_set_context
int log_set_context(uint8_t ctx_nr, void *value)
tlv_definition
NS_TOUT_TNS_RESET_RETRIES
@ NS_TOUT_TNS_RESET_RETRIES
Definition: gprs_ns2_internal.h:58
gprs_ns_timer_cb
static void gprs_ns_timer_cb(void *data)
Definition: gprs_ns.c:770
BSSGP_IE_REDIRECT_ATTEMPT_FLAG
@ BSSGP_IE_REDIRECT_ATTEMPT_FLAG
Definition: gsm_08_18.h:235
BSSGP_CAUSE_PFC_QUEUE
@ BSSGP_CAUSE_PFC_QUEUE
Definition: gsm_08_18.h:293
BSSGP_CAUSE_SEM_INCORR_PDU
@ BSSGP_CAUSE_SEM_INCORR_PDU
Definition: gsm_08_18.h:280
osmo_sock_init_ofd
int osmo_sock_init_ofd(struct osmo_fd *ofd, int family, int type, int proto, const char *host, uint16_t port, unsigned int flags)
priv_bind::lmi_msg
struct msgb * lmi_msg
Definition: gprs_ns2_fr.c:109
gprs_ns2_nse::bss_sns_fi
struct osmo_fsm_inst * bss_sns_fi
Definition: gprs_ns2_internal.h:175
rate_ctr_group_upd_idx
static void rate_ctr_group_upd_idx(struct rate_ctr_group *grp, unsigned int idx)
gprs_nsvc_by_nsei
struct gprs_nsvc * gprs_nsvc_by_nsei(struct gprs_ns_inst *nsi, uint16_t nsei)
Lookup struct gprs_nsvc based on NSEI.
Definition: gprs_ns.c:254
msgb
msgb_push
static unsigned char * msgb_push(struct msgb *msgb, unsigned int len)
BSSGP_CAUSE_PFC_CREATE_FAIL
@ BSSGP_CAUSE_PFC_CREATE_FAIL
Definition: gsm_08_18.h:277
BSSGP_PDUT_CREATE_BSS_PFC_ACK
@ BSSGP_PDUT_CREATE_BSS_PFC_ACK
Definition: gsm_08_18.h:65
gprs_ns_rx_reset_ack
static int gprs_ns_rx_reset_ack(struct gprs_nsvc **nsvc, struct msgb *msg)
Definition: gprs_ns.c:1321
SAP_NS
SAP_NS
BSSGP_CAUSE_UNKNOWN_BVCI
@ BSSGP_CAUSE_UNKNOWN_BVCI
Definition: gsm_08_18.h:272
gprs_nsvc_reset
int gprs_nsvc_reset(struct gprs_nsvc *nsvc, uint8_t cause)
Initiate a RESET procedure.
Definition: gprs_ns.c:2110
LOGL_INFO
#define LOGL_INFO
bssgp_prim
bssgp_prim
Definition: gprs_bssgp.h:45
install_node
void install_node(struct cmd_node *node, int(*func)(struct vty *))
mode
uint8_t mode
NS2_CS_REJECTED
@ NS2_CS_REJECTED
Rejected and answered message.
Definition: gprs_ns2_internal.h:87
BSSGP_IE_MLAT_TA
@ BSSGP_IE_MLAT_TA
Definition: gsm_08_18.h:259
rate_ctr_inc
static void rate_ctr_inc(struct rate_ctr *ctr)
log_target
CONFIG_NODE
CONFIG_NODE
GPRS_NS2_VC_MODE_ALIVE
@ GPRS_NS2_VC_MODE_ALIVE
The VC will only use ALIVE/ACK (no RESET/BLOCK/UNBLOCK), which is for Gb-IP interface compliant to 3G...
Definition: gprs_ns2.h:32
GPRS_NS2_PRIM_UNIT_DATA
@ GPRS_NS2_PRIM_UNIT_DATA
Definition: gprs_ns2.h:53
BSSGP_CAUSE_OML_INTERV
@ BSSGP_CAUSE_OML_INTERV
Definition: gsm_08_18.h:275
BSSGP_IE_LSA_INFORMATION
@ BSSGP_IE_LSA_INFORMATION
Definition: gsm_08_18.h:157
bssgp_dec_ran_inf_ack_rim_cont
int bssgp_dec_ran_inf_ack_rim_cont(struct bssgp_ran_inf_ack_rim_cont *cont, const uint8_t *buf, size_t len)
Decode a RAN Information ACK RIM Container (3GPP TS 48.018, table 11.3.62a.3.b).
Definition: gprs_bssgp_rim.c:733
bssgp_bvc_ctx::state
uint32_t state
Definition: gprs_bssgp.h:118
REP_CELL_ID_LEN
#define REP_CELL_ID_LEN
Definition: gprs_bssgp_rim.c:43
enqueue_at_head
static void enqueue_at_head(struct gprs_ns2_vc_bind *bind, struct msgb *msg)
Definition: gprs_ns2_fr.c:346
GRE_PTYPE_FR
#define GRE_PTYPE_FR
Definition: gprs_ns2_frgre.c:50
gprs_ns_ie_ip4_elem
Section 10.3.2c List of IP4 Elements.
Definition: gsm_08_16.h:24
NS_PDUT_RESET
@ NS_PDUT_RESET
Definition: gsm_08_16.h:44
osmo_gprs_ns2_prim::bvci
uint16_t bvci
Definition: gprs_ns2.h:113
ns2_load_sharing_first
struct gprs_ns2_vc * ns2_load_sharing_first(struct gprs_ns2_nse *nse)
Definition: gprs_ns2.c:428
gprs_ns_tx_sns_config
int gprs_ns_tx_sns_config(struct gprs_nsvc *nsvc, bool end_flag, const struct gprs_ns_ie_ip4_elem *ip4_elems, unsigned int num_ip4_elems)
Encode + Transmit a SNS-CONFIG as per Section 9.3.4.
Definition: gprs_ns.c:920
bssgp_create_cell_id
int bssgp_create_cell_id(uint8_t *buf, const struct gprs_ra_id *raid, uint16_t cid)
Definition: gprs_bssgp.c:319
GPRS_NS2_AFF_CAUSE_MTU_CHANGE
@ GPRS_NS2_AFF_CAUSE_MTU_CHANGE
Definition: gprs_ns2.h:87
gprs_ra_id::mcc
uint16_t mcc
NS_CAUSE_OM_INTERVENTION
@ NS_CAUSE_OM_INTERVENTION
Definition: gsm_08_16.h:85
ns2_tlv_parse
static int ns2_tlv_parse(struct tlv_parsed *dec, const uint8_t *buf, int buf_len, uint8_t lv_tag, uint8_t lv_tag2)
Definition: gprs_ns2.c:855
gprs_ns_ll
gprs_ns_ll
Osmocom NS link layer types.
Definition: gprs_ns.h:53
ms_reg_enq_ies
static const uint8_t ms_reg_enq_ies[]
Definition: gprs_bssgp_util.c:200
GPRS_NS2_PRIM_CONGESTION
@ GPRS_NS2_PRIM_CONGESTION
Definition: gprs_ns2.h:54
gre_hdr
Definition: gprs_ns2_fr.c:86
BSSGP_PDUT_MBMS_START_RESP
@ BSSGP_PDUT_MBMS_START_RESP
Definition: gsm_08_18.h:95
gprs_ns_set_log_ss
void gprs_ns_set_log_ss(int ss)
Definition: gprs_ns.c:2208
bssgp_msgb_alloc
struct msgb * bssgp_msgb_alloc(void)
Definition: gprs_bssgp_util.c:494
d_pag_ps_ies
static const uint8_t d_pag_ps_ies[]
Definition: gprs_bssgp_util.c:197
DL
#define DL
Definition: gprs_bssgp_util.c:255
gprs_ns2_nsvc_by_nsvci
struct gprs_ns2_vc * gprs_ns2_nsvc_by_nsvci(struct gprs_ns2_inst *nsi, uint16_t nsvci)
Resolve a NS-VC Entity based on its NS-VCI.
Definition: gprs_ns2.c:761
BSSGP_NACC_CAUSE_RPRT_CELL_MISSMTCH
@ BSSGP_NACC_CAUSE_RPRT_CELL_MISSMTCH
Definition: gprs_bssgp_rim.h:103
BSSGP_PDUT_PERFORM_LOC_REQ
@ BSSGP_PDUT_PERFORM_LOC_REQ
Definition: gsm_08_18.h:82
bssgp_ran_information_pdu::ack_rim_cont
struct bssgp_ran_inf_ack_rim_cont ack_rim_cont
Definition: gprs_bssgp_rim.h:255
gprs_ns2_nse::persistent
bool persistent
true if this NSE was created by VTY or pcu socket)
Definition: gprs_ns2_internal.h:160
NS_CAUSE_TRANSIT_FAIL
@ NS_CAUSE_TRANSIT_FAIL
Definition: gsm_08_16.h:84
flush_ll_ies
static const uint8_t flush_ll_ies[]
Definition: gprs_bssgp_util.c:202
ns2_vc_alloc
struct gprs_ns2_vc * ns2_vc_alloc(struct gprs_ns2_vc_bind *bind, struct gprs_ns2_nse *nse, bool initiater, enum gprs_ns2_vc_mode vc_mode, const char *id)
Allocate a NS-VC within the given bind + NSE.
Definition: gprs_ns2.c:580
read_nsfrgre_msg
static struct msgb * read_nsfrgre_msg(struct osmo_fd *bfd, int *error, struct osmo_sockaddr *saddr, uint16_t *dlci, const struct gprs_ns2_vc_bind *bind)
Definition: gprs_ns2_frgre.c:276
BSSGP_PDUT_PS_HO_REQUIRED_ACK
@ BSSGP_PDUT_PS_HO_REQUIRED_ACK
Definition: gsm_08_18.h:73
gprs_ns2_vc::blist
struct llist_head blist
list of NS-VCs within bind, bind is the owner!
Definition: gprs_ns2_internal.h:193
GPRS_NS2_DIALECT_STATIC_RESETBLOCK
@ GPRS_NS2_DIALECT_STATIC_RESETBLOCK
Definition: gprs_ns2.h:38
BSSGP_PDUT_RA_CAPABILITY
@ BSSGP_PDUT_RA_CAPABILITY
Definition: gsm_08_18.h:21
BSSGP_IE_LCS_CAUSE
@ BSSGP_IE_LCS_CAUSE
Definition: gsm_08_18.h:174
mnl.h
BSSGP_PDUT_MBMS_UPDATE_REQ
@ BSSGP_PDUT_MBMS_UPDATE_REQ
Definition: gsm_08_18.h:98
gprs_ns.h
OSMO_STRLCPY_ARRAY
#define OSMO_STRLCPY_ARRAY(array, src)
ms_reg_enq_res_ies
static const uint8_t ms_reg_enq_res_ies[]
Definition: gprs_bssgp_util.c:201
gprs_ns_signal_ns_names
const struct value_string gprs_ns_signal_ns_names[]
Definition: gprs_ns.c:182
tlv.h
BSSGP_CAUSE_CS
@ BSSGP_CAUSE_CS
Definition: gsm_08_18.h:309
rate_ctr_group
CFG_LOG_NODE
CFG_LOG_NODE
gprs_ns2_vc_bind::sns_sig_weight
uint8_t sns_sig_weight
the IP-SNS signalling weight when doing dynamic configuration
Definition: gprs_ns2_internal.h:267
osmo_gprs_ns2_prim
Definition: gprs_ns2.h:109
BSSGP_PDUT_MODIFY_BSS_PFC_ACK
@ BSSGP_PDUT_MODIFY_BSS_PFC_ACK
Definition: gsm_08_18.h:68
BSSGP_IE_LCS_QOS
@ BSSGP_IE_LCS_QOS
Definition: gsm_08_18.h:166
nsei
uint16_t nsei
Identifiers of a BTS, equal to 'struct bssgp_bts_ctx'.
Definition: gprs_msgb.h:7
BSSGP_CAUSE_DIR_RETRY
@ BSSGP_CAUSE_DIR_RETRY
Definition: gsm_08_18.h:312
NS_CTR_BYTES_OUT_DROP
@ NS_CTR_BYTES_OUT_DROP
Definition: gprs_ns2_internal.h:98
BSSGP_IE_LCS_CLIENT_TYPE
@ BSSGP_IE_LCS_CLIENT_TYPE
Definition: gsm_08_18.h:167
BSSGP_PDUT_LLC_DISCARD
@ BSSGP_PDUT_LLC_DISCARD
Definition: gsm_08_18.h:56
osmo_gprs_ns2_prim::nsei
uint16_t nsei
Definition: gprs_ns2.h:112
gprs_nsvc_replace_if_found
static int gprs_nsvc_replace_if_found(uint16_t nsvci, struct gprs_nsvc **nsvc, struct gprs_nsvc **old_nsvc)
Definition: gprs_ns.c:1177
ns2_bind_alloc
int ns2_bind_alloc(struct gprs_ns2_inst *nsi, const char *name, struct gprs_ns2_vc_bind **result)
common allocation + low-level initialization of a bind.
Definition: gprs_ns2.c:1482
BSSGP_IE_FLOW_CTRL_GRANULARITY
@ BSSGP_IE_FLOW_CTRL_GRANULARITY
Definition: gsm_08_18.h:226
mod_bss_pfc_ack_ies
static const uint8_t mod_bss_pfc_ack_ies[]
Definition: gprs_bssgp_util.c:228
gprs_ns2_vc_driver::name
const char * name
Definition: gprs_ns2_internal.h:275
msgb_free
void msgb_free(struct msgb *m)
gprs_ns2_cause_strs
const struct value_string gprs_ns2_cause_strs[]
Definition: gprs_ns2.c:140
__attribute__
struct priv_bind __attribute__
msgb_nsei
#define msgb_nsei(__x)
Definition: gprs_msgb.h:23
BSSGP_PDUT_FLUSH_LL_ACK
@ BSSGP_PDUT_FLUSH_LL_ACK
Definition: gsm_08_18.h:55
BSSGP_RAN_INF_APP_ID_NACC
@ BSSGP_RAN_INF_APP_ID_NACC
Definition: gprs_bssgp_rim.h:129
nsbind_statg_desc
static const struct osmo_stat_item_group_desc nsbind_statg_desc
Definition: gprs_ns2.c:205
ns2_nse_update_mtu
void ns2_nse_update_mtu(struct gprs_ns2_nse *nse)
Definition: gprs_ns2.c:1409
bssgp_rim_pdu_ind
Definition: gsm_08_18.h:364
suspend_ies
static const uint8_t suspend_ies[]
Definition: gprs_bssgp_util.c:191
BSSGP_IE_PS_HO_COMMAND
@ BSSGP_IE_PS_HO_COMMAND
Definition: gsm_08_18.h:216
osmo_gprs_ns2_prim::unitdata
struct osmo_gprs_ns2_prim::@20::@21 unitdata
BSSGP_IE_SRC_TO_TGT_TR_CONT
@ BSSGP_IE_SRC_TO_TGT_TR_CONT
Definition: gsm_08_18.h:206
gprs_ns_rx_reset
static int gprs_ns_rx_reset(struct gprs_nsvc **nsvc, struct msgb *msg)
Definition: gprs_ns.c:1212
BSSGP_PDUT_RA_CAPA_UPDATE_ACK
@ BSSGP_PDUT_RA_CAPA_UPDATE_ACK
Definition: gsm_08_18.h:30
byteswap.h
gprs_bssgp_cause
gprs_bssgp_cause
Cause coding (Section 11.3.8 / Table 11.10)
Definition: gsm_08_18.h:266
gprs_nsvc::nsvci
uint16_t nsvci
end-to-end significance
Definition: gprs_ns.h:129
vty
gprs_ns2_fr_connect
struct gprs_ns2_vc * gprs_ns2_fr_connect(struct gprs_ns2_vc_bind *bind, struct gprs_ns2_nse *nse, uint16_t nsvci, uint16_t dlci)
Create, connect and activate a new FR-based NS-VC.
Definition: gprs_ns2_fr.c:963
BSSGP_IE_PDU_IN_ERROR
@ BSSGP_IE_PDU_IN_ERROR
Definition: gsm_08_18.h:139
bssgp_dec_ran_inf_rim_cont
int bssgp_dec_ran_inf_rim_cont(struct bssgp_ran_inf_rim_cont *cont, const uint8_t *buf, size_t len)
Decode a RAN Information RIM Container (3GPP TS 48.018, table 11.3.62a.2.b).
Definition: gprs_bssgp_rim.c:595
BSSGP_IE_DECIPHERING_KEYS
@ BSSGP_IE_DECIPHERING_KEYS
Definition: gsm_08_18.h:172
BSSGP_PDUT_FLOW_CONTROL_MS_ACK
@ BSSGP_PDUT_FLOW_CONTROL_MS_ACK
Definition: gsm_08_18.h:53
osmo_fd_close
void osmo_fd_close(struct osmo_fd *fd)
ps_ho_required_nack_ies
static const uint8_t ps_ho_required_nack_ies[]
Definition: gprs_bssgp_util.c:238
BSSGP_PDUT_BVC_UNBLOCK
@ BSSGP_PDUT_BVC_UNBLOCK
Definition: gsm_08_18.h:48
gprs_ns2_cause_str
static const char * gprs_ns2_cause_str(enum ns_cause val)
Obtain a human-readable string for NS primitives.
Definition: gprs_ns2.h:106
BSSGP_IE_VELOCITY_DATA
@ BSSGP_IE_VELOCITY_DATA
Definition: gsm_08_18.h:220
ns2_ip_get_bind_by_index
struct gprs_ns2_vc_bind * ns2_ip_get_bind_by_index(struct gprs_ns2_inst *nsi, struct osmo_sockaddr *remote, int index)
Definition: gprs_ns2_udp.c:555
block_ies
static const uint8_t block_ies[]
Definition: gprs_bssgp_util.c:212
NS_TOUT_TNS_BLOCK_RETRIES
@ NS_TOUT_TNS_BLOCK_RETRIES
Definition: gprs_ns.h:35
NS_TOUT_TNS_RESET
@ NS_TOUT_TNS_RESET
Definition: gprs_ns2_internal.h:57
vc_driver_frgre
struct gprs_ns2_vc_driver vc_driver_frgre
Definition: gprs_ns2_frgre.c:105
gprs_ns2_vc
Structure representing a single NS-VC.
Definition: gprs_ns2_internal.h:188
NS_TOUT_TNS_BLOCK
@ NS_TOUT_TNS_BLOCK
Definition: gprs_ns2_internal.h:55
BSSGP_IE_APP_ERROR_CONTAINER
@ BSSGP_IE_APP_ERROR_CONTAINER
Definition: gsm_08_18.h:186
BSSGP_NACC_CAUSE_SIPSI_LEN_ERR
@ BSSGP_NACC_CAUSE_SIPSI_LEN_ERR
Definition: gprs_bssgp_rim.h:105
BSSGP_IE_PRIO_CLASS_IND
@ BSSGP_IE_PRIO_CLASS_IND
Definition: gsm_08_18.h:243
dump_bvc
static void dump_bvc(struct vty *vty, struct bssgp_bvc_ctx *bvc, int stats)
Definition: gprs_bssgp_vty.c:80
gprs_ns2_free_binds
void gprs_ns2_free_binds(struct gprs_ns2_inst *nsi)
Definition: gprs_ns2.c:1352
BSSGP_IE_RI_APP_ERROR_RIM_CONT
@ BSSGP_IE_RI_APP_ERROR_RIM_CONT
Definition: gsm_08_18.h:189
bssgp_ran_inf_ack_rim_cont::son_trans_app_id
const uint8_t * son_trans_app_id
Definition: gprs_bssgp_rim.h:196
bssgp_ran_inf_ack_rim_cont
Definition: gprs_bssgp_rim.h:189
NS_CAUSE_BVCI_UNKNOWN
@ NS_CAUSE_BVCI_UNKNOWN
Definition: gsm_08_16.h:89
gprs_ns2_vc::nse
struct gprs_ns2_nse * nse
pointer to NS Instance
Definition: gprs_ns2_internal.h:196
bssgp_enc_ran_inf_req_rim_cont
int bssgp_enc_ran_inf_req_rim_cont(uint8_t *buf, size_t len, const struct bssgp_ran_inf_req_rim_cont *cont)
Encode a RAN Information Request RIM Container (3GPP TS 48.018, table 11.3.62a.1.b).
Definition: gprs_bssgp_rim.c:544
BSSGP_RAN_INF_APP_ID_UTRA_SI
@ BSSGP_RAN_INF_APP_ID_UTRA_SI
Definition: gprs_bssgp_rim.h:133
gprs_ns2.h
bssgp_ran_inf_req_rim_cont
Definition: gprs_bssgp_rim.h:143
osmo_fr_link_free
void osmo_fr_link_free(struct osmo_fr_link *link)
Definition: frame_relay.c:955
suspend_nack_ies
static const uint8_t suspend_nack_ies[]
Definition: gprs_bssgp_util.c:193
ns2_sns_update_weights
void ns2_sns_update_weights(struct gprs_ns2_vc_bind *bind)
Definition: gprs_ns2_sns.c:1933
bssgp_enc_app_err_cont_nacc
int bssgp_enc_app_err_cont_nacc(uint8_t *buf, size_t len, const struct bssgp_app_err_cont_nacc *cont)
Encode Application Error Container for NACC (3GPP TS 48.018, section 11.3.64.1).
Definition: gprs_bssgp_rim.c:382
ns_timeout
ns_timeout
Definition: gprs_ns.h:33
BSSGP_PDUT_DL_MMBS_UNITDATA
@ BSSGP_PDUT_DL_MMBS_UNITDATA
Definition: gsm_08_18.h:24
BSSGP_IE_IRAT_MEASUREMENT_CONF
@ BSSGP_IE_IRAT_MEASUREMENT_CONF
Definition: gsm_08_18.h:239
CMD_WARNING
#define CMD_WARNING
BSSGP_IE_PS_HO_INDICATIONS
@ BSSGP_IE_PS_HO_INDICATIONS
Definition: gsm_08_18.h:217
tlv_definition::def
struct tlv_def def[256]
BSSGP_IE_LSA_ID_LIST
@ BSSGP_IE_LSA_ID_LIST
Definition: gsm_08_18.h:156
dump_bssgp
static void dump_bssgp(struct vty *vty, int stats)
Definition: gprs_bssgp_vty.c:101
NSE_S_ALIVE
#define NSE_S_ALIVE
Definition: gprs_ns.h:45
ns_signal_data::pdu_type
uint8_t pdu_type
Definition: gprs_ns.h:249
BSSGP_IE_RIM_PDU_INDICATIONS
@ BSSGP_IE_RIM_PDU_INDICATIONS
Definition: gsm_08_18.h:181
NS_ALLOC_SIZE
#define NS_ALLOC_SIZE
Definition: gprs_ns.h:30
fr_netif_write_one
static int fr_netif_write_one(struct gprs_ns2_vc_bind *bind, struct msgb *msg)
Definition: gprs_ns2_fr.c:296
bssgp_prim_cb
int bssgp_prim_cb(struct osmo_prim_hdr *oph, void *ctx)
BSSGP_CAUSE_DL_QUALITY
@ BSSGP_CAUSE_DL_QUALITY
Definition: gsm_08_18.h:299
ns_osmo_signal_dispatch_replaced
static void ns_osmo_signal_dispatch_replaced(struct gprs_nsvc *nsvc, struct gprs_nsvc *old_nsvc)
Definition: gprs_ns.c:388
BSSGP_RAN_INF_APP_ID_SI3
@ BSSGP_RAN_INF_APP_ID_SI3
Definition: gprs_bssgp_rim.h:130
NS_CAUSE_UNKN_IP_ADDR
@ NS_CAUSE_UNKN_IP_ADDR
Definition: gsm_08_16.h:101
BSSGP_CAUSE_DTM_HO_MSC_ERR
@ BSSGP_CAUSE_DTM_HO_MSC_ERR
Definition: gsm_08_18.h:322
gprs_ns_tx_sns_size
int gprs_ns_tx_sns_size(struct gprs_nsvc *nsvc, bool reset_flag, uint16_t max_nr_nsvc, uint16_t *ip4_ep_nr, uint16_t *ip6_ep_nr)
Encode + transmit a SNS-SIZE as per Section 9.3.7.
Definition: gprs_ns.c:1000
iei
uint8_t iei
BSSGP_IE_SUSPEND_REF_NR
@ BSSGP_IE_SUSPEND_REF_NR
Definition: gsm_08_18.h:147
bssgp_ran_information_pdu::decoded_present
bool decoded_present
Definition: gprs_bssgp_rim.h:251
LMI_Q933A_DLCI
#define LMI_Q933A_DLCI
Definition: gprs_ns2_fr.c:362
TVLV_MAX_ONEBYTE
#define TVLV_MAX_ONEBYTE
osmo_timer_schedule
void osmo_timer_schedule(struct osmo_timer_list *timer, int seconds, int microseconds)
bssgp_ran_inf_err_rim_cont::son_trans_app_id
const uint8_t * son_trans_app_id
Definition: gprs_bssgp_rim.h:216
NS_CTR_PKTS_OUT_DROP
@ NS_CTR_PKTS_OUT_DROP
Definition: gprs_ns2_internal.h:95
fc_pfc_ack_ies
static const uint8_t fc_pfc_ack_ies[]
Definition: gprs_bssgp_util.c:233
bssgp_bvc_ctx::ctrg
struct rate_ctr_group * ctrg
Definition: gprs_bssgp.h:120
bssgp_ran_information_pdu::app_err_rim_cont
struct bssgp_ran_inf_app_err_rim_cont app_err_rim_cont
Definition: gprs_bssgp_rim.h:257
osmo_fsm_inst_state_name
static const char * osmo_fsm_inst_state_name(struct osmo_fsm_inst *fi)
BSSGP_CAUSE_DTM_HO_T23_EXPIRY
@ BSSGP_CAUSE_DTM_HO_T23_EXPIRY
Definition: gsm_08_18.h:321
bssgp_bvc_ctx
Definition: gprs_bssgp.h:107
osmo_htonl
#define osmo_htonl(x)
gprs_nsvc::data_weight
uint8_t data_weight
signaling weight.
Definition: gprs_ns.h:162
BSSGP_CAUSE_TRAFFIC
@ BSSGP_CAUSE_TRAFFIC
Definition: gsm_08_18.h:303
osmo_signal_dispatch
void osmo_signal_dispatch(unsigned int subsys, unsigned int signal, void *signal_data)
bssgp_parse_rim_ri
int bssgp_parse_rim_ri(struct bssgp_rim_routing_info *ri, const uint8_t *buf, unsigned int len)
Parse a RIM Routing information IE (3GPP TS 48.018, chapter 11.3.70).
Definition: gprs_bssgp_rim.c:56
BSSGP_PDUT_RAN_INFO
@ BSSGP_PDUT_RAN_INFO
Definition: gsm_08_18.h:88
osmo_stat_item_group_udp_idx
static void osmo_stat_item_group_udp_idx(struct osmo_stat_item_group *grp, unsigned int idx)
vty::node
int node
NS2_LL_MAX_STR
#define NS2_LL_MAX_STR
Definition: gprs_ns2.c:296
S_NS_ALIVE_EXP
@ S_NS_ALIVE_EXP
Definition: gprs_ns.h:236
osmo_routing_area_id::lac
struct osmo_location_area_id lac
enqueue_at_tail
static void enqueue_at_tail(struct gprs_ns2_vc_bind *bind, struct msgb *msg)
Definition: gprs_ns2_fr.c:354
gprs_nsvc_state_append
char * gprs_nsvc_state_append(char *s, struct gprs_nsvc *nsvc)
Append the nsvc state to a talloc string.
Definition: gprs_ns.c:2221
NS2_CS_FOUND
@ NS2_CS_FOUND
A NSVC object has been found.
Definition: gprs_ns2_internal.h:86
BSSGP_PDUT_DUMMY_PAGING_PS_RESP
@ BSSGP_PDUT_DUMMY_PAGING_PS_RESP
Definition: gsm_08_18.h:40
gprs_ns_inst::dscp
int dscp
Definition: gprs_ns.h:99
gprs_ns2_is_fr_bind
int gprs_ns2_is_fr_bind(struct gprs_ns2_vc_bind *bind)
determine if given bind is for FR-GRE encapsulation.
Definition: gprs_ns2_fr.c:332
BSSGP_PDUT_RAN_INFO_ACK
@ BSSGP_PDUT_RAN_INFO_ACK
Definition: gsm_08_18.h:90
BSSGP_IE_RIM_ROUTING_INFO
@ BSSGP_IE_RIM_ROUTING_INFO
Definition: gsm_08_18.h:184
S_NS_BLOCK
@ S_NS_BLOCK
Definition: gprs_ns.h:234
BSSGP_PDUT_DOWNLOAD_BSS_PFC
@ BSSGP_PDUT_DOWNLOAD_BSS_PFC
Definition: gsm_08_18.h:63
gprs_ns_nsip_connect
struct gprs_nsvc * gprs_ns_nsip_connect(struct gprs_ns_inst *nsi, struct sockaddr_in *dest, uint16_t nsei, uint16_t nsvci)
Establish a NS connection (from the BSS) to the SGSN.
Definition: gprs_ns.c:2144
BVCI_SIGNALLING
#define BVCI_SIGNALLING
Fixed BVCI definitions (Section 5.4.1)
Definition: gsm_08_18.h:10
vty
vty
set_ifupdown
static int set_ifupdown(const char *netif, bool up)
Definition: gprs_ns2_fr.c:680
bssgp_ran_inf_err_rim_cont::err_pdu
const uint8_t * err_pdu
Definition: gprs_bssgp_rim.h:211
NS_DESC_R
#define NS_DESC_R(st)
Definition: gprs_ns.h:50
gprs_ns2_vc::fi
struct osmo_fsm_inst * fi
Definition: gprs_ns2_internal.h:227
osmo_stat_item_dec
void osmo_stat_item_dec(struct osmo_stat_item *item, int32_t value)
NS_TOUT_TSNS_PROV
@ NS_TOUT_TSNS_PROV
Definition: gprs_ns.h:41
status_ies
static const uint8_t status_ies[]
Definition: gprs_bssgp_util.c:218
osmo_location_area_id::lac
uint16_t lac
gprs_nsvc
Structure representing a single NS-VC.
Definition: gprs_ns.h:122
handle_rx_gre_ipv6
static int handle_rx_gre_ipv6(struct osmo_fd *bfd, struct msgb *msg, struct ip6_hdr *ip6hdr, struct gre_hdr *greh)
Definition: gprs_ns2_frgre.c:166
gprs_ns_hdr
Common header of GPRS NS.
Definition: gsm_08_16.h:17
BSSGP_PDUT_FLOW_CONTROL_BVC_ACK
@ BSSGP_PDUT_FLOW_CONTROL_BVC_ACK
Definition: gsm_08_18.h:51
bssgp_ran_information_pdu::err_rim_cont
struct bssgp_ran_inf_err_rim_cont err_rim_cont
Definition: gprs_bssgp_rim.h:256
rate_ctr_group::ctr
struct rate_ctr ctr[0]
BSSGP_PDUT_DELETE_BSS_PFC
@ BSSGP_PDUT_DELETE_BSS_PFC
Definition: gsm_08_18.h:69
rate_ctr_group_alloc
struct rate_ctr_group * rate_ctr_group_alloc(void *ctx, const struct rate_ctr_group_desc *desc, unsigned int idx)
LOGNSE
#define LOGNSE(nse, lvl, fmt, args ...)
Definition: gprs_ns2_internal.h:11
bssgp_tx_status
int bssgp_tx_status(uint8_t cause, uint16_t *bvci, struct msgb *orig_msg)
Definition: gprs_bssgp_util.c:555
GPRS_NS2_ENDPOINT_CONFIRM_CHANGE
@ GPRS_NS2_ENDPOINT_CONFIRM_CHANGE
Definition: gprs_ns2.h:100
BSSGP_IE_TLLI
@ BSSGP_IE_TLLI
Definition: gsm_08_18.h:149
BSSGP_PDUT_RAN_INFO_APP_ERROR
@ BSSGP_PDUT_RAN_INFO_APP_ERROR
Definition: gsm_08_18.h:92
gprs_nsvc::alive_retries
int alive_retries
Definition: gprs_ns.h:137
BSSGP_IE_GGSN_PGW_LOCATION
@ BSSGP_IE_GGSN_PGW_LOCATION
Definition: gsm_08_18.h:241
osmo_pdef_bssgp
const struct osmo_tlv_prot_def osmo_pdef_bssgp
Definition: gprs_bssgp_util.c:261
gprs_ns2_vc_bind
Structure repesenting a bind instance.
Definition: gprs_ns2_internal.h:231
config_write_bssgp
static int config_write_bssgp(struct vty *vty)
Definition: gprs_bssgp_vty.c:65
osmo_bssgp_prim::rim_pdu
struct bssgp_ran_information_pdu rim_pdu
Definition: gprs_bssgp.h:79
BSSGP_PDUT_RESUME_ACK
@ BSSGP_PDUT_RESUME_ACK
Definition: gsm_08_18.h:36
bssgp_parse_rim_pdu
int bssgp_parse_rim_pdu(struct bssgp_ran_information_pdu *pdu, const struct msgb *msg)
Parse a given message buffer into a rim-pdu struct.
Definition: gprs_bssgp_rim.c:958
buffer
gprs_ns2_foreach_nsvc_cb
int(* gprs_ns2_foreach_nsvc_cb)(struct gprs_ns2_vc *nsvc, void *ctx)
a callback to iterate over all NSVC
Definition: gprs_ns2.h:153
bssgp_vty_init
int bssgp_vty_init(void)
Definition: gprs_bssgp_vty.c:206
nsvc_stat_description
static const struct osmo_stat_item_desc nsvc_stat_description[]
Definition: gprs_ns.c:170
BSSGP_IE_ADDITIONAL_PTMSI
@ BSSGP_IE_ADDITIONAL_PTMSI
Definition: gsm_08_18.h:256
ns2_vc_force_unconfigured
int ns2_vc_force_unconfigured(struct gprs_ns2_vc *nsvc)
Reset a NS-VC FSM.
Definition: gprs_ns2_vc_fsm.c:738
BSSGP_PDUT_PAGING_PS
@ BSSGP_PDUT_PAGING_PS
Definition: gsm_08_18.h:27
GPRS_NS_CS_FOUND
@ GPRS_NS_CS_FOUND
A NSVC object has been found.
Definition: gprs_ns.h:67
NS_CTR_UNBLOCKED
@ NS_CTR_UNBLOCKED
Definition: gprs_ns2_internal.h:100
NS_IE_BVCI
@ NS_IE_BVCI
Definition: gsm_08_16.h:69
talloc.h
ns_signal_data::old_nsvc
struct gprs_nsvc * old_nsvc
Definition: gprs_ns.h:247
ns_signal_data::msg
struct msgb * msg
Definition: gprs_ns.h:251
bssgp_flow_control::bucket_counter
uint32_t bucket_counter
number of tokens in the bucket
Definition: gprs_bssgp.h:90
osmo_prim_hdr::msg
struct msgb * msg
gprs_ns2_vc_bind::transfer_capability
int transfer_capability
transfer capability in mbit
Definition: gprs_ns2_internal.h:248
BSSGP_PDUT_RESUME
@ BSSGP_PDUT_RESUME
Definition: gsm_08_18.h:35
osmo_hexdump_buf
const char * osmo_hexdump_buf(char *out_buf, size_t out_buf_size, const unsigned char *buf, int len, const char *delim, bool delim_after_last)
osmo_fr_dlc_alloc
struct osmo_fr_dlc * osmo_fr_dlc_alloc(struct osmo_fr_link *link, uint16_t dlci)
Definition: frame_relay.c:974
fr_vc_sendmsg
static int fr_vc_sendmsg(struct gprs_ns2_vc *nsvc, struct msgb *msg)
Definition: gprs_ns2_fr.c:338
BSSGP_IE_BTS_RX_ACCURACY_LVL
@ BSSGP_IE_BTS_RX_ACCURACY_LVL
Definition: gsm_08_18.h:261
free_bind
static void free_bind(struct gprs_ns2_vc_bind *bind)
clean up all private driver state.
Definition: gprs_ns2_fr.c:161
BSSGP_IE_MS_SYNC_ACCURACY
@ BSSGP_IE_MS_SYNC_ACCURACY
Definition: gsm_08_18.h:260
NS_IE_CAUSE
@ NS_IE_CAUSE
Definition: gsm_08_16.h:66
BSSGP_PDUT_PS_HO_CANCEL
@ BSSGP_PDUT_PS_HO_CANCEL
Definition: gsm_08_18.h:79
priv_vc::remote
struct osmo_sockaddr remote
Definition: gprs_ns2_fr.c:120
libgb_msgb_cb::bssgp_cell_id
unsigned char * bssgp_cell_id
Cell Identifier.
Definition: gprs_msgb.h:12
gprs_sns_fsm_registered
static bool gprs_sns_fsm_registered
Definition: gprs_ns.c:1878
GPRS_NS2_ENDPOINT_REQUEST_CHANGE
@ GPRS_NS2_ENDPOINT_REQUEST_CHANGE
Definition: gprs_ns2.h:99
SNS_PDUT_ADD
@ SNS_PDUT_ADD
Definition: gsm_08_16.h:55
TLVP_PRESENT
#define TLVP_PRESENT(x, y)
gprs_ns_nsip_listen
int gprs_ns_nsip_listen(struct gprs_ns_inst *nsi)
Create a listening socket for GPRS NS/UDP/IP.
Definition: gprs_ns.c:2050
gprs_ns2_vc_driver::free_bind
void(* free_bind)(struct gprs_ns2_vc_bind *driver)
Definition: gprs_ns2_internal.h:277
BSSGP_PDUT_RAN_INFO_REQ
@ BSSGP_PDUT_RAN_INFO_REQ
Definition: gsm_08_18.h:89
NS_PDUT_RESET_ACK
@ NS_PDUT_RESET_ACK
Definition: gsm_08_16.h:45
BSSGP_IE_TRIGGER_ID
@ BSSGP_IE_TRIGGER_ID
Definition: gsm_08_18.h:154
msgb_bssgp_len
#define msgb_bssgp_len(__x)
Definition: gprs_msgb.h:27
bssgp_ran_information_pdu
Definition: gprs_bssgp_rim.h:241
gprs_ns_ll_copy
void gprs_ns_ll_copy(struct gprs_nsvc *nsvc, struct gprs_nsvc *other)
Definition: gprs_ns.c:1562
ps_ho_request_ies
static const uint8_t ps_ho_request_ies[]
Definition: gprs_bssgp_util.c:239
llist_head
BSSGP_IE_RRLP_FLAGS
@ BSSGP_IE_RRLP_FLAGS
Definition: gsm_08_18.h:176
NS_IE_IP_ADDR
@ NS_IE_IP_ADDR
Definition: gsm_08_16.h:78
ns2_timeout
ns2_timeout
Definition: gprs_ns2_internal.h:54
BSSGP_CAUSE_UL_QUALITY
@ BSSGP_CAUSE_UL_QUALITY
Definition: gsm_08_18.h:297
if
if(vty->type==VTY_SHELL_SERV)
bssgp_app_err_cont_nacc::nacc_cause
enum bssgp_nacc_cause nacc_cause
Definition: gprs_bssgp_rim.h:117
gprs_nsvc_by_rem_addr
struct gprs_nsvc * gprs_nsvc_by_rem_addr(struct gprs_ns_inst *nsi, const struct sockaddr_in *sin)
Lookup NS-VC based on specified remote peer socket addr.
Definition: gprs_ns.c:291
gre_hdr::flags
uint16_t flags
Definition: gprs_ns2_fr.c:87
handle_nsip_write
static int handle_nsip_write(struct osmo_fd *bfd)
Definition: gprs_ns.c:2009
gprs_ns2_fr_bind_role
enum osmo_fr_role gprs_ns2_fr_bind_role(struct gprs_ns2_vc_bind *bind)
Return the frame relay role of a bind.
Definition: gprs_ns2_fr.c:905
gprs_ns2_nse::sum_data_weight
uint32_t sum_data_weight
sum of all the data weight of alive NS-VCs
Definition: gprs_ns2_internal.h:178
BSSGP_PDUT_SUSPEND_ACK
@ BSSGP_PDUT_SUSPEND_ACK
Definition: gsm_08_18.h:33
osmo_stat_item_group_alloc
struct osmo_stat_item_group * osmo_stat_item_group_alloc(void *ctx, const struct osmo_stat_item_group_desc *desc, unsigned int idx)
bssgp_ran_inf_x_cont::app_id
enum bssgp_ran_inf_app_id app_id
Definition: gprs_bssgp_rim.c:405
log_tgt_mutex_lock
#define log_tgt_mutex_lock()
osmo_fr_network
Definition: frame_relay.h:53
gprs_ns_inst::cb
gprs_ns_cb_t * cb
callback to the user for incoming UNIT DATA IND
Definition: gprs_ns.h:81
BSSGP_IE_PRIORITY
@ BSSGP_IE_PRIORITY
Definition: gsm_08_18.h:141
NS_TOUT_TNS_TEST
@ NS_TOUT_TNS_TEST
Definition: gprs_ns.h:38
gprs_ns2_vc_bind::nsi
struct gprs_ns2_inst * nsi
a pointer back to the nsi
Definition: gprs_ns2_internal.h:241
osmo_plmn_id::mnc
uint16_t mnc
BSSGP_PDUT_FLOW_CONTROL_PFC
@ BSSGP_PDUT_FLOW_CONTROL_PFC
Definition: gsm_08_18.h:57
bssgp_enc_ran_inf_app_cont_nacc
int bssgp_enc_ran_inf_app_cont_nacc(uint8_t *buf, size_t len, const struct bssgp_ran_inf_app_cont_nacc *cont)
Encode a RAN Information Application Container (3GPP TS 48.018, section 11.3.63.2....
Definition: gprs_bssgp_rim.c:305
gprs_ns_tx_sns_ack
int gprs_ns_tx_sns_ack(struct gprs_nsvc *nsvc, uint8_t trans_id, uint8_t *cause, const struct gprs_ns_ie_ip4_elem *ip4_elems, unsigned int num_ip4_elems)
Encode + Transmit a SNS-ACK as per Section 9.3.1.
Definition: gprs_ns.c:875
BSSGP_IE_MBMS_RESPONSE
@ BSSGP_IE_MBMS_RESPONSE
Definition: gsm_08_18.h:196
BSSGP_IE_GLOBAL_CN_ID
@ BSSGP_IE_GLOBAL_CN_ID
Definition: gsm_08_18.h:183
S_NS_MISMATCH
@ S_NS_MISMATCH
Definition: gprs_ns.h:238
osmo_timer_pending
int osmo_timer_pending(struct osmo_timer_list *timer)
libgb_msgb_cb
the data structure stored in msgb->cb for libgb apps
Definition: gprs_msgb.h:7
resume_ack_ies
static const uint8_t resume_ack_ies[]
Definition: gprs_bssgp_util.c:195
osmo_sockaddr::u
union osmo_sockaddr::@22 u
gprs_ns_tx_alive
int gprs_ns_tx_alive(struct gprs_nsvc *nsvc)
Transmit a NS-ALIVE on a given NS-VC.
Definition: gprs_ns.c:708
rinfo_ies
static const uint8_t rinfo_ies[]
Definition: gprs_bssgp_util.c:249
NSVC_TIMER_TNS_TEST
@ NSVC_TIMER_TNS_TEST
Definition: gprs_ns.h:115
gprs_ns_inst::gprs_nsvcs
struct llist_head gprs_nsvcs
linked lists of all NSVC in this instance
Definition: gprs_ns.h:84
priv_bind::list
struct llist_head list
Definition: gprs_ns2_fr.c:111
gb_internal.h
gprs_ns_pdu_strings
const struct value_string gprs_ns_pdu_strings[]
Definition: gprs_ns.c:398
NS_PDUT_BLOCK_ACK
@ NS_PDUT_BLOCK_ACK
Definition: gsm_08_16.h:47
bssgp_flow_control::bucket_size_max
uint32_t bucket_size_max
maximum size of the bucket (octets)
Definition: gprs_bssgp.h:87
NS_TOUT_TNS_ALIVE_RETRIES
@ NS_TOUT_TNS_ALIVE_RETRIES
Definition: gprs_ns2_internal.h:61
msgb_l2len
static unsigned int msgb_l2len(const struct msgb *msgb)
bssgp_ran_information_pdu::rim_cont_len
unsigned int rim_cont_len
Definition: gprs_bssgp_rim.h:248
timer_mode_strs
static const struct value_string timer_mode_strs[]
Definition: gprs_ns.c:736
ns2_vc_rx
int ns2_vc_rx(struct gprs_ns2_vc *nsvc, struct msgb *msg, struct tlv_parsed *tp)
entry point for messages from the driver/VL
Definition: gprs_ns2_vc_fsm.c:764
BSSGP_IE_TMSI
@ BSSGP_IE_TMSI
Definition: gsm_08_18.h:150
BSSGP_IE_TBSS_TO_SBSS_TR_CONT
@ BSSGP_IE_TBSS_TO_SBSS_TR_CONT
Definition: gsm_08_18.h:201
BSSGP_PDUT_PS_HO_REQUEST
@ BSSGP_PDUT_PS_HO_REQUEST
Definition: gsm_08_18.h:75
osmo_timer_setup
void osmo_timer_setup(struct osmo_timer_list *timer, void(*cb)(void *data), void *data)
gprs_ns2_vc_bind::priv
void * priv
driver private structure
Definition: gprs_ns2_internal.h:239
BSSGP_PDUT_MBMS_STOP_RESP
@ BSSGP_PDUT_MBMS_STOP_RESP
Definition: gsm_08_18.h:97
BSSGP_CAUSE_PDU_INCOMP_FEAT
@ BSSGP_CAUSE_PDU_INCOMP_FEAT
Definition: gsm_08_18.h:288
BSSGP_IE_GANSS_POSITIONING_DATA
@ BSSGP_IE_GANSS_POSITIONING_DATA
Definition: gsm_08_18.h:225
OSMO_FSM_TERM_REQUEST
OSMO_FSM_TERM_REQUEST
ns2_dialect_to_vc_mode
enum gprs_ns2_vc_mode ns2_dialect_to_vc_mode(enum gprs_ns2_dialect dialect)
Definition: gprs_ns2.c:1378
osmo_plmn_id::mcc
uint16_t mcc
S_NS_UNBLOCK
@ S_NS_UNBLOCK
Definition: gprs_ns.h:235
gprs_ns_frgre.h
bssgp_rim_routing_info_discr_strs
const struct value_string bssgp_rim_routing_info_discr_strs[]
Definition: gprs_bssgp_rim.c:45
grps_ns_frgre_sendmsg
int grps_ns_frgre_sendmsg(struct gprs_nsvc *nsvc, struct msgb *msg)
fr_tx_cb
int fr_tx_cb(void *data, struct msgb *msg)
Definition: gprs_ns2_fr.c:452
GPRS_NS2_DIALECT_IPACCESS
@ GPRS_NS2_DIALECT_IPACCESS
Definition: gprs_ns2.h:39
ns2_ip_count_bind
int ns2_ip_count_bind(struct gprs_ns2_inst *nsi, struct osmo_sockaddr *remote)
Count UDP binds compatible with remote.
Definition: gprs_ns2_udp.c:533
GPRS_NS2_DIALECT_SNS
@ GPRS_NS2_DIALECT_SNS
Definition: gprs_ns2.h:40
libgb_msgb_cb::bssgph
unsigned char * bssgph
Definition: gprs_msgb.h:8
BSSGP_IE_LOCATION_TYPE
@ BSSGP_IE_LOCATION_TYPE
Definition: gsm_08_18.h:169
bssgp_enc_ran_inf_req_app_cont_nacc
int bssgp_enc_ran_inf_req_app_cont_nacc(uint8_t *buf, size_t len, const struct bssgp_ran_inf_req_app_cont_nacc *cont)
Encode a RAN Information Request Application Container for NACC (3GPP TS 48.018, section 11....
Definition: gprs_bssgp_rim.c:235
timer.h
BSSGP_CAUSE_PROC_OVERLOAD
@ BSSGP_CAUSE_PROC_OVERLOAD
Definition: gsm_08_18.h:267
NS2_BIND_STAT_BACKLOG_LEN
@ NS2_BIND_STAT_BACKLOG_LEN
Definition: gprs_ns2_internal.h:80
gprs_ns2_ll_str_c
char * gprs_ns2_ll_str_c(const void *ctx, struct gprs_ns2_vc *nsvc)
string-format a given NS-VC to a dynamically allocated string.
Definition: gprs_ns2.c:311
BSSGP_PDUT_MBMS_UPDATE_RESP
@ BSSGP_PDUT_MBMS_UPDATE_RESP
Definition: gsm_08_18.h:99
GPRS_NS2_AFF_CAUSE_VC_RECOVERY
@ GPRS_NS2_AFF_CAUSE_VC_RECOVERY
Definition: gprs_ns2.h:80
gsm_08_16.h
bssgp_normal_hdr::data
uint8_t data[0]
optional/conditional IEs as TLVs
Definition: gsm_08_18.h:113
gprs_ns_ll_clear
void gprs_ns_ll_clear(struct gprs_nsvc *nsvc)
Definition: gprs_ns.c:1578
GPRS_NS_CS_REJECTED
@ GPRS_NS_CS_REJECTED
Rejected and answered message.
Definition: gprs_ns.h:68
gprs_nsvc_create2
struct gprs_nsvc * gprs_nsvc_create2(struct gprs_ns_inst *nsi, uint16_t nsvci, uint8_t sig_weight, uint8_t data_weight)
Create a new NS-VC (Virtual Circuit) within given instance.
Definition: gprs_ns.c:311
BSSGP_IE_RQD_GANNS_AST_DATA
@ BSSGP_IE_RQD_GANNS_AST_DATA
Definition: gsm_08_18.h:223
osmo_mnl
gprs_ns2_start_alive_all_nsvcs
void gprs_ns2_start_alive_all_nsvcs(struct gprs_ns2_nse *nse)
Start the NS-ALIVE FSM in all NS-VCs of given NSE.
Definition: gprs_ns2.c:1311
GPRS_NS2_AFF_CAUSE_SNS_NO_ENDPOINTS
@ GPRS_NS2_AFF_CAUSE_SNS_NO_ENDPOINTS
Definition: gprs_ns2.h:86
gprs_ns2_vc_bind::driver
struct gprs_ns2_vc_driver * driver
Definition: gprs_ns2_internal.h:242
nsvc_statg_desc
static const struct osmo_stat_item_group_desc nsvc_statg_desc
Definition: gprs_ns.c:174
bssgp_ran_inf_rim_cont
Definition: gprs_bssgp_rim.h:165
bssgp_ran_inf_app_cont_nacc::reprt_cell
struct osmo_cell_global_id_ps reprt_cell
Definition: gprs_bssgp_rim.h:88
bssgp_msgb_copy
struct msgb * bssgp_msgb_copy(const struct msgb *msg, const char *name)
Definition: gprs_bssgp_util.c:505
crt_bss_pfc_ies
static const uint8_t crt_bss_pfc_ies[]
Definition: gprs_bssgp_util.c:221
handle_nsip_read
static int handle_nsip_read(struct osmo_fd *bfd)
Definition: gprs_ns.c:1992
BSSGP_IE_TRANSACTION_ID
@ BSSGP_IE_TRANSACTION_ID
Definition: gsm_08_18.h:153
NS_PDUT_UNITDATA
@ NS_PDUT_UNITDATA
Definition: gsm_08_16.h:43
setup_device
static int setup_device(const char *netif, const struct gprs_ns2_vc_bind *bind)
Definition: gprs_ns2_fr.c:711
ns_cause_str
static const struct value_string ns_cause_str[]
Definition: gprs_ns.c:423
nsip_sendmsg
static int nsip_sendmsg(struct gprs_nsvc *nsvc, struct msgb *msg)
Definition: gprs_ns.c:2015
osmo_fr_role
osmo_fr_role
Definition: frame_relay.h:37
SIG
#define SIG
Definition: gprs_bssgp_util.c:257
bssgp_bvc_ctx::ra_id
struct gprs_ra_id ra_id
parsed RA ID of the remote BTS
Definition: gprs_bssgp.h:110
NS_TOUT_TSNS_SIZE_RETRIES
@ NS_TOUT_TSNS_SIZE_RETRIES
Definition: gprs_ns2_internal.h:63
gprs_ns2_free_nses
void gprs_ns2_free_nses(struct gprs_ns2_inst *nsi)
Definition: gprs_ns2.c:846
NS_IE_RESET_FLAG
@ NS_IE_RESET_FLAG
Definition: gsm_08_16.h:77
bssgp_flow_control
BSSGP flow control (SGSN side) According to Section 8.2.
Definition: gprs_bssgp.h:86
BSSGP_IE_BMAX_DEFAULT_MS
@ BSSGP_IE_BMAX_DEFAULT_MS
Definition: gsm_08_18.h:119
BSSGP_IE_LOCATION_ESTIMATE
@ BSSGP_IE_LOCATION_ESTIMATE
Definition: gsm_08_18.h:170
priv_bind::ifindex
int ifindex
Definition: gprs_ns2_fr.c:102
rate_ctr_group_desc::group_name_prefix
const char * group_name_prefix
gprs_ns2_vc_bind::ll
enum gprs_ns2_ll ll
which link-layer are we based on?
Definition: gprs_ns2_internal.h:254
gprs_ns2_fr_bind_by_netif
struct gprs_ns2_vc_bind * gprs_ns2_fr_bind_by_netif(struct gprs_ns2_inst *nsi, const char *netif)
Find NS bind for a given network interface.
Definition: gprs_ns2_fr.c:936
BSSGP_IE_EMLPP_PRIO
@ BSSGP_IE_EMLPP_PRIO
Definition: gsm_08_18.h:129
llist_for_each_entry
#define llist_for_each_entry(pos, head, member)
BSSGP_PDUT_MBMS_START_REQ
@ BSSGP_PDUT_MBMS_START_REQ
Definition: gsm_08_18.h:94
bssgp_create_rim_ri
int bssgp_create_rim_ri(uint8_t *buf, const struct bssgp_rim_routing_info *ri)
Encode a RIM Routing information IE (3GPP TS 48.018, chapter 11.3.70).
Definition: gprs_bssgp_rim.c:103
BSSGP_NACC_CAUSE_SYNTAX_ERR
@ BSSGP_NACC_CAUSE_SYNTAX_ERR
Definition: gprs_bssgp_rim.h:102
ra_cap_upd_ies
static const uint8_t ra_cap_upd_ies[]
Definition: gprs_bssgp_util.c:188
_NSVC_TIMER_NR
@ _NSVC_TIMER_NR
Definition: gprs_ns.h:118
del_bss_pfc_ies
static const uint8_t del_bss_pfc_ies[]
Definition: gprs_bssgp_util.c:230
osmo_sock_init2_ofd
int osmo_sock_init2_ofd(struct osmo_fd *ofd, int family, int type, int proto, const char *local_host, uint16_t local_port, const char *remote_host, uint16_t remote_port, unsigned int flags)
BSSGP_IE_MS_RADIO_ACCESS_CAP
@ BSSGP_IE_MS_RADIO_ACCESS_CAP
Definition: gsm_08_18.h:137
gprs_ns2_free_nsvc
void gprs_ns2_free_nsvc(struct gprs_ns2_vc *nsvc)
Destroy/release given NS-VC.
Definition: gprs_ns2.c:627
BSSGP_IE_IMEI
@ BSSGP_IE_IMEI
Definition: gsm_08_18.h:212
bvci
uint16_t bvci
Definition: gprs_msgb.h:8
BSSGP_IE_PAGING_ATTEMPT_INFO
@ BSSGP_IE_PAGING_ATTEMPT_INFO
Definition: gsm_08_18.h:249
NS_CTR_REPLACED
@ NS_CTR_REPLACED
Definition: gprs_ns.c:135
ns2_validate
int ns2_validate(struct gprs_ns2_vc *nsvc, uint8_t pdu_type, struct msgb *msg, struct tlv_parsed *tp, uint8_t *cause)
Definition: gprs_ns2_message.c:135
BSSGP_PDUT_BVC_RESET
@ BSSGP_PDUT_BVC_RESET
Definition: gsm_08_18.h:46
BSSGP_PDUT_FLOW_CONTROL_PFC_ACK
@ BSSGP_PDUT_FLOW_CONTROL_PFC_ACK
Definition: gsm_08_18.h:58
LOGL_NOTICE
#define LOGL_NOTICE
NS_TOUT_TNS_BLOCK
@ NS_TOUT_TNS_BLOCK
Definition: gprs_ns.h:34
overload_ies
static const uint8_t overload_ies[]
Definition: gprs_bssgp_util.c:248
osmo_mnl_init
struct osmo_mnl * osmo_mnl_init(void *ctx, int bus, unsigned int groups, mnl_cb_t mnl_cb, void *priv)
BSSGP_PDUT_PS_HO_COMPLETE_ACK
@ BSSGP_PDUT_PS_HO_COMPLETE_ACK
Definition: gsm_08_18.h:80
prim.h
gprs_ns2_ll_str
const char * gprs_ns2_ll_str(struct gprs_ns2_vc *nsvc)
string-format a given NS-VC to a thread-local static buffer.
Definition: gprs_ns2.c:301
NSVC_TIMER_TNS_RESET
@ NSVC_TIMER_TNS_RESET
Definition: gprs_ns2_internal.h:71
BSSGP_CAUSE_PUESBINE
@ BSSGP_CAUSE_PUESBINE
Definition: gsm_08_18.h:316
gprs_ns_rcvmsg
int gprs_ns_rcvmsg(struct gprs_ns_inst *nsi, struct msgb *msg, struct sockaddr_in *saddr, enum gprs_ns_ll ll)
Receive incoming NS message from underlying transport layer.
Definition: gprs_ns.c:1496
BSSGP_IE_PFC_FLOW_CTRL_PARAMS
@ BSSGP_IE_PFC_FLOW_CTRL_PARAMS
Definition: gsm_08_18.h:182
llist_add
static void llist_add(struct llist_head *_new, struct llist_head *head)
bssgp_pdu_str
const char * bssgp_pdu_str(enum bssgp_pdu_type pdu)
Definition: gprs_bssgp_util.c:489
BSSGP_PDUT_CREATE_BSS_PFC
@ BSSGP_PDUT_CREATE_BSS_PFC
Definition: gsm_08_18.h:64
bssgp_cause_str
const char * bssgp_cause_str(enum gprs_bssgp_cause cause)
Definition: gprs_bssgp_util.c:484
block_ack_ies
static const uint8_t block_ack_ies[]
Definition: gprs_bssgp_util.c:213
BSSGP_PDUT_PERFORM_LOC_ABORT
@ BSSGP_PDUT_PERFORM_LOC_ABORT
Definition: gsm_08_18.h:84
gprs_ns_ll_str_buf
char * gprs_ns_ll_str_buf(char *buf, size_t buf_len, const struct gprs_nsvc *nsvc)
Definition: gprs_ns.c:1527
BSSGP_IE_OLD_RA_ID
@ BSSGP_IE_OLD_RA_ID
Definition: gsm_08_18.h:251
bssgp_enc_ran_inf_rim_cont
int bssgp_enc_ran_inf_rim_cont(uint8_t *buf, size_t len, const struct bssgp_ran_inf_rim_cont *cont)
Encode a RAN Information RIM Container (3GPP TS 48.018, table 11.3.62a.2.b).
Definition: gprs_bssgp_rim.c:662
BSSGP_IE_COVERAGE_CLASS
@ BSSGP_IE_COVERAGE_CLASS
Definition: gsm_08_18.h:248
bssgp_ran_inf_err_rim_cont
Definition: gprs_bssgp_rim.h:204
ns2_vc_block
int ns2_vc_block(struct gprs_ns2_vc *nsvc)
Block a NS-VC.
Definition: gprs_ns2_vc_fsm.c:746
SNS_PDUT_CONFIG
@ SNS_PDUT_CONFIG
Definition: gsm_08_16.h:57
value_string
btsctx_by_bvci_nsei
struct bssgp_bvc_ctx * btsctx_by_bvci_nsei(uint16_t bvci, uint16_t nsei)
Definition: gprs_bssgp.c:155
BSSGP_PDUT_BVC_UNBLOCK_ACK
@ BSSGP_PDUT_BVC_UNBLOCK_ACK
Definition: gsm_08_18.h:49
msgb_copy
struct msgb * msgb_copy(const struct msgb *msg, const char *name)
NS_IE_IPv4_EP_NR
@ NS_IE_IPv4_EP_NR
Definition: gsm_08_16.h:75
ns_signal_data::nsvc
struct gprs_nsvc * nsvc
Definition: gprs_ns.h:246
FRAME_RELAY_SDU
#define FRAME_RELAY_SDU
Definition: frame_relay.h:45
PTP
#define PTP
Definition: gprs_bssgp_util.c:258
ns_mark_blocked
#define ns_mark_blocked(ns_)
Definition: gprs_ns.c:94
nsvc_is_not_used
static bool nsvc_is_not_used(const struct gprs_nsvc *nsvc)
Definition: gprs_ns.c:198
ns_is_sns
static bool ns_is_sns(uint8_t pdu_type)
Definition: gprs_ns.c:454
gprs_nsvc::ip
struct gprs_nsvc::@16::@18 ip
del_bss_pfc_req_ies
static const uint8_t del_bss_pfc_req_ies[]
Definition: gprs_bssgp_util.c:234
gprs_ns2_dialect
gprs_ns2_dialect
Definition: gprs_ns2.h:35
BSSGP_IE_SELECTED_PLMN_ID
@ BSSGP_IE_SELECTED_PLMN_ID
Definition: gsm_08_18.h:242
gprs_ns2_fr_bind_netif
const char * gprs_ns2_fr_bind_netif(struct gprs_ns2_vc_bind *bind)
Return the network interface of the bind.
Definition: gprs_ns2_fr.c:920
msgb_hexdump
const char * msgb_hexdump(const struct msgb *msg)
ns_osmo_signal_dispatch
static void ns_osmo_signal_dispatch(struct gprs_nsvc *nsvc, unsigned int signal, uint8_t cause)
Definition: gprs_ns.c:363
ns2_load_sharing
static struct gprs_ns2_vc * ns2_load_sharing(struct gprs_ns2_nse *nse, uint16_t bvci, uint32_t link_selector)
Definition: gprs_ns2.c:446
gprs_ns2_ll_str_buf
char * gprs_ns2_ll_str_buf(char *buf, size_t buf_len, struct gprs_ns2_vc *nsvc)
string-format a given NS-VC into a user-supplied buffer.
Definition: gprs_ns2.c:244
BSSGP_PDUT_DUMMY_PAGING_PS
@ BSSGP_PDUT_DUMMY_PAGING_PS
Definition: gsm_08_18.h:39
_NSVC_TIMER_NR
@ _NSVC_TIMER_NR
Definition: gprs_ns2_internal.h:72
ns2_tx_block
int ns2_tx_block(struct gprs_ns2_vc *nsvc, uint8_t cause)
Transmit a NS-BLOCK on a given NS-VC.
Definition: gprs_ns2_message.c:211
gprs_ns2_free_nsvcs
void gprs_ns2_free_nsvcs(struct gprs_ns2_nse *nse)
Destroy/release all NS-VC of given NSE.
Definition: gprs_ns2.c:657
ns2_tx_sns_size_ack
int ns2_tx_sns_size_ack(struct gprs_ns2_vc *nsvc, uint8_t *cause)
Encode + Transmit a SNS-SIZE-ACK as per Section 9.3.8.
Definition: gprs_ns2_message.c:691
BSSGP_PDUT_MS_REGISTR_ENQ_RESP
@ BSSGP_PDUT_MS_REGISTR_ENQ_RESP
Definition: gsm_08_18.h:42
gprs_start_alive_all_nsvcs
void gprs_start_alive_all_nsvcs(struct gprs_ns_inst *nsi)
Definition: gprs_ns.c:2246
BSSGP_PDUT_FLOW_CONTROL_MS
@ BSSGP_PDUT_FLOW_CONTROL_MS
Definition: gsm_08_18.h:52
NS_CTR_BYTES_IN
@ NS_CTR_BYTES_IN
Definition: gprs_ns.c:131
bssgp_ran_inf_err_rim_cont::son_trans_app_id_len
size_t son_trans_app_id_len
Definition: gprs_bssgp_rim.h:217
gprs_ns_inst::timeout
uint16_t timeout[NS_TIMERS_COUNT]
Definition: gprs_ns.h:90
ns2_load_sharing_weight_modulo
static struct gprs_ns2_vc * ns2_load_sharing_weight_modulo(struct gprs_ns2_nse *nse, uint16_t bvci, uint32_t load_selector)
Definition: gprs_ns2.c:403
gprs_ns2_nsvc_state_name
const char * gprs_ns2_nsvc_state_name(struct gprs_ns2_vc *nsvc)
Return the current state name of a given NS-VC to a thread-local static buffer.
Definition: gprs_ns2.c:322
bssgp_ran_inf_app_cont_nacc::si
const uint8_t * si[127]
Definition: gprs_bssgp_rim.h:93
gprs_ns_tx_sns_size_ack
int gprs_ns_tx_sns_size_ack(struct gprs_nsvc *nsvc, uint8_t *cause)
Encode + Transmit a SNS-SIZE-ACK as per Section 9.3.8.
Definition: gprs_ns.c:1040
ns_cause
ns_cause
NS Cause (TS 08.16, Section 10.3.2, Table 13)
Definition: gsm_08_16.h:83
BSSGP_IE_MBMS_STOP_CAUSE
@ BSSGP_IE_MBMS_STOP_CAUSE
Definition: gsm_08_18.h:199
GPRS_NS2_AFF_CAUSE_FAILURE
@ GPRS_NS2_AFF_CAUSE_FAILURE
Definition: gprs_ns2.h:81
fc_ms_ack_ies
static const uint8_t fc_ms_ack_ies[]
Definition: gprs_bssgp_util.c:211
BSSGP_PDUT_FLUSH_LL
@ BSSGP_PDUT_FLUSH_LL
Definition: gsm_08_18.h:54
gprs_ns2_inst::bind_rate_ctr_idx
uint32_t bind_rate_ctr_idx
Definition: gprs_ns2_internal.h:136
BSSGP_IE_T_UNTIL_NEXT_PAGING
@ BSSGP_IE_T_UNTIL_NEXT_PAGING
Definition: gsm_08_18.h:247
ns2_tx_alive
int ns2_tx_alive(struct gprs_ns2_vc *nsvc)
Transmit a NS-ALIVE on a given NS-VC.
Definition: gprs_ns2_message.c:371
gprs_ns_cause_str
const char * gprs_ns_cause_str(enum ns_cause cause)
Obtain a human-readable string for NS cause value.
Definition: gprs_ns.c:446
timer_mode_tout
static enum ns_timeout timer_mode_tout[_NSVC_TIMER_NR]
Definition: gprs_ns.c:730
gprs_ns2_nse_foreach_nsvc
int gprs_ns2_nse_foreach_nsvc(struct gprs_ns2_nse *nse, gprs_ns2_foreach_nsvc_cb cb, void *cb_data)
Iterate over all nsvc of a NS Entity and call the callback.
Definition: gprs_ns2.c:1121
gprs_ns_vc_create
int gprs_ns_vc_create(struct gprs_ns_inst *nsi, struct msgb *msg, struct gprs_nsvc *fallback_nsvc, struct gprs_nsvc **new_nsvc)
Create/get NS-VC independently from underlying transport layer.
Definition: gprs_ns.c:1609
frgre_sendmsg
static int frgre_sendmsg(struct gprs_ns2_vc_bind *bind, struct msgb *msg, struct osmo_sockaddr *dest)
Definition: gprs_ns2_frgre.c:482
unblock_ies
static const uint8_t unblock_ies[]
Definition: gprs_bssgp_util.c:214
llist_add_tail
static void llist_add_tail(struct llist_head *_new, struct llist_head *head)
priv_vc::dlc
struct osmo_fr_dlc * dlc
Definition: gprs_ns2_fr.c:122
NSVC_TIMER_TNS_ALIVE
@ NSVC_TIMER_TNS_ALIVE
Definition: gprs_ns.h:116
type
enum osmo_sub_auth_type type
BSSGP_IE_BVC_BUCKET_SIZE
@ BSSGP_IE_BVC_BUCKET_SIZE
Definition: gsm_08_18.h:123
ARRAY_SIZE
#define ARRAY_SIZE(x)
bssgp_dec_ran_inf_req_rim_cont
int bssgp_dec_ran_inf_req_rim_cont(struct bssgp_ran_inf_req_rim_cont *cont, const uint8_t *buf, size_t len)
Decode a RAN Information Request RIM Container (3GPP TS 48.018, table 11.3.62a.1.b).
Definition: gprs_bssgp_rim.c:472
BSSGP_PDUT_FLOW_CONTROL_BVC
@ BSSGP_PDUT_FLOW_CONTROL_BVC
Definition: gsm_08_18.h:50
crt_bss_pfc_ack_ies
static const uint8_t crt_bss_pfc_ack_ies[]
Definition: gprs_bssgp_util.c:223
priv_bind::netif
char netif[IFNAMSIZ]
Definition: gprs_ns2_fr.c:100
gprs_ns_rx_sns
int gprs_ns_rx_sns(struct gprs_ns_inst *nsi, struct msgb *msg, struct tlv_parsed *tp)
Definition: gprs_ns_sns.c:686
BSSGP_IE_RADIO_CAUSE
@ BSSGP_IE_RADIO_CAUSE
Definition: gsm_08_18.h:143
SNS_PDUT_ACK
@ SNS_PDUT_ACK
Definition: gsm_08_16.h:54
BSSGP_PDUT_CREATE_BSS_PFC_NACK
@ BSSGP_PDUT_CREATE_BSS_PFC_NACK
Definition: gsm_08_18.h:66
gprs_ns2_nse::alive
bool alive
true if this NSE has at least one alive VC
Definition: gprs_ns2_internal.h:167
GPRS_NS2_LL_UDP
@ GPRS_NS2_LL_UDP
NS/UDP/IP.
Definition: gprs_ns2.h:46
gprs_ns2_vc::sig_weight
uint8_t sig_weight
signalling weight.
Definition: gprs_ns2_internal.h:208
NSE_S_RESET
#define NSE_S_RESET
Definition: gprs_ns.h:46
osmo_plmn_id::mnc_3_digits
bool mnc_3_digits
BSSGP_CAUSE_UL_STRENGTH
@ BSSGP_CAUSE_UL_STRENGTH
Definition: gsm_08_18.h:298
BSSGP_IE_UE_USAGE_TYPE
@ BSSGP_IE_UE_USAGE_TYPE
Definition: gsm_08_18.h:257
osmo_gprs_ns2_prim::cause
enum gprs_ns2_congestion_cause cause
Definition: gprs_ns2.h:126
BSSGP_CAUSE_DL_STRENGTH
@ BSSGP_CAUSE_DL_STRENGTH
Definition: gsm_08_18.h:300
ns2_tx_unblock
int ns2_tx_unblock(struct gprs_ns2_vc *nsvc)
Transmit a NS-UNBLOCK on a given NS-VC.
Definition: gprs_ns2_message.c:340
gprs_ns_tx_block_ack
static int gprs_ns_tx_block_ack(struct gprs_nsvc *nsvc)
Transmit a NS-BLOCK-ACK on a given NS-VC.
Definition: gprs_ns.c:662
NS_IE_TRANS_ID
@ NS_IE_TRANS_ID
Definition: gsm_08_16.h:79
BSSGP_IE_BUCKET_LEAK_RATE
@ BSSGP_IE_BUCKET_LEAK_RATE
Definition: gsm_08_18.h:121
BSSGP_IE_RAN_INFO_APP_CONTAINER
@ BSSGP_IE_RAN_INFO_APP_CONTAINER
Definition: gsm_08_18.h:180
argv
argv
NS_TOUT_TNS_RESET_RETRIES
@ NS_TOUT_TNS_RESET_RETRIES
Definition: gprs_ns.h:37
NS_PDUT_UNBLOCK
@ NS_PDUT_UNBLOCK
Definition: gsm_08_16.h:48
rinfo_err_ies
static const uint8_t rinfo_err_ies[]
Definition: gprs_bssgp_util.c:252
NSVC_TIMER_TNS_ALIVE
@ NSVC_TIMER_TNS_ALIVE
Definition: gprs_ns2_internal.h:70
osmo_stat_item_group_desc::group_name_prefix
const char * group_name_prefix
gprs_ns2_vc::nsvci
uint16_t nsvci
uniquely identifies NS-VC if VC contains nsvci
Definition: gprs_ns2_internal.h:205
BSSGP_CAUSE_REQ_ALG_NOT_SUPP
@ BSSGP_CAUSE_REQ_ALG_NOT_SUPP
Definition: gsm_08_18.h:310
gprs_ns2_is_frgre_bind
int gprs_ns2_is_frgre_bind(struct gprs_ns2_vc_bind *bind)
determine if given bind is for FR-GRE encapsulation.
Definition: gprs_ns2_frgre.c:533
fc_pfc_ies
static const uint8_t fc_pfc_ies[]
Definition: gprs_bssgp_util.c:232
gprs_ns2_free_bind
void gprs_ns2_free_bind(struct gprs_ns2_vc_bind *bind)
Destroy a given bind.
Definition: gprs_ns2.c:1326
L_BSSGP_NODE
L_BSSGP_NODE
osmo_fr_dlc::status_cb
void(* status_cb)(struct osmo_fr_dlc *dlc, void *cb_data, bool active)
Definition: frame_relay.h:128
BSSGP_IE_NC_ID
@ BSSGP_IE_NC_ID
Definition: gsm_08_18.h:208
gprs_ns2_vc_driver
Definition: gprs_ns2_internal.h:274
bssgp_rim_routing_info::discr
enum bssgp_rim_routing_info_discr discr
Definition: gprs_bssgp_rim.h:46
osmo_timer_del
void osmo_timer_del(struct osmo_timer_list *timer)
msgb_tvlv_put
static uint8_t * msgb_tvlv_put(struct msgb *msg, uint8_t tag, uint16_t len, const uint8_t *val)
gprs_sns_init
int gprs_sns_init(void)
Definition: gprs_ns_sns.c:736
osmo_sockaddr_str_from_sockaddr
int osmo_sockaddr_str_from_sockaddr(struct osmo_sockaddr_str *sockaddr_str, const struct sockaddr_storage *src)
gprs_nsvc::remote_state
uint32_t remote_state
Definition: gprs_ns.h:132
gprs_ns2_nse::dialect
enum gprs_ns2_dialect dialect
which dialect does this NSE speaks?
Definition: gprs_ns2_internal.h:173
LOGPSRC
#define LOGPSRC(ss, level, caller_file, caller_line, fmt, args...)
msgb::l2h
unsigned char * l2h
osmo_sockaddr::sas
struct sockaddr_storage sas
NS_PDUT_STATUS
@ NS_PDUT_STATUS
Definition: gsm_08_16.h:50
BSSGP_IE_MBMS_SA_ID_LIST
@ BSSGP_IE_MBMS_SA_ID_LIST
Definition: gsm_08_18.h:195
gprs_nsvc::statg
struct osmo_stat_item_group * statg
Definition: gprs_ns.h:144
NS_IE_IPv6_LIST
@ NS_IE_IPv6_LIST
Definition: gsm_08_16.h:73
BSSGP_CAUSE_T14_EXPIRY
@ BSSGP_CAUSE_T14_EXPIRY
Definition: gsm_08_18.h:307
bssgp_ran_inf_ack_rim_cont::prot_ver
uint8_t prot_ver
Definition: gprs_bssgp_rim.h:192
GPRS_NS_LL_UDP
@ GPRS_NS_LL_UDP
NS/UDP/IP.
Definition: gprs_ns.h:54
install_lib_element
void install_lib_element(int ntype, struct cmd_element *cmd)
bssgp_app_err_cont_nacc::err_app_cont_len
size_t err_app_cont_len
Definition: gprs_bssgp_rim.h:121
gprs_ns2_recv_prim
int gprs_ns2_recv_prim(struct gprs_ns2_inst *nsi, struct osmo_prim_hdr *oph)
Receive a primitive from the NS User (Gb).
Definition: gprs_ns2.c:476
ns2_tx_unit_data
int ns2_tx_unit_data(struct gprs_ns2_vc *nsvc, uint16_t bvci, uint8_t sducontrol, struct msgb *msg)
Transmit NS-UNITDATA on a given NS-VC.
Definition: gprs_ns2_message.c:398
gprs_ns2_inst::nsvc_rate_ctr_idx
uint32_t nsvc_rate_ctr_idx
workaround for rate counter until rate counter accepts char str as index
Definition: gprs_ns2_internal.h:135
gprs_ns2_nse::first
bool first
true if this NSE wasn't yet alive at all.
Definition: gprs_ns2_internal.h:164
BSSGP_CAUSE_T12_EXPIRY
@ BSSGP_CAUSE_T12_EXPIRY
Definition: gsm_08_18.h:295
OSMO_FD_WRITE
#define OSMO_FD_WRITE
gprs_ns2_vc_bind::list
struct llist_head list
list entry in nsi
Definition: gprs_ns2_internal.h:235
TVLV_HDR_LEN
#define TVLV_HDR_LEN
Definition: gprs_bssgp_rim.c:39
BSSGP_IE_CELL_ID
@ BSSGP_IE_CELL_ID
Definition: gsm_08_18.h:126
gprs_ns_ie_ip6_elem
Section 10.3.2d List of IP6 Elements.
Definition: gsm_08_16.h:32
osmo_tlv_prot_parse
int osmo_tlv_prot_parse(const struct osmo_tlv_prot_def *pdef, struct tlv_parsed *dec, unsigned int dec_multiples, uint8_t msg_type, const uint8_t *buf, unsigned int buf_len, uint8_t lv_tag, uint8_t lv_tag2, int log_subsys, const char *log_pfx)
bssgp_ns_send_data
void * bssgp_ns_send_data
Definition: gprs_bssgp.c:51
bssgp_ns_send
bssgp_bvc_send bssgp_ns_send
Definition: gprs_bssgp.c:50
NS_CTR_BYTES_OUT
@ NS_CTR_BYTES_OUT
Definition: gprs_ns.c:132
BSSGP_IE_MBMS_SESSION_REP_NR
@ BSSGP_IE_MBMS_SESSION_REP_NR
Definition: gsm_08_18.h:214
priv_bind::timer
struct osmo_timer_list timer
Definition: gprs_ns2_fr.c:113
ns2_sns_dump_vty
void ns2_sns_dump_vty(struct vty *vty, const char *prefix, const struct gprs_ns2_nse *nse, bool stats)
Dump the IP-SNS state to a vty.
Definition: gprs_ns2_sns.c:1639
argc
argc
UL
#define UL
Definition: gprs_bssgp_util.c:256
add_bind_array
static void add_bind_array(struct gprs_ns2_vc_bind **array, struct gprs_ns2_vc_bind *bind, int size)
Definition: gprs_ns2.c:1392
file
write Write running configuration to or terminal n Write configuration to the file(same as write file)\n") ALIAS(config_write_file
NS_CAUSE_UNKN_IP_EP
@ NS_CAUSE_UNKN_IP_EP
Definition: gsm_08_16.h:100
gprs_ns2_nse::sum_sig_weight
uint32_t sum_sig_weight
sum of all the signalling weight of alive NS-VCs
Definition: gprs_ns2_internal.h:181
gsm_08_18.h
dump_vty
static void dump_vty(const struct gprs_ns2_vc_bind *bind, struct vty *vty, bool _stats)
Definition: gprs_ns2_fr.c:138
free_bind
static void free_bind(struct gprs_ns2_vc_bind *bind)
clean up all private driver state.
Definition: gprs_ns2_frgre.c:135
BSSGP_IE_TGT_TO_SRC_TR_CONT
@ BSSGP_IE_TGT_TO_SRC_TR_CONT
Definition: gsm_08_18.h:207
BSSGP_RIM_PSI_LEN
#define BSSGP_RIM_PSI_LEN
Definition: gprs_bssgp_rim.h:84
bssgp_tx_bvc_reset
int bssgp_tx_bvc_reset(struct bssgp_bvc_ctx *bctx, uint16_t bvci, uint8_t cause)
Definition: gprs_bssgp_bss.c:300
BSSGP_RIM_ROUTING_INFO_MAXLEN
#define BSSGP_RIM_ROUTING_INFO_MAXLEN
Definition: gprs_bssgp_rim.h:67
OSMO_STATS_CLASS_PEER
OSMO_STATS_CLASS_PEER
NS_CTR_LOST_RESET
@ NS_CTR_LOST_RESET
Definition: gprs_ns.c:140
msgb_data
uint8_t * msgb_data(const struct msgb *msg)
SS_L_NS
SS_L_NS
BSSGP_CAUSE_SGSN_CONG
@ BSSGP_CAUSE_SGSN_CONG
Definition: gsm_08_18.h:274
bssgp_pdu_type
bssgp_pdu_type
BSSGP PDU types (Section 11.3.26 / Table 11.27)
Definition: gsm_08_18.h:17
LOGBIND
#define LOGBIND(bind, lvl, fmt, args ...)
Definition: gprs_ns2_internal.h:14
log_tgt_mutex_unlock
#define log_tgt_mutex_unlock()
rinfo_aerr_ies
static const uint8_t rinfo_aerr_ies[]
Definition: gprs_bssgp_util.c:253
gsm0808_decode_cell_id_u
int gsm0808_decode_cell_id_u(union gsm0808_cell_id_u *out, enum CELL_IDENT discr, const uint8_t *buf, unsigned int len)
BSSGP_IE_TMGI
@ BSSGP_IE_TMGI
Definition: gsm_08_18.h:192
BSSGP_PDUT_UL_MMBS_UNITDATA
@ BSSGP_PDUT_UL_MMBS_UNITDATA
Definition: gsm_08_18.h:25
osmo_mnl::mnls
struct mnl_socket * mnls
gprs_ns2_vc_bind::nsvc
struct llist_head nsvc
list of all VC
Definition: gprs_ns2_internal.h:237
gprs_ns2_vc::data_weight
uint8_t data_weight
data weight.
Definition: gprs_ns2_internal.h:214
osmo_fd
gprs_nsvc_start_test
void gprs_nsvc_start_test(struct gprs_nsvc *nsvc)
Start the ALIVE timer procedure in all NS-VCs part of this NS Instance.
Definition: gprs_ns.c:2236
priv_bind::if_running
bool if_running
Definition: gprs_ns2_fr.c:103
sockaddr_str.h
BSSGP_IE_EDRX_PARAMETERS
@ BSSGP_IE_EDRX_PARAMETERS
Definition: gsm_08_18.h:246
BSSGP_IE_IMSI
@ BSSGP_IE_IMSI
Definition: gsm_08_18.h:131
ra_cap_upd_ack_ies
static const uint8_t ra_cap_upd_ack_ies[]
Definition: gprs_bssgp_util.c:189
gprs_nsvc::remote_end_is_sgsn
unsigned int remote_end_is_sgsn
Definition: gprs_ns.h:139
fc_ms_ies
static const uint8_t fc_ms_ies[]
Definition: gprs_bssgp_util.c:209
ps_ho_request_nack_ies
static const uint8_t ps_ho_request_nack_ies[]
Definition: gprs_bssgp_util.c:244
ns_signal_data
Definition: gprs_ns.h:245
LOGP
#define LOGP(ss, level, fmt, args...)
gprs_ns2_aff_cause_prim_str
static const char * gprs_ns2_aff_cause_prim_str(enum gprs_ns2_affecting_cause val)
Obtain a human-readable string for NS affecting cause in primitives.
Definition: gprs_ns2.h:93
BSSGP_IE_QOS_PROFILE
@ BSSGP_IE_QOS_PROFILE
Definition: gsm_08_18.h:142
NS_CAUSE_UNKN_IP_TEST_FAILED
@ NS_CAUSE_UNKN_IP_TEST_FAILED
Definition: gsm_08_16.h:102
SNS_PDUT_CONFIG_ACK
@ SNS_PDUT_CONFIG_ACK
Definition: gsm_08_16.h:58
BSSGP_IE_SOURCE_CELL_ID
@ BSSGP_IE_SOURCE_CELL_ID
Definition: gsm_08_18.h:244
BSSGP_PDUT_RA_CAPA_UDPATE
#define BSSGP_PDUT_RA_CAPA_UDPATE
Definition: gsm_08_18.h:14
msgb_bvci
#define msgb_bvci(__x)
Definition: gprs_msgb.h:24
msgb_alloc
struct msgb * msgb_alloc(uint16_t size, const char *name)
llist_empty
static int llist_empty(const struct llist_head *head)
BSSGP_IE_R_DEFAULT_MS
@ BSSGP_IE_R_DEFAULT_MS
Definition: gsm_08_18.h:146
backlog_enqueue_or_free
static int backlog_enqueue_or_free(struct gprs_ns2_vc_bind *bind, struct msgb *msg)
Definition: gprs_ns2_fr.c:365
libgb_msgb_cb::tlli
uint32_t tlli
Identifier of a MS (inside BTS), equal to 'struct sgsn_mm_ctx'.
Definition: gprs_msgb.h:19
suspend_ack_ies
static const uint8_t suspend_ack_ies[]
Definition: gprs_bssgp_util.c:192
BSSGP_IE_PACKET_FLOW_ID
@ BSSGP_IE_PACKET_FLOW_ID
Definition: gsm_08_18.h:158
ERR_IF_NSVC_USES_SNS
#define ERR_IF_NSVC_USES_SNS(nsvc, reason)
Definition: gprs_ns.c:99
del_bss_pfc_ack_ies
static const uint8_t del_bss_pfc_ack_ies[]
Definition: gprs_bssgp_util.c:231
gprs_ns2_lltype_str
static const char * gprs_ns2_lltype_str(enum gprs_ns2_ll val)
Obtain a human-readable string for NS link-layer type.
Definition: gprs_ns2.h:66
osmo_bssgp_prim::u
union osmo_bssgp_prim::@0 u
BSSGP_IE_REQ4IRAT_HO_INFO
@ BSSGP_IE_REQ4IRAT_HO_INFO
Definition: gsm_08_18.h:230
open_socket
static int open_socket(int ifindex, const struct gprs_ns2_vc_bind *nsbind)
Definition: gprs_ns2_fr.c:494
gprs_nsvc::timer_started
struct timeval timer_started
Definition: gprs_ns.h:136
NS_CAUSE_NSVC_UNKNOWN
@ NS_CAUSE_NSVC_UNKNOWN
Definition: gsm_08_16.h:88
NS_CAUSE_SEM_INCORR_PDU
@ NS_CAUSE_SEM_INCORR_PDU
Definition: gsm_08_16.h:90
d_pag_ps_resp_ies
static const uint8_t d_pag_ps_resp_ies[]
Definition: gprs_bssgp_util.c:198
BSSGP_RAN_INF_APP_ID_SON
@ BSSGP_RAN_INF_APP_ID_SON
Definition: gprs_bssgp_rim.h:132
BSSGP_IE_MME_QUERY
@ BSSGP_IE_MME_QUERY
Definition: gsm_08_18.h:254
BSSGP_IE_ATTACH_IND
@ BSSGP_IE_ATTACH_IND
Definition: gsm_08_18.h:252
ns2_vc_is_unblocked
int ns2_vc_is_unblocked(struct gprs_ns2_vc *nsvc)
is the given NS-VC unblocked?
Definition: gprs_ns2_vc_fsm.c:851
gprs_ns_inst::unknown_nsvc
struct gprs_nsvc * unknown_nsvc
a NSVC object that's needed to deal with packets for unknown NSVC
Definition: gprs_ns.h:88
NS_TIMERS_COUNT
#define NS_TIMERS_COUNT
Definition: gprs_ns2_internal.h:36
fr_dlci_status_cb
static void fr_dlci_status_cb(struct osmo_fr_dlc *dlc, void *cb_data, bool active)
Definition: gprs_ns2_fr.c:185
BSSGP_STR
#define BSSGP_STR
Definition: gprs_bssgp_vty.c:134
BSSGP_IE_NUM_OCT_AFF
@ BSSGP_IE_NUM_OCT_AFF
Definition: gsm_08_18.h:155
NS_CTR_NSEI_CHG
@ NS_CTR_NSEI_CHG
Definition: gprs_ns.c:136
BSSGP_IE_BSS_AREA_ID
@ BSSGP_IE_BSS_AREA_ID
Definition: gsm_08_18.h:120
BSSGP_PDUT_RESUME_NACK
@ BSSGP_PDUT_RESUME_NACK
Definition: gsm_08_18.h:37
bssgp_ran_information_pdu::routing_info_dest
struct bssgp_rim_routing_info routing_info_dest
Definition: gprs_bssgp_rim.h:242
osmo_fr_dlc::cb_data
void * cb_data
Definition: frame_relay.h:129
gprs_ns2_vc_mode
gprs_ns2_vc_mode
Definition: gprs_ns2.h:25
bssgp_normal_hdr
BSSGP normal header.
Definition: gsm_08_18.h:111
priv_bind::dlci
uint16_t dlci
Definition: gprs_ns2_frgre.c:113
fsm.h
BSSGP_IE_RI_ERROR_RIM_COINTAINER
@ BSSGP_IE_RI_ERROR_RIM_COINTAINER
Definition: gsm_08_18.h:191
gprs_ns2_fr_bind
int gprs_ns2_fr_bind(struct gprs_ns2_inst *nsi, const char *name, const char *netif, struct osmo_fr_network *fr_network, enum osmo_fr_role fr_role, struct gprs_ns2_vc_bind **result)
Create a new bind for NS over FR.
Definition: gprs_ns2_fr.c:798
libgb_msgb_cb::llch
unsigned char * llch
Definition: gprs_msgb.h:9
priv_bind::ofd
struct osmo_fd ofd
Definition: gprs_ns2_fr.c:107
osmo_fr_link_alloc
struct osmo_fr_link * osmo_fr_link_alloc(struct osmo_fr_network *net, enum osmo_fr_role role, const char *name)
Definition: frame_relay.c:927
gprs_nsvc::state
uint32_t state
uniquely identifies NS-VC at SGSN
Definition: gprs_ns.h:131
bssgp_rim_routing_info::geran
struct bssgp_rim_routing_info::@5::@7 geran
BSSGP_IE_MBMS_RA_LIST
@ BSSGP_IE_MBMS_RA_LIST
Definition: gsm_08_18.h:197
osmo_htons
#define osmo_htons(x)
BSSGP_IE_EXCEPTION_REPORT_FLAG
@ BSSGP_IE_EXCEPTION_REPORT_FLAG
Definition: gsm_08_18.h:250
ns2_tx_sns_size
int ns2_tx_sns_size(struct gprs_ns2_vc *nsvc, bool reset_flag, uint16_t max_nr_nsvc, int ip4_ep_nr, int ip6_ep_nr)
Encode + transmit a SNS-SIZE as per Section 9.3.7.
Definition: gprs_ns2_message.c:646
ns2_nse_notify_alive
void ns2_nse_notify_alive(struct gprs_ns2_vc *nsvc, bool alive)
rate_ctr_group_desc
BSSGP_IE_TAC
@ BSSGP_IE_TAC
Definition: gsm_08_18.h:234
frame_relay.h
gprs_ns2_inst::cb
osmo_prim_cb cb
callback to the user for incoming UNIT DATA IND
Definition: gprs_ns2_internal.h:121
osmo_location_area_id::plmn
struct osmo_plmn_id plmn
osmo_stat_item_group::items
struct osmo_stat_item * items[0]
gprs_ns_inst::local_ip
uint32_t local_ip
Definition: gprs_ns.h:95
MSG_DEF
#define MSG_DEF(name, mand_ies, flags)
BSSGP_IE_AGG_BSS_QOS_PROFILE
@ BSSGP_IE_AGG_BSS_QOS_PROFILE
Definition: gsm_08_18.h:160
bssgp_ran_inf_x_cont::seq_num
uint32_t seq_num
Definition: gprs_bssgp_rim.c:406
DLNS
#define DLNS
gprs_nsvc::sig_weight
uint8_t sig_weight
signalling weight.
Definition: gprs_ns.h:160
gprs_ns_tx_reset
int gprs_ns_tx_reset(struct gprs_nsvc *nsvc, uint8_t cause)
Transmit a NS-RESET on a given NSVC.
Definition: gprs_ns.c:538
NS_CAUSE_NSVC_BLOCKED
@ NS_CAUSE_NSVC_BLOCKED
Definition: gsm_08_16.h:87
BSSGP_PDUT_MBMS_STOP_REQ
@ BSSGP_PDUT_MBMS_STOP_REQ
Definition: gsm_08_18.h:96
BSSGP_IE_BVCI
@ BSSGP_IE_BVCI
Definition: gsm_08_18.h:122
ns2_nse_data_sum
void ns2_nse_data_sum(struct gprs_ns2_nse *nse)
Definition: gprs_ns2.c:1218
SNS_PDUT_DELETE
@ SNS_PDUT_DELETE
Definition: gsm_08_16.h:59
gprs_ns2_ip_connect2
struct gprs_ns2_vc * gprs_ns2_ip_connect2(struct gprs_ns2_vc_bind *bind, const struct osmo_sockaddr *remote, uint16_t nsei, uint16_t nsvci, enum gprs_ns2_dialect dialect)
Create, connect and activate a new IP-based NS-VC.
Definition: gprs_ns2.c:1074
logging.h
gprs_nsvc::timer_mode
enum nsvc_timer_mode timer_mode
Definition: gprs_ns.h:135
NS2_CS_SKIPPED
@ NS2_CS_SKIPPED
Skipped message.
Definition: gprs_ns2_internal.h:88
BSSGP_CAUSE_T13_EXPIRY
@ BSSGP_CAUSE_T13_EXPIRY
Definition: gsm_08_18.h:306
BSSGP_PDUT_PS_HO_REQUIRED_NACK
@ BSSGP_PDUT_PS_HO_REQUIRED_NACK
Definition: gsm_08_18.h:74
osmo_stat_item_desc
BSSGP_CAUSE_RELOC_FAIL
@ BSSGP_CAUSE_RELOC_FAIL
Definition: gsm_08_18.h:311
CMD_SUCCESS
return CMD_SUCCESS
BSSGP_IE_PLMN_ID
@ BSSGP_IE_PLMN_ID
Definition: gsm_08_18.h:253
priv_bind
Definition: gprs_ns2_fr.c:99
gprs_ns2_vc::nsvci_is_valid
bool nsvci_is_valid
Definition: gprs_ns2_internal.h:219
gprs_ns_tx
static int gprs_ns_tx(struct gprs_nsvc *nsvc, struct msgb *msg)
Definition: gprs_ns.c:471
BSSGP_IE_LCS_PRIORITY
@ BSSGP_IE_LCS_PRIORITY
Definition: gsm_08_18.h:173
gprs_ns2_vc::persistent
bool persistent
true if this NS was created by VTY or pcu socket)
Definition: gprs_ns2_internal.h:202
frgre_vc_sendmsg
static int frgre_vc_sendmsg(struct gprs_ns2_vc *nsvc, struct msgb *msg)
Definition: gprs_ns2_frgre.c:497
msgb_dequeue
struct msgb * msgb_dequeue(struct llist_head *queue)
gprs_ns_tx_sns_config_ack
int gprs_ns_tx_sns_config_ack(struct gprs_nsvc *nsvc, uint8_t *cause)
Encode + Transmit a SNS-CONFIG-ACK as per Section 9.3.5.
Definition: gprs_ns.c:961
BSSGP_CAUSE_MISSING_MAND_IE
@ BSSGP_CAUSE_MISSING_MAND_IE
Definition: gsm_08_18.h:282
gprs_ns2_nse_nsei
uint16_t gprs_ns2_nse_nsei(struct gprs_ns2_nse *nse)
Return the NSEI.
Definition: gprs_ns2.c:821
BSSGP_PDUT_MODIFY_BSS_PFC
@ BSSGP_PDUT_MODIFY_BSS_PFC
Definition: gsm_08_18.h:67
BSSGP_CAUSE_REQ_INFO_NOT_AVAIL
@ BSSGP_CAUSE_REQ_INFO_NOT_AVAIL
Definition: gsm_08_18.h:289
list
struct llist_head list
gprs_ns_frgre_sendmsg
int gprs_ns_frgre_sendmsg(struct gprs_nsvc *nsvc, struct msgb *msg)
Definition: gprs_ns_frgre.c:282
NS_PDUT_UNBLOCK_ACK
@ NS_PDUT_UNBLOCK_ACK
Definition: gsm_08_16.h:49
bssgp_ran_inf_app_cont_nacc
Definition: gprs_bssgp_rim.h:87
BSSGP_PDUT_RADIO_STATUS
@ BSSGP_PDUT_RADIO_STATUS
Definition: gsm_08_18.h:31
ns2_tx_reset_ack
int ns2_tx_reset_ack(struct gprs_ns2_vc *nsvc)
Transmit a NS-RESET-ACK on a given NS-VC.
Definition: gprs_ns2_message.c:305
osmo_fr_dlc::rx_cb
int(* rx_cb)(void *cb_data, struct msgb *msg)
Definition: frame_relay.h:126
bssgp_encode_rim_pdu
struct msgb * bssgp_encode_rim_pdu(const struct bssgp_ran_information_pdu *pdu)
Encode a given rim-pdu struct into a message buffer.
Definition: gprs_bssgp_rim.c:1062
ul_ud_ies
static const uint8_t ul_ud_ies[]
Definition: gprs_bssgp_util.c:182
gprs_ns2_is_ip_bind
int gprs_ns2_is_ip_bind(struct gprs_ns2_vc_bind *bind)
Is the given bind an IP bind?
Definition: gprs_ns2_udp.c:504
NS_CTR_PKTS_OUT
@ NS_CTR_PKTS_OUT
Definition: gprs_ns.c:130
log_target::filter_map
int filter_map
devname2ifindex
static int devname2ifindex(const char *ifname)
Definition: gprs_ns2_fr.c:473
ns2_sns_bss_fsm_alloc
struct osmo_fsm_inst * ns2_sns_bss_fsm_alloc(struct gprs_ns2_nse *nse, const char *id)
Allocate an IP-SNS FSM for the BSS side.
Definition: gprs_ns2_sns.c:1527
msgb_bssgph
#define msgb_bssgph(__x)
Definition: gprs_msgb.h:26
gprs_ns2_instantiate
struct gprs_ns2_inst * gprs_ns2_instantiate(void *ctx, osmo_prim_cb cb, void *cb_data)
Create a new GPRS NS instance.
Definition: gprs_ns2.c:1269
gprs_ns2_vc::sns_only
bool sns_only
Definition: gprs_ns2_internal.h:220
bssgp_cause_strings
static const struct value_string bssgp_cause_strings[]
Definition: gprs_bssgp_util.c:43
bssgp_bvc_ctx::bvci
uint16_t bvci
Definition: gprs_bssgp.h:115
priv_bind::addr
struct osmo_sockaddr addr
Definition: gprs_ns2_frgre.c:112
priv_bind::fd
struct osmo_fd fd
Definition: gprs_ns2_frgre.c:111
BSSGP_IE_RI_ACK_RIM_CONTAINER
@ BSSGP_IE_RI_ACK_RIM_CONTAINER
Definition: gsm_08_18.h:190
gprs_ns2_ip_bind_sockaddr
const struct osmo_sockaddr * gprs_ns2_ip_bind_sockaddr(struct gprs_ns2_vc_bind *bind)
Return the locally bound socket address of the bind.
Definition: gprs_ns2_udp.c:494
osmo_fr_dlc
Definition: frame_relay.h:107
GPRS_NS2_AFF_CAUSE_SNS_FAILURE
@ GPRS_NS2_AFF_CAUSE_SNS_FAILURE
Definition: gprs_ns2.h:85
command.h
gprs_ns2_vc::bind
struct gprs_ns2_vc_bind * bind
pointer to NS VL bind.
Definition: gprs_ns2_internal.h:199
BSSGP_PDUT_DELETE_BSS_PFC_ACK
@ BSSGP_PDUT_DELETE_BSS_PFC_ACK
Definition: gsm_08_18.h:70
osmo_bssgp_prim::nsei
uint16_t nsei
Definition: gprs_bssgp.h:68
NS_IE_IPv6_EP_NR
@ NS_IE_IPv6_EP_NR
Definition: gsm_08_16.h:76
osmo_fd::fd
int fd
socket.h
fc_bvc_ack_ies
static const uint8_t fc_bvc_ack_ies[]
Definition: gprs_bssgp_util.c:208
SNS_PDUT_SIZE_ACK
@ SNS_PDUT_SIZE_ACK
Definition: gsm_08_16.h:61
gprs_ns2_nse_by_nsei
struct gprs_ns2_nse * gprs_ns2_nse_by_nsei(struct gprs_ns2_inst *nsi, uint16_t nsei)
Resolve a NS Entity based on its NSEI.
Definition: gprs_ns2.c:745
ns2_sns_replace_nsvc
void ns2_sns_replace_nsvc(struct gprs_ns2_vc *nsvc)
called when a nsvc is beeing freed or the nsvc became dead
Definition: gprs_ns2_sns.c:246
gprs_ns2_prim_strs
const struct value_string gprs_ns2_prim_strs[]
Definition: gprs_ns2.c:225
ns2_vc_fsm_start
int ns2_vc_fsm_start(struct gprs_ns2_vc *nsvc)
Start a NS-VC FSM.
Definition: gprs_ns2_vc_fsm.c:727
telnet_interface.h
gprs_nsvc::nsei
uint16_t nsei
Definition: gprs_ns.h:128
osmo_tlv_prot_def::name
const char * name
bssgp_ran_inf_req_app_cont_nacc::reprt_cell
struct osmo_cell_global_id_ps reprt_cell
Definition: gprs_bssgp_rim.h:76
gprs_ns2_vc::mode
enum gprs_ns2_vc_mode mode
Definition: gprs_ns2_internal.h:225
BSSGP_IE_PDU_LIFETIME
@ BSSGP_IE_PDU_LIFETIME
Definition: gsm_08_18.h:140
ns2_tx_status
int ns2_tx_status(struct gprs_ns2_vc *nsvc, uint8_t cause, uint16_t bvci, struct msgb *orig_msg)
Transmit a NS-STATUS on a given NS-VC.
Definition: gprs_ns2_message.c:429
BSSGP_CAUSE_BETTER_CELL
@ BSSGP_CAUSE_BETTER_CELL
Definition: gsm_08_18.h:302
bssgp_enc_ran_inf_ack_rim_cont
int bssgp_enc_ran_inf_ack_rim_cont(uint8_t *buf, size_t len, const struct bssgp_ran_inf_ack_rim_cont *cont)
Encode a RAN Information ACK RIM Container (3GPP TS 48.018, table 11.3.62a.3.b).
Definition: gprs_bssgp_rim.c:771
LOGPC
#define LOGPC(ss, level, fmt, args...)
ns_ctr
ns_ctr
Definition: gprs_ns.c:128
LOGL_DEBUG
#define LOGL_DEBUG
gprs_sns_bss_fsm_alloc
struct osmo_fsm_inst * gprs_sns_bss_fsm_alloc(void *ctx, struct gprs_nsvc *nsvc, const char *id)
Definition: gprs_ns_sns.c:630
select.h
OSMO_SOCK_F_BIND
#define OSMO_SOCK_F_BIND
ns2_recv_vc
int ns2_recv_vc(struct gprs_ns2_vc *nsvc, struct msgb *msg)
Bottom-side entry-point for received NS PDU from the driver/bind.
Definition: gprs_ns2.c:1140
BSSGP_RIM_ROUTING_INFO_EUTRAN
@ BSSGP_RIM_ROUTING_INFO_EUTRAN
Definition: gprs_bssgp_rim.h:35
BSSGP_CAUSE_INVAL_CONT_UI
@ BSSGP_CAUSE_INVAL_CONT_UI
Definition: gsm_08_18.h:292
BSSGP_IE_MBMS_SESSION_ID
@ BSSGP_IE_MBMS_SESSION_ID
Definition: gsm_08_18.h:193
BSSGP_CAUSE_PDU_INCOMP_STATE
@ BSSGP_CAUSE_PDU_INCOMP_STATE
Definition: gsm_08_18.h:286
ps_ho_request_ack_ies
static const uint8_t ps_ho_request_ack_ies[]
Definition: gprs_bssgp_util.c:242
bssgp_rim_routing_info
BSSGP RIM Routing information, see also 3GPP TS 48.018, section 11.3.70.
Definition: gprs_bssgp_rim.h:45
tvlv_put
static uint8_t * tvlv_put(uint8_t *buf, uint8_t tag, uint16_t len, const uint8_t *val)
osmo_prim_hdr::primitive
unsigned int primitive
osmo_fd::data
void * data
gprs_ns2_ip_vc_remote
const struct osmo_sockaddr * gprs_ns2_ip_vc_remote(const struct gprs_ns2_vc *nsvc)
Return the socket address of the remote peer of a NS-VC.
Definition: gprs_ns2_udp.c:446
BSSGP_PDUT_DELETE_BSS_PFC_REQ
@ BSSGP_PDUT_DELETE_BSS_PFC_REQ
Definition: gsm_08_18.h:71
GPRS_NS_LL_FR_GRE
@ GPRS_NS_LL_FR_GRE
NS/FR/GRE/IP.
Definition: gprs_ns.h:56
BSSGP_IE_TAG
@ BSSGP_IE_TAG
Definition: gsm_08_18.h:148
gprs_ns2_vc_bind::free_vc
void(* free_vc)(struct gprs_ns2_vc *nsvc)
free the vc priv data
Definition: gprs_ns2_internal.h:260
bssgp_app_err_cont_nacc
Definition: gprs_bssgp_rim.h:116
osmo_sockaddr_str
LOGL_ERROR
#define LOGL_ERROR
ul_mb_ud_ies
static const uint8_t ul_mb_ud_ies[]
Definition: gprs_bssgp_util.c:185
gprs_ns2_inst::binding
struct llist_head binding
linked lists of all NSVC binds (e.g.
Definition: gprs_ns2_internal.h:127
osmo_sockaddr_str::port
uint16_t port
gprs_ns2_inst::linkmon_mnl
struct osmo_mnl * linkmon_mnl
libmnl netlink socket for link state monitoring
Definition: gprs_ns2_internal.h:139
tlv_parsed
ns_signal_data::cause
uint8_t cause
Definition: gprs_ns.h:248
BSSGP_CAUSE_PFC_PREEMPTED
@ BSSGP_CAUSE_PFC_PREEMPTED
Definition: gsm_08_18.h:278
BSSGP_CAUSE_EQUIP_FAIL
@ BSSGP_CAUSE_EQUIP_FAIL
Definition: gsm_08_18.h:268
NS_STAT_ALIVE_DELAY
@ NS_STAT_ALIVE_DELAY
Definition: gprs_ns.c:167
ns2_tx_reset
int ns2_tx_reset(struct gprs_ns2_vc *nsvc, uint8_t cause)
Transmit a NS-RESET on a given NS-VC.
Definition: gprs_ns2_message.c:273
gprs_bssgp_bss.h
BSSGP_PDUT_POSITION_COMMAND
@ BSSGP_PDUT_POSITION_COMMAND
Definition: gsm_08_18.h:85
vty_out
vty_out(vty, "!%s", VTY_NEWLINE)
osmo_sock_get_name2
const char * osmo_sock_get_name2(int fd)
msgb::_data
unsigned char _data[0]
gprs_ns2_nse::nsei
uint16_t nsei
Definition: gprs_ns2_internal.h:145
BSSGP_CAUSE_MS_RADIO_LOSS
@ BSSGP_CAUSE_MS_RADIO_LOSS
Definition: gsm_08_18.h:304
NS_CAUSE_PDU_INCOMP_PSTATE
@ NS_CAUSE_PDU_INCOMP_PSTATE
Definition: gsm_08_16.h:91
NS_IE_IPv4_LIST
@ NS_IE_IPv4_LIST
Definition: gsm_08_16.h:72
S_SNS_CONFIGURED
@ S_SNS_CONFIGURED
Definition: gprs_ns.h:239
gprs_nsvc_by_nsvci
struct gprs_nsvc * gprs_nsvc_by_nsvci(struct gprs_ns_inst *nsi, uint16_t nsvci)
Lookup struct gprs_nsvc based on NSVCI.
Definition: gprs_ns.c:239
bssgp_ran_inf_ack_rim_cont::seq_num
uint32_t seq_num
Definition: gprs_bssgp_rim.h:191
msgb_tv_put
static uint8_t * msgb_tv_put(struct msgb *msg, uint8_t tag, uint8_t val)
ns_set_state
#define ns_set_state(ns_, st_)
Definition: gprs_ns.c:92
gprs_ns_close
void gprs_ns_close(struct gprs_ns_inst *nsi)
Definition: gprs_ns.c:1924
dl_ud_ies
static const uint8_t dl_ud_ies[]
Definition: gprs_bssgp_util.c:181
ns2_sns_notify_alive
void ns2_sns_notify_alive(struct gprs_ns2_nse *nse, struct gprs_ns2_vc *nsvc, bool alive)
Definition: gprs_ns2_sns.c:1827
GRE_PTYPE_IPv4
#define GRE_PTYPE_IPv4
Definition: gprs_ns2_frgre.c:51
SNS_PDUT_SIZE
@ SNS_PDUT_SIZE
Definition: gsm_08_16.h:60
bssgp_ran_inf_err_rim_cont::cause
uint8_t cause
Definition: gprs_bssgp_rim.h:206
BSSGP_CAUSE_DISTANCE
@ BSSGP_CAUSE_DISTANCE
Definition: gsm_08_18.h:301
stat_item.h
osmo_prim_hdr::sap
unsigned int sap
BSSGP_PDUT_PAGING_PS_REJECT
@ BSSGP_PDUT_PAGING_PS_REJECT
Definition: gsm_08_18.h:38
bssgp_ran_inf_ack_rim_cont::app_id
enum bssgp_ran_inf_app_id app_id
Definition: gprs_bssgp_rim.h:190
CELL_IDENT_WHOLE_GLOBAL_PS
CELL_IDENT_WHOLE_GLOBAL_PS
TLV_TYPE_TV
TLV_TYPE_TV
osmo_fr_rx
int osmo_fr_rx(struct msgb *msg)
Definition: frame_relay.c:769
TLVP_VAL
#define TLVP_VAL(x, y)
gprs_ns2_inst::timeout
uint16_t timeout[NS_TIMERS_COUNT]
Definition: gprs_ns2_internal.h:132
bssgp_app_err_cont_nacc::err_app_cont
const uint8_t * err_app_cont
Definition: gprs_bssgp_rim.h:120
BSSGP_IE_FEATURE_BITMAP
@ BSSGP_IE_FEATURE_BITMAP
Definition: gsm_08_18.h:161
NS_CAUSE_INVAL_ESSENT_IE
@ NS_CAUSE_INVAL_ESSENT_IE
Definition: gsm_08_16.h:93
gprs_ns_inst::fd
struct osmo_fd fd
Definition: gprs_ns.h:94
NS_STAT_ALIVE_DELAY
@ NS_STAT_ALIVE_DELAY
Definition: gprs_ns2_internal.h:76
gprs_ns2_frgre_bind
int gprs_ns2_frgre_bind(struct gprs_ns2_inst *nsi, const char *name, const struct osmo_sockaddr *local, int dscp, struct gprs_ns2_vc_bind **result)
Create a new bind for NS over FR-GRE.
Definition: gprs_ns2_frgre.c:544
gsm48_ra_id
d_pag_ps_rej_ies
static const uint8_t d_pag_ps_rej_ies[]
Definition: gprs_bssgp_util.c:199
gsm0808_cell_id_u
ns_signal_data::ie_type
uint8_t ie_type
Definition: gprs_ns.h:250
bssgp_pdu_str
const char * bssgp_pdu_str(enum bssgp_pdu_type pdu)
Definition: gprs_bssgp_util.c:489
bssgp_ran_inf_err_rim_cont::app_id
enum bssgp_ran_inf_app_id app_id
Definition: gprs_bssgp_rim.h:205
BVC_S_BLOCKED
#define BVC_S_BLOCKED
Definition: gprs_bssgp.h:104
bssgp_ran_inf_app_cont_nacc::type_psi
bool type_psi
Definition: gprs_bssgp_rim.h:89
gprs_ns2_fr_nsvc_by_dlci
struct gprs_ns2_vc * gprs_ns2_fr_nsvc_by_dlci(struct gprs_ns2_vc_bind *bind, uint16_t dlci)
Return the nsvc by dlci.
Definition: gprs_ns2_fr.c:1041
gprs_ns2_aff_cause_prim_strs
const struct value_string gprs_ns2_aff_cause_prim_strs[]
Definition: gprs_ns2.c:213
handle_nsfrgre_read
static int handle_nsfrgre_read(struct osmo_fd *bfd)
Definition: gprs_ns2_frgre.c:427
bssgp_ran_information_pdu::decoded
union bssgp_ran_information_pdu::@13 decoded
NS_CTR_INV_VCI
@ NS_CTR_INV_VCI
Definition: gprs_ns.c:137
fr_dlci_rx_cb
static int fr_dlci_rx_cb(void *cb_data, struct msgb *msg)
Definition: gprs_ns2_fr.c:286
osmo_cgi_ps_name_buf
char * osmo_cgi_ps_name_buf(char *buf, size_t buf_len, const struct osmo_cell_global_id_ps *cgi_ps)
misc.h
BSSGP_CAUSE_UNKNOWN_MS
@ BSSGP_CAUSE_UNKNOWN_MS
Definition: gsm_08_18.h:271
BSSGP_IE_GLOBAL_TFI
@ BSSGP_IE_GLOBAL_TFI
Definition: gsm_08_18.h:211
NS_TOUT_TNS_ALIVE
@ NS_TOUT_TNS_ALIVE
Definition: gprs_ns2_internal.h:60