libosmogsm
0.10.2.279.178b
Osmocom GSM library
|
The Generic Subscriber Update Protocol (GSUP) is an Osmocom-specific non-standard protocol replacing MAP as the protocol between MSC/VLR/SGSN and HLR in a 3GPP cellular communications network. More...
Files | |
file | gsup.h |
Osmocom Generic Subscriber Update Protocol message encoder/decoder. | |
file | gsup.c |
Osmocom Generic Subscriber Update Protocol. | |
Data Structures | |
struct | osmo_gsup_pdp_info |
parsed/decoded PDP context information More... | |
struct | osmo_gsup_message |
parsed/decoded GSUP protocol message More... | |
Macros | |
#define | OSMO_GSUP_PORT 4222 |
#define | OSMO_GSUP_MAX_NUM_PDP_INFO 10 /* GSM 09.02 limits this to 50 */ |
Maximum nubmer of PDP inside osmo_gsup_message. More... | |
#define | OSMO_GSUP_MAX_NUM_AUTH_INFO 5 |
Maximum number of auth info inside osmo_gsup_message. More... | |
#define | OSMO_GSUP_MAX_MSISDN_LEN 9 |
Maximum number of octets encoding MSISDN in BCD format. More... | |
#define | OSMO_GSUP_PDP_TYPE_SIZE 2 |
#define | OSMO_GSUP_IS_MSGT_REQUEST(msgt) (((msgt) & 0b00000011) == 0b00) |
#define | OSMO_GSUP_IS_MSGT_ERROR(msgt) (((msgt) & 0b00000011) == 0b01) |
#define | OSMO_GSUP_TO_MSGT_ERROR(msgt) (((msgt) & 0b11111100) | 0b01) |
Functions | |
static const char * | osmo_gsup_message_type_name (enum osmo_gsup_message_type val) |
int | osmo_gsup_decode (const uint8_t *const_data, size_t data_len, struct osmo_gsup_message *gsup_msg) |
Decode (parse) a GSUP message. More... | |
int | osmo_gsup_encode (struct msgb *msg, const struct osmo_gsup_message *gsup_msg) |
Encode a GSUP message. More... | |
static int | decode_pdp_info (uint8_t *data, size_t data_len, struct osmo_gsup_pdp_info *pdp_info) |
static int | decode_auth_info (uint8_t *data, size_t data_len, struct osmo_auth_vector *auth_vector) |
static void | encode_pdp_info (struct msgb *msg, enum osmo_gsup_iei iei, const struct osmo_gsup_pdp_info *pdp_info) |
static void | encode_auth_info (struct msgb *msg, enum osmo_gsup_iei iei, const struct osmo_auth_vector *auth_vector) |
Variables | |
const struct value_string | osmo_gsup_message_type_names [] |
const struct value_string | osmo_gsup_message_type_names [] |
The Generic Subscriber Update Protocol (GSUP) is an Osmocom-specific non-standard protocol replacing MAP as the protocol between MSC/VLR/SGSN and HLR in a 3GPP cellular communications network.
It was designed around the same transactions and architecture as the MAP messages/operations, but without the complexity of TCAP and MAP, and without the need for ASN.1 encoding.
The purpose is to keep protocol complexity out of OsmoSGSN and OsmoMSC, while providing a clean path to an external GSUP to MAP translator.
#define OSMO_GSUP_IS_MSGT_ERROR | ( | msgt | ) | (((msgt) & 0b00000011) == 0b01) |
#define OSMO_GSUP_IS_MSGT_REQUEST | ( | msgt | ) | (((msgt) & 0b00000011) == 0b00) |
#define OSMO_GSUP_MAX_MSISDN_LEN 9 |
Maximum number of octets encoding MSISDN in BCD format.
#define OSMO_GSUP_MAX_NUM_AUTH_INFO 5 |
Maximum number of auth info inside osmo_gsup_message.
Referenced by osmo_gsup_decode().
#define OSMO_GSUP_MAX_NUM_PDP_INFO 10 /* GSM 09.02 limits this to 50 */ |
Maximum nubmer of PDP inside osmo_gsup_message.
Referenced by osmo_gsup_decode().
#define OSMO_GSUP_PDP_TYPE_SIZE 2 |
Referenced by encode_pdp_info().
#define OSMO_GSUP_PORT 4222 |
#define OSMO_GSUP_TO_MSGT_ERROR | ( | msgt | ) | (((msgt) & 0b11111100) | 0b01) |
enum osmo_gsup_cn_domain |
enum osmo_gsup_iei |
Information Element Identifiers for GSUP IEs.
GSUP message type.
|
static |
References osmo_auth_vector::auth_types, osmo_auth_vector::autn, osmo_auth_vector::ck, DLGSUP, GMM_CAUSE_PROTO_ERR_UNSPEC, iei, osmo_auth_vector::ik, osmo_auth_vector::kc, LOGL_ERROR, LOGP, OSMO_AUTH_TYPE_GSM, OSMO_AUTH_TYPE_UMTS, OSMO_GSUP_AUTN_IE, OSMO_GSUP_CK_IE, OSMO_GSUP_IK_IE, OSMO_GSUP_KC_IE, OSMO_GSUP_RAND_IE, OSMO_GSUP_RES_IE, OSMO_GSUP_SRES_IE, osmo_shift_tlv(), osmo_auth_vector::rand, osmo_auth_vector::res, osmo_auth_vector::res_len, osmo_auth_vector::sres, and value_string::value.
Referenced by osmo_gsup_decode().
|
static |
References osmo_gsup_pdp_info::apn_enc, osmo_gsup_pdp_info::apn_enc_len, osmo_gsup_pdp_info::context_id, DLGSUP, GMM_CAUSE_PROTO_ERR_UNSPEC, iei, LOGL_ERROR, LOGP, osmo_decode_big_endian(), OSMO_GSUP_ACCESS_POINT_NAME_IE, OSMO_GSUP_CHARG_CHAR_IE, OSMO_GSUP_PDP_CONTEXT_ID_IE, OSMO_GSUP_PDP_QOS_IE, OSMO_GSUP_PDP_TYPE_IE, osmo_shift_tlv(), osmo_gsup_pdp_info::pdp_charg_enc, osmo_gsup_pdp_info::pdp_charg_enc_len, osmo_gsup_pdp_info::pdp_type, osmo_gsup_pdp_info::qos_enc, osmo_gsup_pdp_info::qos_enc_len, and value_string::value.
Referenced by osmo_gsup_decode().
|
static |
References osmo_auth_vector::auth_types, osmo_auth_vector::autn, osmo_auth_vector::ck, osmo_auth_vector::ik, osmo_auth_vector::kc, msgb_length(), msgb_tlv_put(), OSMO_AUTH_TYPE_GSM, OSMO_AUTH_TYPE_UMTS, OSMO_GSUP_AUTN_IE, OSMO_GSUP_CK_IE, OSMO_GSUP_IK_IE, OSMO_GSUP_KC_IE, OSMO_GSUP_RAND_IE, OSMO_GSUP_RES_IE, OSMO_GSUP_SRES_IE, osmo_auth_vector::rand, osmo_auth_vector::res, osmo_auth_vector::res_len, and osmo_auth_vector::sres.
Referenced by osmo_gsup_encode().
|
static |
References osmo_gsup_pdp_info::apn_enc, osmo_gsup_pdp_info::apn_enc_len, osmo_gsup_pdp_info::context_id, msgb_length(), msgb_tlv_put(), osmo_encode_big_endian(), OSMO_GSUP_ACCESS_POINT_NAME_IE, OSMO_GSUP_CHARG_CHAR_IE, OSMO_GSUP_PDP_CONTEXT_ID_IE, OSMO_GSUP_PDP_QOS_IE, OSMO_GSUP_PDP_TYPE_IE, OSMO_GSUP_PDP_TYPE_SIZE, osmo_gsup_pdp_info::pdp_charg_enc, osmo_gsup_pdp_info::pdp_charg_enc_len, osmo_gsup_pdp_info::pdp_type, osmo_gsup_pdp_info::qos_enc, and osmo_gsup_pdp_info::qos_enc_len.
Referenced by osmo_gsup_encode().
int osmo_gsup_decode | ( | const uint8_t * | const_data, |
size_t | data_len, | ||
struct osmo_gsup_message * | gsup_msg | ||
) |
Decode (parse) a GSUP message.
[in] | const_data | input data to be parsed |
[in] | data_len | length of input (const_data) |
[out] | gsup_msg | callee-allocated output data structure |
References osmo_gsup_message::auth_vectors, osmo_gsup_message::auts, osmo_gsup_message::cancel_type, osmo_gsup_message::cause, osmo_gsup_message::cn_domain, osmo_gsup_pdp_info::context_id, data, decode_auth_info(), decode_pdp_info(), DLGSUP, osmo_gsup_message::freeze_ptmsi, GMM_CAUSE_COND_IE_ERR, GMM_CAUSE_INV_MAND_INFO, GMM_CAUSE_PROTO_ERR_UNSPEC, gsm48_decode_bcd_number(), osmo_gsup_pdp_info::have_info, osmo_gsup_message::hlr_enc, osmo_gsup_message::hlr_enc_len, iei, osmo_gsup_message::imsi, LOGL_ERROR, LOGL_NOTICE, LOGP, osmo_gsup_message::message_type, osmo_gsup_message::msisdn_enc, osmo_gsup_message::msisdn_enc_len, osmo_gsup_message::num_auth_vectors, osmo_gsup_message::num_pdp_infos, OSMO_ASSERT, osmo_decode_big_endian(), OSMO_GSUP_ACCESS_POINT_NAME_IE, OSMO_GSUP_AUTH_TUPLE_IE, OSMO_GSUP_AUTS_IE, OSMO_GSUP_CANCEL_TYPE_IE, OSMO_GSUP_CAUSE_IE, OSMO_GSUP_CHARG_CHAR_IE, OSMO_GSUP_CN_DOMAIN_IE, OSMO_GSUP_FREEZE_PTMSI_IE, OSMO_GSUP_HLR_NUMBER_IE, OSMO_GSUP_IMSI_IE, OSMO_GSUP_KC_IE, OSMO_GSUP_MAX_NUM_AUTH_INFO, OSMO_GSUP_MAX_NUM_PDP_INFO, OSMO_GSUP_MSISDN_IE, OSMO_GSUP_PDP_CONTEXT_ID_IE, OSMO_GSUP_PDP_INFO_COMPL_IE, OSMO_GSUP_PDP_INFO_IE, OSMO_GSUP_PDP_TYPE_IE, OSMO_GSUP_RAND_IE, OSMO_GSUP_SRES_IE, osmo_match_shift_tlv(), osmo_shift_tlv(), osmo_shift_v_fixed(), osmo_gsup_message::pdp_charg_enc, osmo_gsup_message::pdp_charg_enc_len, osmo_gsup_message::pdp_info_compl, osmo_gsup_message::pdp_infos, osmo_gsup_message::rand, and value_string::value.
int osmo_gsup_encode | ( | struct msgb * | msg, |
const struct osmo_gsup_message * | gsup_msg | ||
) |
Encode a GSUP message.
[out] | msg | message buffer to which encoded message is written |
[in] | gsup_msg | osmo_gsup_message data to be encoded |
References osmo_gsup_message::auth_vectors, osmo_gsup_message::auts, osmo_gsup_message::cancel_type, osmo_gsup_message::cause, osmo_gsup_message::cn_domain, osmo_gsup_pdp_info::context_id, encode_auth_info(), encode_pdp_info(), osmo_gsup_message::freeze_ptmsi, gsm48_encode_bcd_number(), GSM48_MI_SIZE, osmo_gsup_pdp_info::have_info, osmo_gsup_message::hlr_enc, osmo_gsup_message::hlr_enc_len, osmo_gsup_message::imsi, osmo_gsup_message::message_type, msgb_tlv_put(), msgb_v_put(), osmo_gsup_message::msisdn_enc, osmo_gsup_message::msisdn_enc_len, osmo_gsup_message::num_auth_vectors, osmo_gsup_message::num_pdp_infos, OSMO_GSUP_AUTH_TUPLE_IE, OSMO_GSUP_AUTS_IE, OSMO_GSUP_CANCEL_TYPE_IE, OSMO_GSUP_CAUSE_IE, OSMO_GSUP_CHARG_CHAR_IE, OSMO_GSUP_CN_DOMAIN_IE, OSMO_GSUP_FREEZE_PTMSI_IE, OSMO_GSUP_HLR_NUMBER_IE, OSMO_GSUP_IMSI_IE, OSMO_GSUP_MSISDN_IE, OSMO_GSUP_PDP_CONTEXT_ID_IE, OSMO_GSUP_PDP_INFO_COMPL_IE, OSMO_GSUP_PDP_INFO_IE, OSMO_GSUP_RAND_IE, osmo_gsup_message::pdp_charg_enc, osmo_gsup_message::pdp_charg_enc_len, osmo_gsup_message::pdp_info_compl, osmo_gsup_message::pdp_infos, and osmo_gsup_message::rand.
|
inlinestatic |
References get_value_string(), and osmo_gsup_message_type_names.
const struct value_string osmo_gsup_message_type_names[] |
Referenced by osmo_gsup_message_type_name().
const struct value_string osmo_gsup_message_type_names[] |
Referenced by osmo_gsup_message_type_name().