libosmogb  1.5.1.205-e67e
Osmocom Gb library
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules
gprs_bssgp_util.c File Reference

GPRS BSSGP protocol implementation as per 3GPP TS 08.18. More...

#include <errno.h>
#include <stdint.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/byteswap.h>
#include <osmocom/gsm/tlv.h>
#include <osmocom/core/talloc.h>
#include <osmocom/gprs/gprs_bssgp.h>
#include <osmocom/gprs/gprs_ns.h>
#include "gprs_bssgp_internal.h"

Macros

#define DL   BSSGP_PDUF_DL
 
#define UL   BSSGP_PDUF_UL
 
#define SIG   BSSGP_PDUF_SIG
 
#define PTP   BSSGP_PDUF_PTP
 
#define PTM   BSSGP_PDUF_PTM
 

Functions

const char * bssgp_cause_str (enum gprs_bssgp_cause cause)
 
const char * bssgp_pdu_str (enum bssgp_pdu_type pdu)
 
struct msgbbssgp_msgb_alloc (void)
 
struct msgbbssgp_msgb_copy (const struct msgb *msg, const char *name)
 
int bssgp_tx_simple_bvci (uint8_t pdu_type, uint16_t nsei, uint16_t bvci, uint16_t ns_bvci)
 
int bssgp_tx_status (uint8_t cause, uint16_t *bvci, struct msgb *orig_msg)
 

Variables

struct gprs_ns_instbssgp_nsi
 
static const struct value_string bssgp_cause_strings []
 
static const struct value_string bssgp_pdu_strings []
 
static const uint8_t dl_ud_ies [] = { BSSGP_IE_PDU_LIFETIME }
 
static const uint8_t ul_ud_ies [] = { BSSGP_IE_CELL_ID }
 
static const uint8_t ra_cap_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_MS_RADIO_ACCESS_CAP }
 
static const uint8_t dl_mb_ud_ies [] = { BSSGP_IE_PDU_LIFETIME, BSSGP_IE_TMGI, BSSGP_IE_LLC_PDU }
 
static const uint8_t ul_mb_ud_ies [] = { BSSGP_IE_PDU_LIFETIME, BSSGP_IE_TMGI, BSSGP_IE_LLC_PDU }
 
static const uint8_t pag_ps_ies [] = { BSSGP_IE_IMSI, BSSGP_IE_QOS_PROFILE }
 
static const uint8_t pag_cs_ies [] = { BSSGP_IE_IMSI, BSSGP_IE_DRX_PARAMS }
 
static const uint8_t ra_cap_upd_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_TAG }
 
static const uint8_t ra_cap_upd_ack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_TAG, BSSGP_IE_RA_CAP_UPD_CAUSE }
 
static const uint8_t rad_sts_ies [] = { BSSGP_IE_RADIO_CAUSE }
 
static const uint8_t suspend_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA }
 
static const uint8_t suspend_ack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA, BSSGP_IE_SUSPEND_REF_NR }
 
static const uint8_t suspend_nack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA }
 
static const uint8_t resume_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA, BSSGP_IE_SUSPEND_REF_NR }
 
static const uint8_t resume_ack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA }
 
static const uint8_t resume_nack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA }
 
static const uint8_t d_pag_ps_ies [] = { BSSGP_IE_IMSI }
 
static const uint8_t d_pag_ps_resp_ies [] = { BSSGP_IE_IMSI, BSSGP_IE_T_UNTIL_NEXT_PAGING }
 
static const uint8_t d_pag_ps_rej_ies [] = { BSSGP_IE_IMSI, BSSGP_IE_T_UNTIL_NEXT_PAGING }
 
static const uint8_t ms_reg_enq_ies [] = { BSSGP_IE_IMSI }
 
static const uint8_t ms_reg_enq_res_ies [] = { BSSGP_IE_IMSI }
 
static const uint8_t flush_ll_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_BVCI }
 
static const uint8_t flush_ll_ack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_FLUSH_ACTION }
 
static const uint8_t llc_disc_ies []
 
static const uint8_t fc_bvc_ies []
 
static const uint8_t fc_bvc_ack_ies [] = { BSSGP_IE_TAG }
 
static const uint8_t fc_ms_ies []
 
static const uint8_t fc_ms_ack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_TAG }
 
static const uint8_t block_ies [] = { BSSGP_IE_BVCI, BSSGP_IE_CAUSE }
 
static const uint8_t block_ack_ies [] = { BSSGP_IE_BVCI }
 
static const uint8_t unblock_ies [] = { BSSGP_IE_BVCI }
 
static const uint8_t unblock_ack_ies [] = { BSSGP_IE_BVCI }
 
static const uint8_t reset_ies [] = { BSSGP_IE_BVCI, BSSGP_IE_CAUSE }
 
static const uint8_t reset_ack_ies [] = { BSSGP_IE_BVCI }
 
static const uint8_t status_ies [] = { BSSGP_IE_CAUSE }
 
static const uint8_t inv_trc_ies [] = { BSSGP_IE_TRACE_TYPE, BSSGP_IE_TRACE_REFERENC }
 
static const uint8_t dl_bss_pfc_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_PACKET_FLOW_ID }
 
static const uint8_t crt_bss_pfc_ies []
 
static const uint8_t crt_bss_pfc_ack_ies []
 
static const uint8_t crt_bss_pfc_nack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_PACKET_FLOW_ID, BSSGP_IE_CAUSE }
 
static const uint8_t mod_bss_pfc_ies []
 
static const uint8_t mod_bss_pfc_ack_ies []
 
static const uint8_t del_bss_pfc_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_PACKET_FLOW_ID }
 
static const uint8_t del_bss_pfc_ack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_PACKET_FLOW_ID }
 
static const uint8_t fc_pfc_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_TAG, BSSGP_IE_PFC_FLOW_CTRL_PARAMS }
 
static const uint8_t fc_pfc_ack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_TAG }
 
static const uint8_t del_bss_pfc_req_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_PACKET_FLOW_ID, BSSGP_IE_CAUSE }
 
static const uint8_t ps_ho_required_ies []
 
static const uint8_t ps_ho_required_ack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_LIST_OF_SETUP_PFC }
 
static const uint8_t ps_ho_required_nack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_CAUSE }
 
static const uint8_t ps_ho_request_ies []
 
static const uint8_t ps_ho_request_ack_ies []
 
static const uint8_t ps_ho_request_nack_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_CAUSE }
 
static const uint8_t ps_ho_compl_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_IMSI }
 
static const uint8_t ps_ho_cancel_ies [] = { BSSGP_IE_TLLI, BSSGP_IE_CAUSE, BSSGP_IE_CELL_ID }
 
static const uint8_t ps_ho_compl_ack_ies [] = { BSSGP_IE_TLLI }
 
static const uint8_t overload_ies [] = { BSSGP_IE_PRIO_CLASS_IND }
 
static const uint8_t rinfo_ies [] = { BSSGP_IE_RIM_ROUTING_INFO, BSSGP_IE_RI_RIM_CONTAINER }
 
static const uint8_t rinfo_req_ies [] = { BSSGP_IE_RIM_ROUTING_INFO, BSSGP_IE_RI_REQ_RIM_CONTAINER }
 
static const uint8_t rinfo_ack_ies [] = { BSSGP_IE_RIM_ROUTING_INFO, BSSGP_IE_RI_ACK_RIM_CONTAINER }
 
static const uint8_t rinfo_err_ies [] = { BSSGP_IE_RIM_ROUTING_INFO, BSSGP_IE_RI_ERROR_RIM_COINTAINER }
 
static const uint8_t rinfo_aerr_ies [] = { BSSGP_IE_RIM_ROUTING_INFO, BSSGP_IE_RI_APP_ERROR_RIM_CONT }
 
const struct osmo_tlv_prot_def osmo_pdef_bssgp
 

Detailed Description

GPRS BSSGP protocol implementation as per 3GPP TS 08.18.

Macro Definition Documentation

#define DL   BSSGP_PDUF_DL
#define PTM   BSSGP_PDUF_PTM
#define PTP   BSSGP_PDUF_PTP
#define SIG   BSSGP_PDUF_SIG
#define UL   BSSGP_PDUF_UL

Function Documentation

const char* bssgp_pdu_str ( enum bssgp_pdu_type  pdu)
int bssgp_tx_simple_bvci ( uint8_t  pdu_type,
uint16_t  nsei,
uint16_t  bvci,
uint16_t  ns_bvci 
)

Variable Documentation

const uint8_t block_ack_ies[] = { BSSGP_IE_BVCI }
static
const uint8_t block_ies[] = { BSSGP_IE_BVCI, BSSGP_IE_CAUSE }
static
const struct value_string bssgp_cause_strings[]
static
struct gprs_ns_inst* bssgp_nsi

Referenced by _gprs_ns_sendmsg().

const struct value_string bssgp_pdu_strings[]
static
const uint8_t crt_bss_pfc_ack_ies[]
static
Initial value:
Definition: gsm_08_18.h:158
Definition: gsm_08_18.h:160
Definition: gsm_08_18.h:149
const uint8_t crt_bss_pfc_ies[]
static
Initial value:
Definition: gsm_08_18.h:158
Definition: gsm_08_18.h:160
Definition: gsm_08_18.h:159
Definition: gsm_08_18.h:149
const uint8_t crt_bss_pfc_nack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_PACKET_FLOW_ID, BSSGP_IE_CAUSE }
static
const uint8_t d_pag_ps_ies[] = { BSSGP_IE_IMSI }
static
const uint8_t d_pag_ps_rej_ies[] = { BSSGP_IE_IMSI, BSSGP_IE_T_UNTIL_NEXT_PAGING }
static
const uint8_t d_pag_ps_resp_ies[] = { BSSGP_IE_IMSI, BSSGP_IE_T_UNTIL_NEXT_PAGING }
static
const uint8_t del_bss_pfc_ack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_PACKET_FLOW_ID }
static
const uint8_t del_bss_pfc_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_PACKET_FLOW_ID }
static
const uint8_t del_bss_pfc_req_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_PACKET_FLOW_ID, BSSGP_IE_CAUSE }
static
const uint8_t dl_bss_pfc_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_PACKET_FLOW_ID }
static
const uint8_t dl_mb_ud_ies[] = { BSSGP_IE_PDU_LIFETIME, BSSGP_IE_TMGI, BSSGP_IE_LLC_PDU }
static
const uint8_t dl_ud_ies[] = { BSSGP_IE_PDU_LIFETIME }
static
const uint8_t fc_bvc_ack_ies[] = { BSSGP_IE_TAG }
static
const uint8_t fc_bvc_ies[]
static
Initial value:
Definition: gsm_08_18.h:146
Definition: gsm_08_18.h:123
Definition: gsm_08_18.h:148
Definition: gsm_08_18.h:121
Definition: gsm_08_18.h:119
const uint8_t fc_ms_ack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_TAG }
static
const uint8_t fc_ms_ies[]
static
Initial value:
Definition: gsm_08_18.h:136
Definition: gsm_08_18.h:148
Definition: gsm_08_18.h:149
Definition: gsm_08_18.h:121
const uint8_t fc_pfc_ack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_TAG }
static
const uint8_t fc_pfc_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_TAG, BSSGP_IE_PFC_FLOW_CTRL_PARAMS }
static
const uint8_t flush_ll_ack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_FLUSH_ACTION }
static
const uint8_t flush_ll_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_BVCI }
static
const uint8_t inv_trc_ies[] = { BSSGP_IE_TRACE_TYPE, BSSGP_IE_TRACE_REFERENC }
static
const uint8_t llc_disc_ies[]
static
Initial value:
Definition: gsm_08_18.h:133
Definition: gsm_08_18.h:122
Definition: gsm_08_18.h:149
Definition: gsm_08_18.h:155
const uint8_t mod_bss_pfc_ack_ies[]
static
Initial value:
Definition: gsm_08_18.h:158
Definition: gsm_08_18.h:160
Definition: gsm_08_18.h:159
Definition: gsm_08_18.h:149
const uint8_t mod_bss_pfc_ies[]
static
Initial value:
Definition: gsm_08_18.h:158
Definition: gsm_08_18.h:160
Definition: gsm_08_18.h:149
const uint8_t ms_reg_enq_ies[] = { BSSGP_IE_IMSI }
static
const uint8_t ms_reg_enq_res_ies[] = { BSSGP_IE_IMSI }
static
const struct osmo_tlv_prot_def osmo_pdef_bssgp
const uint8_t overload_ies[] = { BSSGP_IE_PRIO_CLASS_IND }
static
const uint8_t pag_cs_ies[] = { BSSGP_IE_IMSI, BSSGP_IE_DRX_PARAMS }
static
const uint8_t pag_ps_ies[] = { BSSGP_IE_IMSI, BSSGP_IE_QOS_PROFILE }
static
const uint8_t ps_ho_cancel_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_CAUSE, BSSGP_IE_CELL_ID }
static
const uint8_t ps_ho_compl_ack_ies[] = { BSSGP_IE_TLLI }
static
const uint8_t ps_ho_compl_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_IMSI }
static
const uint8_t ps_ho_request_ack_ies[]
static
Initial value:
Definition: gsm_08_18.h:201
Definition: gsm_08_18.h:204
Definition: gsm_08_18.h:149
const uint8_t ps_ho_request_ies[]
static
Initial value:
Definition: gsm_08_18.h:126
Definition: gsm_08_18.h:200
Definition: gsm_08_18.h:149
Definition: gsm_08_18.h:125
Definition: gsm_08_18.h:203
Definition: gsm_08_18.h:131
const uint8_t ps_ho_request_nack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_CAUSE }
static
const uint8_t ps_ho_required_ack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_LIST_OF_SETUP_PFC }
static
const uint8_t ps_ho_required_ies[]
static
Initial value:
Definition: gsm_08_18.h:219
Definition: gsm_08_18.h:126
Definition: gsm_08_18.h:149
Definition: gsm_08_18.h:125
const uint8_t ps_ho_required_nack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_CAUSE }
static
const uint8_t ra_cap_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_MS_RADIO_ACCESS_CAP }
static
const uint8_t ra_cap_upd_ack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_TAG, BSSGP_IE_RA_CAP_UPD_CAUSE }
static
const uint8_t ra_cap_upd_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_TAG }
static
const uint8_t rad_sts_ies[] = { BSSGP_IE_RADIO_CAUSE }
static
const uint8_t reset_ack_ies[] = { BSSGP_IE_BVCI }
static
const uint8_t reset_ies[] = { BSSGP_IE_BVCI, BSSGP_IE_CAUSE }
static
const uint8_t resume_ack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA }
static
const uint8_t resume_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA, BSSGP_IE_SUSPEND_REF_NR }
static
const uint8_t resume_nack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA }
static
const uint8_t rinfo_ack_ies[] = { BSSGP_IE_RIM_ROUTING_INFO, BSSGP_IE_RI_ACK_RIM_CONTAINER }
static
const uint8_t rinfo_aerr_ies[] = { BSSGP_IE_RIM_ROUTING_INFO, BSSGP_IE_RI_APP_ERROR_RIM_CONT }
static
const uint8_t rinfo_err_ies[] = { BSSGP_IE_RIM_ROUTING_INFO, BSSGP_IE_RI_ERROR_RIM_COINTAINER }
static
const uint8_t rinfo_ies[] = { BSSGP_IE_RIM_ROUTING_INFO, BSSGP_IE_RI_RIM_CONTAINER }
static
const uint8_t rinfo_req_ies[] = { BSSGP_IE_RIM_ROUTING_INFO, BSSGP_IE_RI_REQ_RIM_CONTAINER }
static
const uint8_t status_ies[] = { BSSGP_IE_CAUSE }
static
const uint8_t suspend_ack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA, BSSGP_IE_SUSPEND_REF_NR }
static
const uint8_t suspend_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA }
static
const uint8_t suspend_nack_ies[] = { BSSGP_IE_TLLI, BSSGP_IE_ROUTEING_AREA }
static
const uint8_t ul_mb_ud_ies[] = { BSSGP_IE_PDU_LIFETIME, BSSGP_IE_TMGI, BSSGP_IE_LLC_PDU }
static
const uint8_t ul_ud_ies[] = { BSSGP_IE_CELL_ID }
static
const uint8_t unblock_ack_ies[] = { BSSGP_IE_BVCI }
static
const uint8_t unblock_ies[] = { BSSGP_IE_BVCI }
static