Loading...
Searching...
No Matches
gprs_bssgp.h
Go to the documentation of this file.
#pragma once
#include <stdint.h>
#include <osmocom/core/timer.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/gsm/gsm48.h>
#include <osmocom/gsm/prim.h>
#include <osmocom/gprs/protocol/gsm_08_18.h>
#include <osmocom/gprs/protocol/gsm_24_301.h>
#include <osmocom/gprs/gprs_bssgp_rim.h>
/* gprs_bssgp_util.c */
#define BSSGP_PDUF_UL 0x0001 /* PDU may occur in uplink */
#define BSSGP_PDUF_DL 0x0002 /* PDU may occur in downlink */
#define BSSGP_PDUF_SIG 0x0004 /* PDU may occur on Signaling BVC */
#define BSSGP_PDUF_PTP 0x0008 /* PDU may occur on PTP BVC */
#define BSSGP_PDUF_PTM 0x0010 /* PDU may occur on PTM BVC */
extern const struct osmo_tlv_prot_def osmo_pdef_bssgp;
static inline uint32_t bssgp_pdu_type_flags(uint8_t pdu_type) {
return osmo_tlv_prot_msgt_flags(&osmo_pdef_bssgp, pdu_type);
}
typedef int (*bssgp_bvc_send)(void *ctx, struct msgb *msg);
extern struct gprs_ns_inst *bssgp_nsi;
void bssgp_set_bssgp_callback(bssgp_bvc_send ns_send, void *data);
struct msgb *bssgp_msgb_alloc(void);
struct msgb *bssgp_msgb_copy(const struct msgb *msg, const char *name);
const char *bssgp_cause_str(enum gprs_bssgp_cause cause);
const char *bssgp_pdu_str(enum bssgp_pdu_type pdu);
int bssgp_tx_bvc_reset_nsei_bvci(uint16_t nsei, uint16_t bvci, enum gprs_bssgp_cause cause, const struct gprs_ra_id *ra_id, uint16_t cell_id);
/* Transmit a simple response such as BLOCK/UNBLOCK/RESET ACK/NACK */
int bssgp_tx_simple_bvci(uint8_t pdu_type, uint16_t nsei,
uint16_t bvci, uint16_t ns_bvci);
/* Chapter 10.4.14: Status */
int bssgp_tx_status(uint8_t cause, uint16_t *bvci, struct msgb *orig_msg);
enum bssgp_prim {
PRIM_BSSGP_DL_UD,
PRIM_BSSGP_UL_UD,
PRIM_BSSGP_PTM_UD,
PRIM_BSSGP_GMM_SUSPEND,
PRIM_BSSGP_GMM_RESUME,
PRIM_BSSGP_GMM_PAGING,
PRIM_NM_FLUSH_LL,
PRIM_NM_LLC_DISCARDED,
PRIM_NM_BVC_RESET,
PRIM_NM_BVC_BLOCK,
PRIM_NM_BVC_UNBLOCK,
PRIM_NM_STATUS,
PRIM_BSSGP_RIM_PDU_TRANSFER,
};
struct osmo_bssgp_prim {
struct osmo_prim_hdr oph;
/* common fields */
uint16_t nsei;
uint16_t bvci;
uint32_t tlli;
struct tlv_parsed *tp;
struct gprs_ra_id *ra_id;
/* specific fields */
union {
struct {
uint8_t suspend_ref;
} resume;
struct bssgp_ran_information_pdu rim_pdu;
} u;
};
/* gprs_bssgp.c */
struct bssgp_flow_control {
uint32_t bucket_size_max;
uint32_t bucket_leak_rate;
uint32_t bucket_counter;
struct timeval time_last_pdu;
/* the built-in queue */
uint32_t max_queue_depth;
uint32_t queue_depth;
struct llist_head queue;
struct osmo_timer_list timer;
int (*out_cb)(struct bssgp_flow_control *fc, struct msgb *msg,
uint32_t llc_pdu_len, void *priv);
};
#define BVC_S_BLOCKED 0x0001
/* The per-BTS context that we keep on the SGSN side of the BSSGP link */
struct bssgp_bvc_ctx {
struct llist_head list;
struct gprs_ra_id ra_id;
uint16_t cell_id;
/* NSEI and BVCI of underlying Gb link. Together they
* uniquely identify a link to a BTS (5.4.4) */
uint16_t bvci;
uint16_t nsei;
uint32_t state;
struct rate_ctr_group *ctrg;
struct bssgp_flow_control *fc;
uint32_t bmax_default_ms;
uint32_t r_default_ms;
bool is_sgsn;
/* we might want to add this as a shortcut later, avoiding the NSVC
* lookup for every packet, similar to a routing cache */
//struct gprs_nsvc *nsvc;
};
extern struct llist_head bssgp_bvc_ctxts;
/* Create a BTS Context with BVCI+NSEI */
struct bssgp_bvc_ctx *btsctx_alloc(uint16_t bvci, uint16_t nsei);
/* Find a BTS Context based on parsed RA ID and Cell ID */
struct bssgp_bvc_ctx *btsctx_by_raid_cid(const struct gprs_ra_id *raid, uint16_t cid);
/* Find a BTS context based on BVCI+NSEI tuple */
struct bssgp_bvc_ctx *btsctx_by_bvci_nsei(uint16_t bvci, uint16_t nsei);
/* Free a given BTS context */
void bssgp_bvc_ctx_free(struct bssgp_bvc_ctx *ctx);
#define BVC_F_BLOCKED 0x0001
enum bssgp_ctr {
BSSGP_CTR_PKTS_IN,
BSSGP_CTR_PKTS_OUT,
BSSGP_CTR_BYTES_IN,
BSSGP_CTR_BYTES_OUT,
BSSGP_CTR_BLOCKED,
BSSGP_CTR_DISCARDED,
BSSGP_CTR_STATUS,
};
#include <osmocom/gsm/tlv.h>
#include <osmocom/gprs/gprs_msgb.h>
/* BSSGP-UL-UNITDATA.ind */
int bssgp_rcvmsg(struct msgb *msg);
/* BSSGP-DL-UNITDATA.req */
struct bssgp_lv {
uint16_t len;
uint8_t *v;
};
/* parameters for BSSGP downlink userdata transmission */
struct bssgp_dl_ud_par {
uint32_t *tlli;
char *imsi;
struct bssgp_flow_control *fc;
uint16_t drx_parms;
/* FIXME: priority */
struct bssgp_lv ms_ra_cap;
uint8_t qos_profile[3];
};
int bssgp_tx_dl_ud(struct msgb *msg, uint16_t pdu_lifetime,
struct bssgp_dl_ud_par *dup);
uint16_t bssgp_parse_cell_id(struct gprs_ra_id *raid, const uint8_t *buf);
int bssgp_create_cell_id(uint8_t *buf, const struct gprs_ra_id *raid,
uint16_t cid);
int bssgp_parse_cell_id2(struct osmo_routing_area_id *raid, uint16_t *cid,
const uint8_t *buf, size_t buf_len);
int bssgp_create_cell_id2(uint8_t *buf, size_t buf_len,
const struct osmo_routing_area_id *raid,
uint16_t cid);
/* Wrapper around TLV parser to parse BSSGP IEs */
static inline int bssgp_tlv_parse(struct tlv_parsed *tp, const uint8_t *buf, int len)
{
return tlv_parse(tp, &tvlv_att_def, buf, len, 0, 0);
}
enum bssgp_paging_mode {
BSSGP_PAGING_PS,
BSSGP_PAGING_CS,
};
enum bssgp_paging_scope {
BSSGP_PAGING_BSS_AREA,
BSSGP_PAGING_LOCATION_AREA,
BSSGP_PAGING_ROUTEING_AREA,
BSSGP_PAGING_BVCI,
};
struct bssgp_paging_info {
enum bssgp_paging_mode mode;
enum bssgp_paging_scope scope;
struct gprs_ra_id raid;
uint16_t bvci;
char *imsi;
uint32_t *ptmsi;
uint16_t drx_params;
uint8_t qos[3];
};
/* Send a single GMM-PAGING.req to a given NSEI/NS-BVCI */
int bssgp_tx_paging(uint16_t nsei, uint16_t ns_bvci,
struct bssgp_paging_info *pinfo);
void bssgp_fc_init(struct bssgp_flow_control *fc,
uint32_t bucket_size_max, uint32_t bucket_leak_rate,
uint32_t max_queue_depth,
int (*out_cb)(struct bssgp_flow_control *fc, struct msgb *msg,
uint32_t llc_pdu_len, void *priv));
/* input function of the flow control implementation, called first
* for the MM flow control, and then as the MM flow control output
* callback in order to perform BVC flow control */
int bssgp_fc_in(struct bssgp_flow_control *fc, struct msgb *msg,
uint32_t llc_pdu_len, void *priv);
/* Initialize the Flow Control parameters for a new MS according to
* default values for the BVC specified by BVCI and NSEI */
int bssgp_fc_ms_init(struct bssgp_flow_control *fc_ms, uint16_t bvci,
uint16_t nsei, uint32_t max_queue_depth);
void bssgp_flush_all_queues(void);
void bssgp_fc_flush_queue(struct bssgp_flow_control *fc);
/* gprs_bssgp_vty.c */
int bssgp_vty_init(void);
void bssgp_set_log_ss(int ss) OSMO_DEPRECATED("Use DLBSSGP instead!\n");
int bssgp_prim_cb(struct osmo_prim_hdr *oph, void *ctx);
bssgp_msgb_copy
struct msgb * bssgp_msgb_copy(const struct msgb *msg, const char *name)
Definition gprs_bssgp_util.c:505
bssgp_rcvmsg
int bssgp_rcvmsg(struct msgb *msg)
Definition gprs_bssgp.c:1191
bssgp_fc_flush_queue
void bssgp_fc_flush_queue(struct bssgp_flow_control *fc)
Flush the queue of the bssgp_flow_control.
Definition gprs_bssgp.c:1451
btsctx_alloc
struct bssgp_bvc_ctx * btsctx_alloc(uint16_t bvci, uint16_t nsei)
Definition gprs_bssgp.c:209
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_paging_mode
bssgp_paging_mode
BSSGP Paging mode.
Definition gprs_bssgp.h:198
BSSGP_PAGING_PS
@ BSSGP_PAGING_PS
Definition gprs_bssgp.h:199
BSSGP_PAGING_CS
@ BSSGP_PAGING_CS
Definition gprs_bssgp.h:200
bssgp_prim
bssgp_prim
Definition gprs_bssgp.h:45
PRIM_NM_BVC_UNBLOCK
@ PRIM_NM_BVC_UNBLOCK
Definition gprs_bssgp.h:58
PRIM_BSSGP_PTM_UD
@ PRIM_BSSGP_PTM_UD
Definition gprs_bssgp.h:48
PRIM_BSSGP_GMM_SUSPEND
@ PRIM_BSSGP_GMM_SUSPEND
Definition gprs_bssgp.h:50
PRIM_NM_STATUS
@ PRIM_NM_STATUS
Definition gprs_bssgp.h:59
PRIM_NM_FLUSH_LL
@ PRIM_NM_FLUSH_LL
Definition gprs_bssgp.h:54
PRIM_BSSGP_GMM_RESUME
@ PRIM_BSSGP_GMM_RESUME
Definition gprs_bssgp.h:51
PRIM_BSSGP_GMM_PAGING
@ PRIM_BSSGP_GMM_PAGING
Definition gprs_bssgp.h:52
PRIM_NM_BVC_BLOCK
@ PRIM_NM_BVC_BLOCK
Definition gprs_bssgp.h:57
PRIM_NM_BVC_RESET
@ PRIM_NM_BVC_RESET
Definition gprs_bssgp.h:56
PRIM_NM_LLC_DISCARDED
@ PRIM_NM_LLC_DISCARDED
Definition gprs_bssgp.h:55
PRIM_BSSGP_DL_UD
@ PRIM_BSSGP_DL_UD
Definition gprs_bssgp.h:46
PRIM_BSSGP_RIM_PDU_TRANSFER
@ PRIM_BSSGP_RIM_PDU_TRANSFER
Definition gprs_bssgp.h:61
PRIM_BSSGP_UL_UD
@ PRIM_BSSGP_UL_UD
Definition gprs_bssgp.h:47
btsctx_by_bvci_nsei
struct bssgp_bvc_ctx * btsctx_by_bvci_nsei(uint16_t bvci, uint16_t nsei)
Definition gprs_bssgp.c:192
bssgp_pdu_type_flags
static uint32_t bssgp_pdu_type_flags(uint8_t pdu_type)
return the PDU type flags (UL/DL/SIG/PTP/PTM) of specified PDU type
Definition gprs_bssgp.h:27
bssgp_prim_cb
int bssgp_prim_cb(struct osmo_prim_hdr *oph, void *ctx)
osmo_pdef_bssgp
const struct osmo_tlv_prot_def osmo_pdef_bssgp
Definition gprs_bssgp_util.c:261
bssgp_parse_cell_id2
int bssgp_parse_cell_id2(struct osmo_routing_area_id *raid, uint16_t *cid, const uint8_t *buf, size_t buf_len)
Parse the value of a BSSGP Cell identity (04.08 RAI + Cell Id).
Definition gprs_bssgp.c:357
bssgp_set_bssgp_callback
void bssgp_set_bssgp_callback(bssgp_bvc_send ns_send, void *data)
Definition gprs_bssgp.c:203
bssgp_create_cell_id2
int bssgp_create_cell_id2(uint8_t *buf, size_t buf_len, const struct osmo_routing_area_id *raid, uint16_t cid)
Encode the 04.08 RAI, Cell Id into BSSGP Cell identity.
Definition gprs_bssgp.c:386
bssgp_nsi
struct gprs_ns_inst * bssgp_nsi
Definition gprs_bssgp_util.c:37
bssgp_parse_cell_id
uint16_t bssgp_parse_cell_id(struct gprs_ra_id *raid, const uint8_t *buf)
Definition gprs_bssgp.c:348
bssgp_fc_ms_init
int bssgp_fc_ms_init(struct bssgp_flow_control *fc_ms, uint16_t bvci, uint16_t nsei, uint32_t max_queue_depth)
Definition gprs_bssgp.c:934
bssgp_bvc_send
int(* bssgp_bvc_send)(void *ctx, struct msgb *msg)
Definition gprs_bssgp.h:31
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:374
bssgp_bvc_ctx_free
void bssgp_bvc_ctx_free(struct bssgp_bvc_ctx *ctx)
Definition gprs_bssgp.c:241
bssgp_tx_paging
int bssgp_tx_paging(uint16_t nsei, uint16_t ns_bvci, struct bssgp_paging_info *pinfo)
Definition gprs_bssgp.c:1371
bssgp_pdu_str
const char * bssgp_pdu_str(enum bssgp_pdu_type pdu)
Definition gprs_bssgp_util.c:489
bssgp_cause_str
const char * bssgp_cause_str(enum gprs_bssgp_cause cause)
Definition gprs_bssgp_util.c:484
bssgp_bvc_ctxts
struct llist_head bssgp_bvc_ctxts
bssgp_ctr
bssgp_ctr
Definition gprs_bssgp.h:146
BSSGP_CTR_DISCARDED
@ BSSGP_CTR_DISCARDED
Definition gprs_bssgp.h:152
BSSGP_CTR_PKTS_IN
@ BSSGP_CTR_PKTS_IN
Definition gprs_bssgp.h:147
BSSGP_CTR_BYTES_OUT
@ BSSGP_CTR_BYTES_OUT
Definition gprs_bssgp.h:150
BSSGP_CTR_PKTS_OUT
@ BSSGP_CTR_PKTS_OUT
Definition gprs_bssgp.h:148
BSSGP_CTR_BLOCKED
@ BSSGP_CTR_BLOCKED
Definition gprs_bssgp.h:151
BSSGP_CTR_STATUS
@ BSSGP_CTR_STATUS
Definition gprs_bssgp.h:153
BSSGP_CTR_BYTES_IN
@ BSSGP_CTR_BYTES_IN
Definition gprs_bssgp.h:149
bssgp_vty_init
int bssgp_vty_init(void)
Definition gprs_bssgp_vty.c:206
bssgp_paging_scope
bssgp_paging_scope
BSSGP Paging scope.
Definition gprs_bssgp.h:204
BSSGP_PAGING_ROUTEING_AREA
@ BSSGP_PAGING_ROUTEING_AREA
all cells in RA
Definition gprs_bssgp.h:207
BSSGP_PAGING_LOCATION_AREA
@ BSSGP_PAGING_LOCATION_AREA
all cells in LA
Definition gprs_bssgp.h:206
BSSGP_PAGING_BVCI
@ BSSGP_PAGING_BVCI
one cell
Definition gprs_bssgp.h:208
BSSGP_PAGING_BSS_AREA
@ BSSGP_PAGING_BSS_AREA
all cells in BSS
Definition gprs_bssgp.h:205
bssgp_flush_all_queues
void bssgp_flush_all_queues(void)
Flush the queues of all BSSGP contexts.
Definition gprs_bssgp.c:1465
bssgp_msgb_alloc
struct msgb * bssgp_msgb_alloc(void)
Definition gprs_bssgp_util.c:494
bssgp_set_log_ss
void bssgp_set_log_ss(int ss) OSMO_DEPRECATED("Use DLBSSGP instead!\n")
Definition gprs_bssgp.c:1440
bssgp_tx_dl_ud
int bssgp_tx_dl_ud(struct msgb *msg, uint16_t pdu_lifetime, struct bssgp_dl_ud_par *dup)
Definition gprs_bssgp.c:1266
bssgp_fc_init
void bssgp_fc_init(struct bssgp_flow_control *fc, uint32_t bucket_size_max, uint32_t bucket_leak_rate, uint32_t max_queue_depth, int(*out_cb)(struct bssgp_flow_control *fc, struct msgb *msg, uint32_t llc_pdu_len, void *priv))
Definition gprs_bssgp.c:918
bssgp_tx_status
int bssgp_tx_status(uint8_t cause, uint16_t *bvci, struct msgb *orig_msg)
Definition gprs_bssgp_util.c:555
bssgp_tlv_parse
static int bssgp_tlv_parse(struct tlv_parsed *tp, const uint8_t *buf, int len)
Definition gprs_bssgp.h:192
bssgp_fc_in
int bssgp_fc_in(struct bssgp_flow_control *fc, struct msgb *msg, uint32_t llc_pdu_len, void *priv)
Definition gprs_bssgp.c:889
btsctx_by_raid_cid
struct bssgp_bvc_ctx * btsctx_by_raid_cid(const struct gprs_ra_id *raid, uint16_t cid)
Definition gprs_bssgp.c:85
bssgp_tx_bvc_reset_nsei_bvci
int bssgp_tx_bvc_reset_nsei_bvci(uint16_t nsei, uint16_t bvci, enum gprs_bssgp_cause cause, const struct gprs_ra_id *ra_id, uint16_t cell_id)
Transmit a BVC-RESET message with a given nsei and bvci (Chapter 10.4.12).
Definition gprs_bssgp.c:149
gprs_bssgp_rim.h
gprs_msgb.h
bvci
uint16_t bvci
Definition gprs_msgb.h:8
nsei
uint16_t nsei
Identifiers of a BTS, equal to 'struct bssgp_bts_ctx'.
Definition gprs_msgb.h:7
pdu_type
uint8_t pdu_type
NS PDU type.
Definition gsm_08_16.h:0
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)
tvlv_att_def
struct tlv_definition tvlv_att_def
osmo_tlv_prot_msgt_flags
static uint32_t osmo_tlv_prot_msgt_flags(const struct osmo_tlv_prot_def *pdef, uint8_t msg_type)
OSMO_DEPRECATED
#define OSMO_DEPRECATED(text)
gsm48.h
data
uint8_t data[0]
cause
uint8_t cause
ra_id
uint8_t ra_id[6]
len
uint8_t len
msg
uint8_t msg[0]
gsm_08_18.h
bssgp_pdu_type
bssgp_pdu_type
BSSGP PDU types (Section 11.3.26 / Table 11.27).
Definition gsm_08_18.h:17
gprs_bssgp_cause
gprs_bssgp_cause
Cause coding (Section 11.3.8 / Table 11.10).
Definition gsm_08_18.h:266
gsm_24_301.h
name
char name[32]
linuxlist.h
prim.h
bssgp_bvc_ctx
Definition gprs_bssgp.h:107
bssgp_bvc_ctx::list
struct llist_head list
Definition gprs_bssgp.h:108
bssgp_bvc_ctx::bvci
uint16_t bvci
Definition gprs_bssgp.h:115
bssgp_bvc_ctx::ra_id
struct gprs_ra_id ra_id
parsed RA ID of the remote BTS
Definition gprs_bssgp.h:110
bssgp_bvc_ctx::fc
struct bssgp_flow_control * fc
Definition gprs_bssgp.h:122
bssgp_bvc_ctx::cell_id
uint16_t cell_id
Cell ID of the remote BTS.
Definition gprs_bssgp.h:111
bssgp_bvc_ctx::r_default_ms
uint32_t r_default_ms
default bucket leak rate of per-MS bucket in octests/s
Definition gprs_bssgp.h:126
bssgp_bvc_ctx::ctrg
struct rate_ctr_group * ctrg
Definition gprs_bssgp.h:120
bssgp_bvc_ctx::nsei
uint16_t nsei
Definition gprs_bssgp.h:116
bssgp_bvc_ctx::is_sgsn
bool is_sgsn
BSS or SGSN.
Definition gprs_bssgp.h:129
bssgp_bvc_ctx::state
uint32_t state
Definition gprs_bssgp.h:118
bssgp_bvc_ctx::bmax_default_ms
uint32_t bmax_default_ms
default maximum size of per-MS bucket in octets
Definition gprs_bssgp.h:124
bssgp_dl_ud_par
Definition gprs_bssgp.h:169
bssgp_dl_ud_par::imsi
char * imsi
Definition gprs_bssgp.h:171
bssgp_dl_ud_par::tlli
uint32_t * tlli
Definition gprs_bssgp.h:170
bssgp_dl_ud_par::fc
struct bssgp_flow_control * fc
Definition gprs_bssgp.h:172
bssgp_dl_ud_par::qos_profile
uint8_t qos_profile[3]
Definition gprs_bssgp.h:176
bssgp_dl_ud_par::ms_ra_cap
struct bssgp_lv ms_ra_cap
Definition gprs_bssgp.h:175
bssgp_dl_ud_par::drx_parms
uint16_t drx_parms
Definition gprs_bssgp.h:173
bssgp_flow_control
BSSGP flow control (SGSN side) According to Section 8.2.
Definition gprs_bssgp.h:86
bssgp_flow_control::time_last_pdu
struct timeval time_last_pdu
timestamp of last PDU sent
Definition gprs_bssgp.h:91
bssgp_flow_control::bucket_counter
uint32_t bucket_counter
number of tokens in the bucket
Definition gprs_bssgp.h:90
bssgp_flow_control::queue
struct llist_head queue
linked list of msgb's
Definition gprs_bssgp.h:96
bssgp_flow_control::max_queue_depth
uint32_t max_queue_depth
how many packets to queue (mgs)
Definition gprs_bssgp.h:94
bssgp_flow_control::timer
struct osmo_timer_list timer
timer-based dequeueing
Definition gprs_bssgp.h:97
bssgp_flow_control::out_cb
int(* out_cb)(struct bssgp_flow_control *fc, struct msgb *msg, uint32_t llc_pdu_len, void *priv)
callback to be called at output of flow control
Definition gprs_bssgp.h:100
bssgp_flow_control::bucket_size_max
uint32_t bucket_size_max
maximum size of the bucket (octets)
Definition gprs_bssgp.h:87
bssgp_flow_control::queue_depth
uint32_t queue_depth
current length of queue (msgs)
Definition gprs_bssgp.h:95
bssgp_flow_control::bucket_leak_rate
uint32_t bucket_leak_rate
leak rate of the bucket (octets/sec)
Definition gprs_bssgp.h:88
bssgp_lv
Definition gprs_bssgp.h:164
bssgp_lv::v
uint8_t * v
Definition gprs_bssgp.h:166
bssgp_lv::len
uint16_t len
Definition gprs_bssgp.h:165
bssgp_paging_info
BSSGP paging information.
Definition gprs_bssgp.h:212
bssgp_paging_info::imsi
char * imsi
IMSI, if any.
Definition gprs_bssgp.h:217
bssgp_paging_info::scope
enum bssgp_paging_scope scope
bssgp_paging_scope
Definition gprs_bssgp.h:214
bssgp_paging_info::qos
uint8_t qos[3]
QoS parameters.
Definition gprs_bssgp.h:220
bssgp_paging_info::drx_params
uint16_t drx_params
DRX parameters.
Definition gprs_bssgp.h:219
bssgp_paging_info::mode
enum bssgp_paging_mode mode
CS or PS paging.
Definition gprs_bssgp.h:213
bssgp_paging_info::raid
struct gprs_ra_id raid
RA Identifier.
Definition gprs_bssgp.h:215
bssgp_paging_info::bvci
uint16_t bvci
BVCI.
Definition gprs_bssgp.h:216
bssgp_paging_info::ptmsi
uint32_t * ptmsi
P-TMSI, if any.
Definition gprs_bssgp.h:218
bssgp_ran_information_pdu
Definition gprs_bssgp_rim.h:242
gprs_ns_inst
An instance of the NS protocol stack.
Definition gprs_ns.h:79
gprs_ra_id
llist_head
msgb
osmo_bssgp_prim
Definition gprs_bssgp.h:64
osmo_bssgp_prim::suspend_ref
uint8_t suspend_ref
Definition gprs_bssgp.h:77
osmo_bssgp_prim::bvci
uint16_t bvci
Definition gprs_bssgp.h:69
osmo_bssgp_prim::u
union osmo_bssgp_prim::@136375006256266230145172357315226037304146327204 u
osmo_bssgp_prim::tp
struct tlv_parsed * tp
Definition gprs_bssgp.h:71
osmo_bssgp_prim::rim_pdu
struct bssgp_ran_information_pdu rim_pdu
Definition gprs_bssgp.h:79
osmo_bssgp_prim::oph
struct osmo_prim_hdr oph
Definition gprs_bssgp.h:65
osmo_bssgp_prim::nsei
uint16_t nsei
Definition gprs_bssgp.h:68
osmo_bssgp_prim::tlli
uint32_t tlli
Definition gprs_bssgp.h:70
osmo_bssgp_prim::ra_id
struct gprs_ra_id * ra_id
Definition gprs_bssgp.h:72
osmo_prim_hdr
osmo_routing_area_id
osmo_timer_list
osmo_tlv_prot_def
rate_ctr_group
tlv_parsed
timer.h
tlv.h