libosmogb
1.9.0
Osmocom Gb library
|
Go to the documentation of this file.
23 unsigned int num_ip4_elems);
28 uint16_t *ip4_ep_nr, uint16_t *ip6_ep_nr);
#define Q931_PDISC_CC
Definition: frame_relay.c:105
static void fr_dlc_dump_vty(struct vty *vty, const struct osmo_fr_dlc *dlc)
Definition: frame_relay.c:1022
@ FR_ROLE_USER_EQUIPMENT
Definition: frame_relay.h:39
static int tx_lmi_q933_status_enq(struct osmo_fr_link *link, uint8_t rep_type)
Definition: frame_relay.c:293
int osmo_fr_tx_dlc(struct msgb *msg)
Definition: frame_relay.c:834
struct osmo_fr_network * net
Definition: frame_relay.h:70
uint8_t last_rx_seq
Definition: frame_relay.h:77
void * unknown_dlc_rx_cb_data
Definition: frame_relay.h:98
void(* status_cb)(struct osmo_fr_link *link, void *cb_data, bool active)
Definition: frame_relay.h:103
void osmo_fr_network_dump_vty(struct vty *vty, const struct osmo_fr_network *net)
Definition: frame_relay.c:1041
static struct msgb * msgb_alloc_headroom(uint16_t size, uint16_t headroom, const char *name)
static uint16_t q922_to_dlci(const uint8_t *hdr)
Definition: frame_relay.c:187
unsigned int n393
Definition: frame_relay.h:59
void osmo_fr_link_free(struct osmo_fr_link *link)
Definition: frame_relay.c:955
struct llist_head list
Definition: frame_relay.h:110
static uint8_t link_get_tx_seq(struct osmo_fr_link *link)
Definition: frame_relay.c:237
@ Q931_MSGT_RESUME_REJ
Definition: frame_relay.c:61
static int parse_full_pvc_status(struct osmo_fr_link *link, struct tlv_parsed *tp, size_t tp_len)
Definition: frame_relay.c:509
uint8_t last_tx_seq
Definition: frame_relay.h:81
@ Q931_MSGT_SUSPEND_ACK
Definition: frame_relay.c:63
static size_t len(const char *str)
static size_t count_pvc_status(struct tlv_parsed *tp, size_t tp_len)
Definition: frame_relay.c:628
static unsigned char * msgb_put(struct msgb *msgb, unsigned int len)
struct osmo_timer_list t392
Definition: frame_relay.h:84
@ Q931_MSGT_RESUME
Definition: frame_relay.c:59
static void fr_t392_cb(void *data)
Definition: frame_relay.c:883
uint8_t data[0]
variable-length payload
Definition: gsm_08_16.h:3
struct osmo_fr_dlc * osmo_fr_dlc_alloc(struct osmo_fr_link *link, uint16_t dlci)
Definition: frame_relay.c:974
int gprs_sns_bss_fsm_start(struct gprs_ns_inst *nsi)
Definition: gprs_ns_sns.c:680
@ Q933_IEI_REPORT_TYPE
Definition: frame_relay.c:90
static int rx_lmi_q933_status_enq(struct msgb *msg, struct tlv_parsed *tp)
Definition: frame_relay.c:368
static int tx_lmi_q933_status(struct osmo_fr_link *link, uint8_t rep_type)
Definition: frame_relay.c:311
#define TLVP_PRES_LEN(tp, tag, min_len)
static const char * osmo_fr_role_str(enum osmo_fr_role role)
Definition: frame_relay.h:50
@ Q931_MSGT_STATUS
Definition: frame_relay.c:76
uint8_t msg_type
Definition: frame_relay.c:4
static void link_set_failed(struct osmo_fr_link *link)
Definition: frame_relay.c:353
#define LMI_Q933A_CALLREF
Definition: frame_relay.c:106
struct osmo_tdef fr_tdefs[]
Definition: frame_relay.c:158
#define llist_for_each_entry_safe(pos, n, head, member)
static int rx_lmi_q922(struct msgb *msg)
Definition: frame_relay.c:712
@ Q931_MSGT_SUSPEND
Definition: frame_relay.c:62
@ Q931_MSGT_IFORMATION
Definition: frame_relay.c:74
void * cb_data
Definition: frame_relay.h:104
uint8_t prot_disc
Definition: frame_relay.c:119
int tlv_parse2(struct tlv_parsed *dec, int dec_multiples, const struct tlv_definition *def, const uint8_t *buf, int buf_len, uint8_t lv_tag, uint8_t lv_tag2)
void osmo_tdefs_reset(struct osmo_tdef *tdefs)
#define INIT_LLIST_HEAD(ptr)
@ Q931_MSGT_RESTART_ACK
Definition: frame_relay.c:70
uint8_t call_ref
Definition: frame_relay.c:120
const struct value_string osmo_fr_role_names[]
Definition: frame_relay.c:151
@ Q933_REPT_SINGLE_PVC_ASYNC_STS
Definition: frame_relay.c:85
#define LMI_CISCO_DLCI
Definition: frame_relay.c:110
@ Q931_MSGT_USER_INFO
Definition: frame_relay.c:64
uint16_t msgb_length(const struct msgb *msg)
Definition: frame_relay.h:67
static void llist_del(struct llist_head *entry)
An instance of the NS protocol stack.
Definition: gprs_ns.h:79
static void msgb_put_pvc_status(struct msgb *msg, struct osmo_fr_dlc *dlc)
Definition: frame_relay.c:264
bool add
Definition: frame_relay.h:118
static unsigned char * msgb_push(struct msgb *msgb, unsigned int len)
@ Q931_MSGT_STATUS_ENQUIRY
Definition: frame_relay.c:77
@ Q933_PVC_STATUS_DLC_ACTIVE
Definition: frame_relay.c:97
Section 10.3.2c List of IP4 Elements.
Definition: gsm_08_16.h:24
static unsigned int msgb_l3len(const struct msgb *msgb)
unsigned int err_count
Definition: frame_relay.h:87
bool state
Definition: frame_relay.h:91
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:918
@ Q931_MSGT_CONNECT_ACK
Definition: frame_relay.c:54
@ Q933_REPT_FULL_STATUS
Definition: frame_relay.c:83
@ Q931_MSGT_SETUP
Definition: frame_relay.c:56
void msgb_free(struct msgb *m)
bool state_send
Definition: frame_relay.h:124
#define MAX_SUPPORTED_PVC
Definition: frame_relay.c:113
struct osmo_fr_link * link
Definition: frame_relay.h:111
struct osmo_fr_dlc * osmo_fr_dlc_by_dlci(struct osmo_fr_link *link, uint16_t dlci)
Definition: frame_relay.c:1007
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:998
void osmo_timer_schedule(struct osmo_timer_list *timer, int seconds, int microseconds)
Definition: frame_relay.c:125
@ Q931_MSGT_ALERTING
Definition: frame_relay.c:51
unsigned int polling_count
Definition: frame_relay.h:86
unsigned int n392
Definition: frame_relay.h:58
static uint8_t * msgb_tlv_put(struct msgb *msg, uint8_t tag, uint8_t len, const uint8_t *val)
enum osmo_fr_role role
Definition: frame_relay.h:71
@ Q933_IEI_PVC_STATUS
Definition: frame_relay.c:92
Structure representing a single NS-VC.
Definition: gprs_ns.h:122
static void msgb_put_link_int_verif(struct msgb *msg, struct osmo_fr_link *link)
Definition: frame_relay.c:249
q933_type_of_report
Definition: frame_relay.c:82
const char * name
Definition: frame_relay.h:73
struct llist_head list
Definition: frame_relay.h:69
static struct msgb * q933_msgb_alloc(uint16_t dlci, uint8_t prot_disc, uint8_t msg_type)
Definition: frame_relay.c:212
void gprs_sns_dump_vty(struct vty *vty, const struct gprs_ns_inst *nsi, bool stats)
Definition: gprs_ns_sns.c:753
static void dlc_set_active(struct osmo_fr_dlc *dlc, bool active)
Definition: frame_relay.c:199
#define TLVP_PRESENT(x, y)
@ Q931_MSGT_CONNECT
Definition: frame_relay.c:53
struct osmo_tdef * T_defs
Definition: frame_relay.h:61
@ Q933_REPT_LINK_INTEGRITY_VERIF
Definition: frame_relay.c:84
static void fr_t391_cb(void *data)
Definition: frame_relay.c:869
Definition: frame_relay.h:54
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:873
static unsigned int msgb_l2len(const struct msgb *msgb)
void osmo_timer_setup(struct osmo_timer_list *timer, void(*cb)(void *data), void *data)
struct llist_head dlc_list
Definition: frame_relay.h:94
#define TLVP_VAL_MINLEN(_tp, tag, min_len)
unsigned long osmo_tdef_get(const struct osmo_tdef *tdefs, int T, enum osmo_tdef_unit as_unit, long val_if_not_present)
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
@ Q931_MSGT_RESUME_ACK
Definition: frame_relay.c:60
unsigned int n391
Definition: frame_relay.h:57
osmo_fr_role
Definition: frame_relay.h:38
#define llist_for_each_entry(pos, head, member)
#define LOGPFRL(frl, lvl, fmt, args ...)
Definition: frame_relay.c:43
uint16_t dlci
Definition: frame_relay.h:113
q933_pvc_status
Definition: frame_relay.c:96
static int rx_lmi_q933_status(struct msgb *msg, struct tlv_parsed *tp)
Definition: frame_relay.c:640
@ FR_ROLE_NETWORK_EQUIPMENT
Definition: frame_relay.h:40
@ Q931_MSGT_RELEASE_COMPLETE
Definition: frame_relay.c:68
#define LMI_Q933A_DLCI
Definition: frame_relay.c:109
void gprs_start_alive_all_nsvcs(struct gprs_ns_inst *nsi)
Definition: gprs_ns.c:2239
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:1038
@ Q931_MSGT_RESTART
Definition: frame_relay.c:69
static void llist_add_tail(struct llist_head *_new, struct llist_head *head)
static int parse_link_pvc_status(struct osmo_fr_link *link, struct tlv_parsed *tp, size_t tp_len)
Definition: frame_relay.c:578
int gprs_ns_rx_sns(struct gprs_ns_inst *nsi, struct msgb *msg, struct tlv_parsed *tp)
Definition: gprs_ns_sns.c:686
static void dlc_destroy(struct osmo_fr_dlc *dlc)
Definition: frame_relay.c:257
static void dlci_to_q922(uint8_t *hdr, uint16_t dlci)
Definition: frame_relay.c:193
void(* status_cb)(struct osmo_fr_dlc *dlc, void *cb_data, bool active)
Definition: frame_relay.h:129
#define LAPF_UI
Definition: frame_relay.c:104
void osmo_timer_del(struct osmo_timer_list *timer)
q931_msgtype
Definition: frame_relay.c:49
int gprs_sns_init(void)
Definition: gprs_ns_sns.c:736
@ Q933_PVC_STATUS_DLC_DELETE
Definition: frame_relay.c:98
Definition: frame_relay.c:118
@ Q931_MSGT_SETUP_ACK
Definition: frame_relay.c:57
bool active
Definition: frame_relay.h:116
uint8_t * msgb_data(const struct msgb *msg)
@ Q933_IEI_LINK_INT_VERIF
Definition: frame_relay.c:91
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:2229
struct osmo_fr_network * osmo_fr_network_alloc(void *ctx)
Definition: frame_relay.c:898
int osmo_fr_rx(struct msgb *msg)
Definition: frame_relay.c:769
int(* unknown_dlc_rx_cb)(void *cb_data, struct msgb *msg)
Definition: frame_relay.h:97
void * cb_data
Definition: frame_relay.h:130
static int validate_pvc_status(struct tlv_parsed *tp, size_t tp_len)
Definition: frame_relay.c:488
@ Q931_MSGT_PROGRESS
Definition: frame_relay.c:55
@ Q931_MSGT_CONGESTION_CONTROL
Definition: frame_relay.c:73
static void fr_link_dump_vty(struct vty *vty, const struct osmo_fr_link *link)
Definition: frame_relay.c:1029
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:959
static void check_link_state(struct osmo_fr_link *link, bool valid)
Definition: frame_relay.c:440
int(* rx_cb)(void *cb_data, struct msgb *msg)
Definition: frame_relay.h:127
struct q933_a_hdr __attribute__((packed))
@ Q931_MSGT_NOTIFY
Definition: frame_relay.c:75
Definition: frame_relay.h:108
@ Q931_MSGT_SEGMENT
Definition: frame_relay.c:72
q933_iei
Definition: frame_relay.c:89
void osmo_fr_network_free(struct osmo_fr_network *net)
Definition: frame_relay.c:914
struct osmo_fsm_inst * gprs_sns_bss_fsm_alloc(void *ctx, struct gprs_nsvc *nsvc, const char *id)
Definition: gprs_ns_sns.c:630
struct osmo_timer_list t391
Definition: frame_relay.h:83
int(* tx_cb)(void *data, struct msgb *msg)
Definition: frame_relay.h:101
uint8_t msg_type
Definition: frame_relay.c:121
static int msgb_headroom(const struct msgb *msgb)
void osmo_tdef_vty_out_all(struct vty *vty, struct osmo_tdef *tdefs, const char *prefix_fmt,...)
@ Q931_MSGT_RELEASE
Definition: frame_relay.c:67
@ Q931_MSGT_DISCONNECT
Definition: frame_relay.c:66
unsigned int succeed
Definition: frame_relay.h:88
void osmo_fr_dlc_free(struct osmo_fr_dlc *dlc)
Definition: frame_relay.c:992
vty_out(vty, "!%s", VTY_NEWLINE)
@ Q933_PVC_STATUS_DLC_NEW
Definition: frame_relay.c:99
@ Q931_MSGT_CALL_PROCEEDING
Definition: frame_relay.c:52
static const struct tlv_definition q933_att_tlvdef
Definition: frame_relay.c:177
bool del
Definition: frame_relay.h:120
uint8_t expected_rep
Definition: frame_relay.h:90
uint8_t prot_disc
Definition: frame_relay.c:2