libosmogsm 1.13.1.1-afb4 Osmocom GSM library

Files | Data Structures | Macros | Enumerations | Functions | Variables
Generic Subscriber Update Protocol

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_sms.h
| SMS (Short Message Service) extensions for Osmocom GSUP.
file | gsup.c
| Osmocom Generic Subscriber Update Protocol.
file | gsup_sms.c
| SMS (Short Message Service) extensions for Osmocom GSUP.

## Data Structures
struct | osmo_gsup_pdp_info
| parsed/decoded PDP context information More...
struct | osmo_gsup_an_apdu
| AccessNetworkSignalInfo as in 3GPP TS 29.002. 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_MAX_CALLED_PARTY_BCD_LEN 43 /* TS 24.008 10.5.4.7 */
#define | OSMO_GSUP_MAX_PCO_LEN 251
#define | OSMO_GSUP_MSGT_E_ROUTING_ERROR OSMO_GSUP_MSGT_ROUTING_ERROR
#define | OSMO_GSUP_IS_MSGT_REQUEST(msgt) (((msgt) & 0b00000011) == 0b00)
#define | OSMO_GSUP_IS_MSGT_ERROR(msgt) (((msgt) & 0b00000011) == 0b01)
#define | OSMO_GSUP_IS_MSGT_RESULT(msgt) (((msgt) & 0b00000011) == 0b10)
#define | OSMO_GSUP_TO_MSGT_REQUEST(msgt) (((msgt) & 0b11111100))
#define | OSMO_GSUP_TO_MSGT_ERROR(msgt) (((msgt) & 0b11111100) | 0b01)
#define | OSMO_GSUP_TO_MSGT_RESULT(msgt) (((msgt) & 0b11111100) | 0b10)

## Enumerations
enum | osmo_gsup_iei { OSMO_GSUP_IMSI_IE = 0x01 , OSMO_GSUP_CAUSE_IE = 0x02 , OSMO_GSUP_AUTH_TUPLE_IE = 0x03 , OSMO_GSUP_PDP_INFO_COMPL_IE = 0x04 , OSMO_GSUP_PDP_INFO_IE = 0x05 , OSMO_GSUP_CANCEL_TYPE_IE = 0x06 , OSMO_GSUP_FREEZE_PTMSI_IE = 0x07 , OSMO_GSUP_MSISDN_IE = 0x08 , OSMO_GSUP_HLR_NUMBER_IE = 0x09 , OSMO_GSUP_MESSAGE_CLASS_IE = 0x0a , OSMO_GSUP_PDP_CONTEXT_ID_IE = 0x10 , OSMO_GSUP_PDP_ADDRESS_IE = 0x11 , OSMO_GSUP_ACCESS_POINT_NAME_IE = 0x12 , OSMO_GSUP_PDP_QOS_IE = 0x13 , OSMO_GSUP_CHARG_CHAR_IE = 0x14 , OSMO_GSUP_PCO_IE = 0x15 , OSMO_GSUP_RAND_IE = 0x20 , OSMO_GSUP_SRES_IE = 0x21 , OSMO_GSUP_KC_IE = 0x22 , OSMO_GSUP_IK_IE = 0x23 , OSMO_GSUP_CK_IE = 0x24 , OSMO_GSUP_AUTN_IE = 0x25 , OSMO_GSUP_AUTS_IE = 0x26 , OSMO_GSUP_RES_IE = 0x27 , OSMO_GSUP_CN_DOMAIN_IE = 0x28 , OSMO_GSUP_SUPPORTED_RAT_TYPES_IE = 0x29 , OSMO_GSUP_CURRENT_RAT_TYPE_IE = 0x2a , OSMO_GSUP_SESSION_ID_IE = 0x30 , OSMO_GSUP_SESSION_STATE_IE = 0x31 , OSMO_GSUP_SS_INFO_IE = 0x35 , OSMO_GSUP_SM_RP_MR_IE = 0x40 , OSMO_GSUP_SM_RP_DA_IE = 0x41 , OSMO_GSUP_SM_RP_OA_IE = 0x42 , OSMO_GSUP_SM_RP_UI_IE = 0x43 , OSMO_GSUP_SM_RP_CAUSE_IE = 0x44 , OSMO_GSUP_SM_RP_MMS_IE = 0x45 , OSMO_GSUP_SM_ALERT_RSN_IE = 0x46 , OSMO_GSUP_IMEI_IE = 0x50 , OSMO_GSUP_IMEI_RESULT_IE = 0x51 , OSMO_GSUP_NUM_VECTORS_REQ_IE = 0x52 , OSMO_GSUP_SOURCE_NAME_IE = 0x60 , OSMO_GSUP_DESTINATION_NAME_IE = 0x61 , OSMO_GSUP_AN_APDU_IE = 0x62 , OSMO_GSUP_CAUSE_RR_IE = 0x63 , OSMO_GSUP_CAUSE_BSSAP_IE = 0x64 , OSMO_GSUP_CAUSE_SM_IE = 0x65 , _OSMO_GSUP_IEI_END_MARKER }
| Information Element Identifiers for GSUP IEs. More...
enum | osmo_gsup_message_type { OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST = 0b00000100 , OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR = 0b00000101 , OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT = 0b00000110 , OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST = 0b00001000 , OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR = 0b00001001 , OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT = 0b00001010 , OSMO_GSUP_MSGT_AUTH_FAIL_REPORT = 0b00001011 , OSMO_GSUP_MSGT_PURGE_MS_REQUEST = 0b00001100 , OSMO_GSUP_MSGT_PURGE_MS_ERROR = 0b00001101 , OSMO_GSUP_MSGT_PURGE_MS_RESULT = 0b00001110 , OSMO_GSUP_MSGT_INSERT_DATA_REQUEST = 0b00010000 , OSMO_GSUP_MSGT_INSERT_DATA_ERROR = 0b00010001 , OSMO_GSUP_MSGT_INSERT_DATA_RESULT = 0b00010010 , OSMO_GSUP_MSGT_DELETE_DATA_REQUEST = 0b00010100 , OSMO_GSUP_MSGT_DELETE_DATA_ERROR = 0b00010101 , OSMO_GSUP_MSGT_DELETE_DATA_RESULT = 0b00010110 , OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST = 0b00011100 , OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR = 0b00011101 , OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT = 0b00011110 , OSMO_GSUP_MSGT_PROC_SS_REQUEST = 0b00100000 , OSMO_GSUP_MSGT_PROC_SS_ERROR = 0b00100001 , OSMO_GSUP_MSGT_PROC_SS_RESULT = 0b00100010 , OSMO_GSUP_MSGT_MO_FORWARD_SM_REQUEST = 0b00100100 , OSMO_GSUP_MSGT_MO_FORWARD_SM_ERROR = 0b00100101 , OSMO_GSUP_MSGT_MO_FORWARD_SM_RESULT = 0b00100110 , OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST = 0b00101000 , OSMO_GSUP_MSGT_MT_FORWARD_SM_ERROR = 0b00101001 , OSMO_GSUP_MSGT_MT_FORWARD_SM_RESULT = 0b00101010 , OSMO_GSUP_MSGT_READY_FOR_SM_REQUEST = 0b00101100 , OSMO_GSUP_MSGT_READY_FOR_SM_ERROR = 0b00101101 , OSMO_GSUP_MSGT_READY_FOR_SM_RESULT = 0b00101110 , OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST = 0b00110000 , OSMO_GSUP_MSGT_CHECK_IMEI_ERROR = 0b00110001 , OSMO_GSUP_MSGT_CHECK_IMEI_RESULT = 0b00110010 , OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_REQUEST = 0b00110100 , OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_ERROR = 0b00110101 , OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_RESULT = 0b00110110 , OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_REQUEST = 0b00111000 , OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_ERROR = 0b00111001 , OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_RESULT = 0b00111010 , OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_REQUEST = 0b00111100 , OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_ERROR = 0b00111101 , OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_RESULT = 0b00111110 , OSMO_GSUP_MSGT_E_PROCESS_ACCESS_SIGNALLING_REQUEST = 0b01000000 , OSMO_GSUP_MSGT_E_FORWARD_ACCESS_SIGNALLING_REQUEST = 0b01000100 , OSMO_GSUP_MSGT_E_CLOSE = 0b01000111 , OSMO_GSUP_MSGT_E_ABORT = 0b01001011 , OSMO_GSUP_MSGT_ROUTING_ERROR = 0b01001110 , OSMO_GSUP_MSGT_EPDG_TUNNEL_REQUEST = 0b01010000 , OSMO_GSUP_MSGT_EPDG_TUNNEL_ERROR = 0b01010001 , OSMO_GSUP_MSGT_EPDG_TUNNEL_RESULT = 0b01010010 }
| GSUP message type Make sure that new messages follow this scheme: More...
enum | osmo_gsup_cancel_type { OSMO_GSUP_CANCEL_TYPE_UPDATE = 1 , OSMO_GSUP_CANCEL_TYPE_WITHDRAW = 2 }
enum | osmo_gsup_cn_domain { OSMO_GSUP_CN_DOMAIN_PS = 1 , OSMO_GSUP_CN_DOMAIN_CS = 2 }
enum | osmo_gsup_imei_result { OSMO_GSUP_IMEI_RESULT_ACK = 1 , OSMO_GSUP_IMEI_RESULT_NACK = 2 }
enum | osmo_gsup_access_network_protocol { OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_48006 = 1 , OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_25413 = 2 }
enum | osmo_gsup_session_state { OSMO_GSUP_SESSION_STATE_NONE = 0x00 , OSMO_GSUP_SESSION_STATE_BEGIN = 0x01 , OSMO_GSUP_SESSION_STATE_CONTINUE = 0x02 , OSMO_GSUP_SESSION_STATE_END = 0x03 }
| TCAP-like session state. More...
enum | osmo_gsup_message_class { OSMO_GSUP_MESSAGE_CLASS_UNSET = 0 , OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT = 1 , OSMO_GSUP_MESSAGE_CLASS_SMS = 2 , OSMO_GSUP_MESSAGE_CLASS_USSD = 3 , OSMO_GSUP_MESSAGE_CLASS_INTER_MSC = 4 , OSMO_GSUP_MESSAGE_CLASS_IPSEC_EPDG = 5 , OSMO_GSUP_MESSAGE_CLASS_ARRAYSIZE }
enum | osmo_gsup_sms_sm_rp_oda_t { OSMO_GSUP_SMS_SM_RP_ODA_NONE = 0x00 , OSMO_GSUP_SMS_SM_RP_ODA_IMSI = 0x01 , OSMO_GSUP_SMS_SM_RP_ODA_MSISDN = 0x02 , OSMO_GSUP_SMS_SM_RP_ODA_SMSC_ADDR = 0x03 , OSMO_GSUP_SMS_SM_RP_ODA_NULL = 0xff }
| Possible identity types for SM-RP-{OA|DA}. More...
enum | osmo_gsup_sms_sm_alert_rsn_t { OSMO_GSUP_SMS_SM_ALERT_RSN_NONE = 0x00 , OSMO_GSUP_SMS_SM_ALERT_RSN_MS_PRESENT = 0x01 , OSMO_GSUP_SMS_SM_ALERT_RSN_MEM_AVAIL = 0x02 }
| Alert reason values, see 7.6.8.8. More...

## Functions
static const char * | osmo_gsup_message_type_name (enum osmo_gsup_message_type val)
static const char * | osmo_gsup_session_state_name (enum osmo_gsup_session_state val)
static const char * | osmo_gsup_message_class_name (enum osmo_gsup_message_class 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...
int | osmo_gsup_get_err_msg_type (enum osmo_gsup_message_type type_in)
| return the error message type corresponding to type_in. More...
int | osmo_gsup_sms_encode_sm_rp_da (struct msgb *msg, const struct osmo_gsup_message *gsup_msg)
| Encode SM-RP-DA IE (see 7.6.8.1), Destination Address. More...
int | osmo_gsup_sms_decode_sm_rp_da (struct osmo_gsup_message *gsup_msg, uint8_t *data, size_t data_len)
| Decode SM-RP-DA IE (see 7.6.8.1), Destination Address. More...
int | osmo_gsup_sms_encode_sm_rp_oa (struct msgb *msg, const struct osmo_gsup_message *gsup_msg)
| Encode SM-RP-OA IE (see 7.6.8.2), Originating Address. More...
int | osmo_gsup_sms_decode_sm_rp_oa (struct osmo_gsup_message *gsup_msg, uint8_t *data, size_t data_len)
| Decode SM-RP-OA IE (see 7.6.8.2), Originating Address. More...
static int | decode_pdp_address (const uint8_t *data, size_t data_len, struct osmo_gsup_pdp_info *pdp_info)
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)
int | osmo_gsup_decode_an_apdu (struct osmo_gsup_message *gsup_msg, const uint8_t *data, size_t data_len)
| Decode AN-apdu (see 3GPP TS 29.002 7.6.9.1). More...
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)
int | osmo_gsup_encode_an_apdu (struct msgb *msg, const struct osmo_gsup_message *gsup_msg)
| Encode AN-apdu (see 3GPP TS 29.002 7.6.9.1). More...

## Variables
const struct value_string | osmo_gsup_message_type_names []
const struct value_string | osmo_gsup_session_state_names []
const struct value_string | osmo_gsup_message_class_names []
const struct value_string | osmo_gsup_message_type_names []
const struct value_string | osmo_gsup_session_state_names []
const struct value_string | osmo_gsup_message_class_names []

## Detailed Description

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.

This header defines SMS (Short Message Service) extensions for Osmocom GSUP (Generic Subscriber Update Protocol).

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.

The scope of this module is defined by 3GPP TS 29.002, section 12.

## Macro Definition Documentation

## ◆ OSMO_GSUP_IS_MSGT_ERROR

#define OSMO_GSUP_IS_MSGT_ERROR | ( |  | msgt | ) | (((msgt) & 0b00000011) == 0b01)

## ◆ OSMO_GSUP_IS_MSGT_REQUEST

#define OSMO_GSUP_IS_MSGT_REQUEST | ( |  | msgt | ) | (((msgt) & 0b00000011) == 0b00)

## ◆ OSMO_GSUP_IS_MSGT_RESULT

#define OSMO_GSUP_IS_MSGT_RESULT | ( |  | msgt | ) | (((msgt) & 0b00000011) == 0b10)

## ◆ OSMO_GSUP_MAX_CALLED_PARTY_BCD_LEN

#define OSMO_GSUP_MAX_CALLED_PARTY_BCD_LEN 43 /* TS 24.008 10.5.4.7 */

## ◆ OSMO_GSUP_MAX_MSISDN_LEN

#define OSMO_GSUP_MAX_MSISDN_LEN 9

Maximum number of octets encoding MSISDN in BCD format.

## ◆ OSMO_GSUP_MAX_NUM_AUTH_INFO

#define OSMO_GSUP_MAX_NUM_AUTH_INFO 5

Maximum number of auth info inside osmo_gsup_message.

## ◆ OSMO_GSUP_MAX_NUM_PDP_INFO

#define OSMO_GSUP_MAX_NUM_PDP_INFO 10 /* GSM 09.02 limits this to 50 */

Maximum nubmer of PDP inside osmo_gsup_message.

## ◆ OSMO_GSUP_MAX_PCO_LEN

#define OSMO_GSUP_MAX_PCO_LEN 251

## ◆ OSMO_GSUP_MSGT_E_ROUTING_ERROR

#define OSMO_GSUP_MSGT_E_ROUTING_ERROR OSMO_GSUP_MSGT_ROUTING_ERROR

## ◆ OSMO_GSUP_PORT

#define OSMO_GSUP_PORT 4222

## ◆ OSMO_GSUP_TO_MSGT_ERROR

#define OSMO_GSUP_TO_MSGT_ERROR | ( |  | msgt | ) | (((msgt) & 0b11111100) | 0b01)

## ◆ OSMO_GSUP_TO_MSGT_REQUEST

#define OSMO_GSUP_TO_MSGT_REQUEST | ( |  | msgt | ) | (((msgt) & 0b11111100))

## ◆ OSMO_GSUP_TO_MSGT_RESULT

#define OSMO_GSUP_TO_MSGT_RESULT | ( |  | msgt | ) | (((msgt) & 0b11111100) | 0b10)

## Enumeration Type Documentation

## ◆ osmo_gsup_access_network_protocol

enum osmo_gsup_access_network_protocol

Enumerator
OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_48006 |
OSMO_GSUP_ACCESS_NETWORK_PROTOCOL_TS3G_25413 |

## ◆ osmo_gsup_cancel_type

enum osmo_gsup_cancel_type

Enumerator
OSMO_GSUP_CANCEL_TYPE_UPDATE |
OSMO_GSUP_CANCEL_TYPE_WITHDRAW |

## ◆ osmo_gsup_cn_domain

enum osmo_gsup_cn_domain

Enumerator
OSMO_GSUP_CN_DOMAIN_PS |
OSMO_GSUP_CN_DOMAIN_CS |

## ◆ osmo_gsup_iei

enum osmo_gsup_iei

Information Element Identifiers for GSUP IEs.

Enumerator
OSMO_GSUP_IMSI_IE |
OSMO_GSUP_CAUSE_IE |
OSMO_GSUP_AUTH_TUPLE_IE |
OSMO_GSUP_PDP_INFO_COMPL_IE |
OSMO_GSUP_PDP_INFO_IE |
OSMO_GSUP_CANCEL_TYPE_IE |
OSMO_GSUP_FREEZE_PTMSI_IE |
OSMO_GSUP_MSISDN_IE |
OSMO_GSUP_HLR_NUMBER_IE |
OSMO_GSUP_MESSAGE_CLASS_IE |
OSMO_GSUP_PDP_CONTEXT_ID_IE |
OSMO_GSUP_PDP_ADDRESS_IE |
OSMO_GSUP_ACCESS_POINT_NAME_IE |
OSMO_GSUP_PDP_QOS_IE |
OSMO_GSUP_CHARG_CHAR_IE |
OSMO_GSUP_PCO_IE |
OSMO_GSUP_RAND_IE |
OSMO_GSUP_SRES_IE |
OSMO_GSUP_KC_IE |
OSMO_GSUP_IK_IE |
OSMO_GSUP_CK_IE |
OSMO_GSUP_AUTN_IE |
OSMO_GSUP_AUTS_IE |
OSMO_GSUP_RES_IE |
OSMO_GSUP_CN_DOMAIN_IE |
OSMO_GSUP_SUPPORTED_RAT_TYPES_IE |
OSMO_GSUP_CURRENT_RAT_TYPE_IE |
OSMO_GSUP_SESSION_ID_IE |
OSMO_GSUP_SESSION_STATE_IE |
OSMO_GSUP_SS_INFO_IE | Supplementary Services payload.
OSMO_GSUP_SM_RP_MR_IE |
OSMO_GSUP_SM_RP_DA_IE |
OSMO_GSUP_SM_RP_OA_IE |
OSMO_GSUP_SM_RP_UI_IE |
OSMO_GSUP_SM_RP_CAUSE_IE |
OSMO_GSUP_SM_RP_MMS_IE |
OSMO_GSUP_SM_ALERT_RSN_IE |
OSMO_GSUP_IMEI_IE |
OSMO_GSUP_IMEI_RESULT_IE |
OSMO_GSUP_NUM_VECTORS_REQ_IE |
OSMO_GSUP_SOURCE_NAME_IE |
OSMO_GSUP_DESTINATION_NAME_IE |
OSMO_GSUP_AN_APDU_IE |
OSMO_GSUP_CAUSE_RR_IE |
OSMO_GSUP_CAUSE_BSSAP_IE |
OSMO_GSUP_CAUSE_SM_IE |
_OSMO_GSUP_IEI_END_MARKER |

## ◆ osmo_gsup_imei_result

enum osmo_gsup_imei_result

Enumerator
OSMO_GSUP_IMEI_RESULT_ACK |
OSMO_GSUP_IMEI_RESULT_NACK |

## ◆ osmo_gsup_message_class

enum osmo_gsup_message_class

Enumerator
OSMO_GSUP_MESSAGE_CLASS_UNSET |
OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT |
OSMO_GSUP_MESSAGE_CLASS_SMS |
OSMO_GSUP_MESSAGE_CLASS_USSD |
OSMO_GSUP_MESSAGE_CLASS_INTER_MSC |
OSMO_GSUP_MESSAGE_CLASS_IPSEC_EPDG |
OSMO_GSUP_MESSAGE_CLASS_ARRAYSIZE |

## ◆ osmo_gsup_message_type

enum osmo_gsup_message_type

GSUP message type Make sure that new messages follow this scheme:

-------------------------—. | Ending Bits | Category | |-------------------------—| | 00 | Request | | 01 | Error | | 10 | Result | | 11 | Other | '-------------------------—' Request, Error and Result messages must only differ in these last two bits.

Enumerator
OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST |
OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR |
OSMO_GSUP_MSGT_UPDATE_LOCATION_RESULT |
OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST |
OSMO_GSUP_MSGT_SEND_AUTH_INFO_ERROR |
OSMO_GSUP_MSGT_SEND_AUTH_INFO_RESULT |
OSMO_GSUP_MSGT_AUTH_FAIL_REPORT |
OSMO_GSUP_MSGT_PURGE_MS_REQUEST |
OSMO_GSUP_MSGT_PURGE_MS_ERROR |
OSMO_GSUP_MSGT_PURGE_MS_RESULT |
OSMO_GSUP_MSGT_INSERT_DATA_REQUEST |
OSMO_GSUP_MSGT_INSERT_DATA_ERROR |
OSMO_GSUP_MSGT_INSERT_DATA_RESULT |
OSMO_GSUP_MSGT_DELETE_DATA_REQUEST |
OSMO_GSUP_MSGT_DELETE_DATA_ERROR |
OSMO_GSUP_MSGT_DELETE_DATA_RESULT |
OSMO_GSUP_MSGT_LOCATION_CANCEL_REQUEST |
OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR |
OSMO_GSUP_MSGT_LOCATION_CANCEL_RESULT |
OSMO_GSUP_MSGT_PROC_SS_REQUEST |
OSMO_GSUP_MSGT_PROC_SS_ERROR |
OSMO_GSUP_MSGT_PROC_SS_RESULT |
OSMO_GSUP_MSGT_MO_FORWARD_SM_REQUEST |
OSMO_GSUP_MSGT_MO_FORWARD_SM_ERROR |
OSMO_GSUP_MSGT_MO_FORWARD_SM_RESULT |
OSMO_GSUP_MSGT_MT_FORWARD_SM_REQUEST |
OSMO_GSUP_MSGT_MT_FORWARD_SM_ERROR |
OSMO_GSUP_MSGT_MT_FORWARD_SM_RESULT |
OSMO_GSUP_MSGT_READY_FOR_SM_REQUEST |
OSMO_GSUP_MSGT_READY_FOR_SM_ERROR |
OSMO_GSUP_MSGT_READY_FOR_SM_RESULT |
OSMO_GSUP_MSGT_CHECK_IMEI_REQUEST |
OSMO_GSUP_MSGT_CHECK_IMEI_ERROR |
OSMO_GSUP_MSGT_CHECK_IMEI_RESULT |
OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_REQUEST |
OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_ERROR |
OSMO_GSUP_MSGT_E_PREPARE_HANDOVER_RESULT |
OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_REQUEST |
OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_ERROR |
OSMO_GSUP_MSGT_E_PREPARE_SUBSEQUENT_HANDOVER_RESULT |
OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_REQUEST |
OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_ERROR |
OSMO_GSUP_MSGT_E_SEND_END_SIGNAL_RESULT |
OSMO_GSUP_MSGT_E_PROCESS_ACCESS_SIGNALLING_REQUEST |
OSMO_GSUP_MSGT_E_FORWARD_ACCESS_SIGNALLING_REQUEST |
OSMO_GSUP_MSGT_E_CLOSE |
OSMO_GSUP_MSGT_E_ABORT |
OSMO_GSUP_MSGT_ROUTING_ERROR |
OSMO_GSUP_MSGT_EPDG_TUNNEL_REQUEST |
OSMO_GSUP_MSGT_EPDG_TUNNEL_ERROR |
OSMO_GSUP_MSGT_EPDG_TUNNEL_RESULT |

## ◆ osmo_gsup_session_state

enum osmo_gsup_session_state

TCAP-like session state.

Enumerator
OSMO_GSUP_SESSION_STATE_NONE | Undefined session state.
OSMO_GSUP_SESSION_STATE_BEGIN | Initiation of a new session.
OSMO_GSUP_SESSION_STATE_CONTINUE | Communication of an existing session.
OSMO_GSUP_SESSION_STATE_END | Indication of the session end.

## ◆ osmo_gsup_sms_sm_alert_rsn_t

enum osmo_gsup_sms_sm_alert_rsn_t

Alert reason values, see 7.6.8.8.

Enumerator
OSMO_GSUP_SMS_SM_ALERT_RSN_NONE |
OSMO_GSUP_SMS_SM_ALERT_RSN_MS_PRESENT |
OSMO_GSUP_SMS_SM_ALERT_RSN_MEM_AVAIL |

## ◆ osmo_gsup_sms_sm_rp_oda_t

enum osmo_gsup_sms_sm_rp_oda_t

Possible identity types for SM-RP-{OA|DA}.

Enumerator
OSMO_GSUP_SMS_SM_RP_ODA_NONE |
OSMO_GSUP_SMS_SM_RP_ODA_IMSI |
OSMO_GSUP_SMS_SM_RP_ODA_MSISDN |
OSMO_GSUP_SMS_SM_RP_ODA_SMSC_ADDR |
OSMO_GSUP_SMS_SM_RP_ODA_NULL | Special value for noSM-RP-DA and noSM-RP-OA.

## Function Documentation

## ◆ decode_auth_info()

static int decode_auth_info | ( | uint8_t * | data,
|  | size_t | data_len,
|  | struct osmo_auth_vector * | auth_vector
| ) |  |
| static

References osmo_auth_vector::auth_types, osmo_auth_vector::autn, osmo_auth_vector::ck, data, 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, and osmo_auth_vector::sres.

Referenced by osmo_gsup_decode().

## ◆ decode_pdp_address()

static int decode_pdp_address | ( | const uint8_t * | data,
|  | size_t | data_len,
|  | struct osmo_gsup_pdp_info * | pdp_info
| ) |  |
| static

References data, GMM_CAUSE_PROTO_ERR_UNSPEC, gsm48_pdp_address::ietf, osmo_gsup_pdp_info::pdp_address, PDP_TYPE_N_IETF_IPv4, PDP_TYPE_N_IETF_IPv4v6, PDP_TYPE_N_IETF_IPv6, PDP_TYPE_ORG_IETF, osmo_sockaddr::sa, osmo_sockaddr::sin, osmo_sockaddr::sin6, gsm48_pdp_address::type, osmo_sockaddr::u, gsm48_pdp_address::v4, and gsm48_pdp_address::v6.

Referenced by decode_pdp_info().

## ◆ decode_pdp_info()

static int decode_pdp_info | ( | uint8_t * | data,
|  | size_t | data_len,
|  | struct osmo_gsup_pdp_info * | pdp_info
| ) |  |
| static

References osmo_gsup_pdp_info::apn_enc, osmo_gsup_pdp_info::apn_enc_len, osmo_gsup_pdp_info::context_id, data, decode_pdp_address(), 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_ADDRESS_IE, OSMO_GSUP_PDP_CONTEXT_ID_IE, OSMO_GSUP_PDP_QOS_IE, osmo_shift_tlv(), osmo_gsup_pdp_info::pdp_charg_enc, osmo_gsup_pdp_info::pdp_charg_enc_len, osmo_gsup_pdp_info::qos_enc, and osmo_gsup_pdp_info::qos_enc_len.

Referenced by osmo_gsup_decode().

## ◆ encode_auth_info()

static void encode_auth_info | ( | struct msgb * | msg,
|  | enum osmo_gsup_iei | iei,
|  | const struct osmo_auth_vector * | auth_vector
| ) |  |
| static

References osmo_auth_vector::auth_types, osmo_auth_vector::autn, osmo_auth_vector::ck, iei, osmo_auth_vector::ik, osmo_auth_vector::kc, msg, 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().

## ◆ encode_pdp_info()

static void encode_pdp_info | ( | struct msgb * | msg,
|  | enum osmo_gsup_iei | iei,
|  | const struct osmo_gsup_pdp_info * | pdp_info
| ) |  |
| static

References osmo_gsup_pdp_info::apn_enc, osmo_gsup_pdp_info::apn_enc_len, osmo_gsup_pdp_info::context_id, iei, gsm48_pdp_address::ietf, msg, msgb_length(), msgb_tlv_put(), OSMO_GSUP_ACCESS_POINT_NAME_IE, OSMO_GSUP_CHARG_CHAR_IE, OSMO_GSUP_PDP_ADDRESS_IE, OSMO_GSUP_PDP_CONTEXT_ID_IE, OSMO_GSUP_PDP_QOS_IE, osmo_gsup_pdp_info::pdp_address, osmo_gsup_pdp_info::pdp_charg_enc, osmo_gsup_pdp_info::pdp_charg_enc_len, PDP_TYPE_N_IETF_IPv4, PDP_TYPE_N_IETF_IPv4v6, PDP_TYPE_N_IETF_IPv6, PDP_TYPE_ORG_IETF, osmo_gsup_pdp_info::qos_enc, osmo_gsup_pdp_info::qos_enc_len, osmo_sockaddr::sa, osmo_sockaddr::sin, osmo_sockaddr::sin6, gsm48_pdp_address::type, osmo_sockaddr::u, gsm48_pdp_address::v4, and gsm48_pdp_address::v6.

Referenced by osmo_gsup_encode().

## ◆ osmo_gsup_decode()

int osmo_gsup_decode | ( | const uint8_t * | const_data,
|  | size_t | data_len,
|  | struct osmo_gsup_message * | gsup_msg
| ) |  |

Decode (parse) a GSUP message.

Parameters

  [in] | const_data | input data to be parsed
  [in] | data_len | length of input (const_data)
  [out] | gsup_msg | callee-allocated output data structure

Returns
  0 on success; negative otherwise

References ARRAY_SIZE, osmo_gsup_message::auth_vectors, osmo_gsup_message::auts, osmo_gsup_message::cancel_type, osmo_gsup_message::cause, osmo_gsup_message::cause_bssap, osmo_gsup_message::cause_bssap_set, osmo_gsup_message::cause_rr, osmo_gsup_message::cause_rr_set, osmo_gsup_message::cause_sm, osmo_gsup_message::cn_domain, osmo_gsup_pdp_info::context_id, osmo_gsup_message::current_rat_type, data, decode_auth_info(), decode_pdp_info(), osmo_gsup_message::destination_name, osmo_gsup_message::destination_name_len, DLGSUP, osmo_gsup_message::freeze_ptmsi, GMM_CAUSE_COND_IE_ERR, GMM_CAUSE_INV_MAND_INFO, GMM_CAUSE_PROTO_ERR_UNSPEC, gsm48_decode_bcd_number2(), osmo_gsup_pdp_info::have_info, osmo_gsup_message::hlr_enc, osmo_gsup_message::hlr_enc_len, iei, osmo_gsup_message::imei_enc, osmo_gsup_message::imei_enc_len, osmo_gsup_message::imei_result, osmo_gsup_message::imsi, LOGL_ERROR, LOGL_NOTICE, LOGP, osmo_gsup_message::message_class, 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_decode_big_endian(), OSMO_GSUP_ACCESS_POINT_NAME_IE, OSMO_GSUP_AN_APDU_IE, OSMO_GSUP_AUTH_TUPLE_IE, OSMO_GSUP_AUTS_IE, OSMO_GSUP_CANCEL_TYPE_IE, OSMO_GSUP_CAUSE_BSSAP_IE, OSMO_GSUP_CAUSE_IE, OSMO_GSUP_CAUSE_RR_IE, OSMO_GSUP_CAUSE_SM_IE, OSMO_GSUP_CHARG_CHAR_IE, OSMO_GSUP_CN_DOMAIN_IE, OSMO_GSUP_CURRENT_RAT_TYPE_IE, osmo_gsup_decode_an_apdu(), OSMO_GSUP_DESTINATION_NAME_IE, OSMO_GSUP_FREEZE_PTMSI_IE, OSMO_GSUP_HLR_NUMBER_IE, OSMO_GSUP_IMEI_IE, OSMO_GSUP_IMEI_RESULT_IE, OSMO_GSUP_IMSI_IE, OSMO_GSUP_KC_IE, OSMO_GSUP_MAX_NUM_AUTH_INFO, OSMO_GSUP_MAX_NUM_PDP_INFO, OSMO_GSUP_MESSAGE_CLASS_IE, OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST, OSMO_GSUP_MSISDN_IE, OSMO_GSUP_NUM_VECTORS_REQ_IE, OSMO_GSUP_PCO_IE, OSMO_GSUP_PDP_ADDRESS_IE, OSMO_GSUP_PDP_CONTEXT_ID_IE, OSMO_GSUP_PDP_INFO_COMPL_IE, OSMO_GSUP_PDP_INFO_IE, OSMO_GSUP_RAND_IE, OSMO_GSUP_SESSION_ID_IE, OSMO_GSUP_SESSION_STATE_IE, OSMO_GSUP_SM_ALERT_RSN_IE, OSMO_GSUP_SM_RP_CAUSE_IE, OSMO_GSUP_SM_RP_DA_IE, OSMO_GSUP_SM_RP_MMS_IE, OSMO_GSUP_SM_RP_MR_IE, OSMO_GSUP_SM_RP_OA_IE, OSMO_GSUP_SM_RP_UI_IE, osmo_gsup_sms_decode_sm_rp_da(), osmo_gsup_sms_decode_sm_rp_oa(), OSMO_GSUP_SOURCE_NAME_IE, OSMO_GSUP_SRES_IE, OSMO_GSUP_SS_INFO_IE, OSMO_GSUP_SUPPORTED_RAT_TYPES_IE, osmo_match_shift_tlv(), osmo_shift_tlv(), osmo_shift_v_fixed(), osmo_gsup_message::pco, osmo_gsup_message::pco_len, 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, osmo_gsup_message::session_id, osmo_gsup_message::session_state, osmo_gsup_message::sm_alert_rsn, osmo_gsup_message::sm_rp_cause, osmo_gsup_message::sm_rp_mms, osmo_gsup_message::sm_rp_mr, osmo_gsup_message::sm_rp_ui, osmo_gsup_message::sm_rp_ui_len, osmo_gsup_message::source_name, osmo_gsup_message::source_name_len, osmo_gsup_message::ss_info, osmo_gsup_message::ss_info_len, osmo_gsup_message::supported_rat_types, and osmo_gsup_message::supported_rat_types_len.

## ◆ osmo_gsup_decode_an_apdu()

int osmo_gsup_decode_an_apdu | ( | struct osmo_gsup_message * | gsup_msg,
|  | const uint8_t * | data,
|  | size_t | data_len
| ) |  |

Decode AN-apdu (see 3GPP TS 29.002 7.6.9.1).

Parameters

  [out] | gsup_msg | abstract GSUP message structure
  [in] | data | pointer to the raw IE payload
  [in] | data_len | length of IE pointed by data

Returns
  0 in case of success, negative in case of error

References osmo_gsup_an_apdu::access_network_proto, osmo_gsup_message::an_apdu, data, osmo_gsup_an_apdu::data, osmo_gsup_an_apdu::data_len, DLGSUP, LOGL_ERROR, and LOGP.

Referenced by osmo_gsup_decode().

## ◆ osmo_gsup_encode()

int osmo_gsup_encode | ( | struct msgb * | msg,
|  | const struct osmo_gsup_message * | gsup_msg
| ) |  |

Encode a GSUP message.

Parameters

  [out] | msg | message buffer to which encoded message is written
  [in] | gsup_msg | osmo_gsup_message data to be encoded

Returns
  0 on success; negative otherwise

References osmo_gsup_an_apdu::access_network_proto, osmo_gsup_message::an_apdu, osmo_gsup_message::auth_vectors, osmo_gsup_message::auts, osmo_gsup_message::cancel_type, osmo_gsup_message::cause, osmo_gsup_message::cause_bssap, osmo_gsup_message::cause_bssap_set, osmo_gsup_message::cause_rr, osmo_gsup_message::cause_rr_set, osmo_gsup_message::cause_sm, osmo_gsup_message::cn_domain, osmo_gsup_pdp_info::context_id, osmo_gsup_message::current_rat_type, osmo_gsup_an_apdu::data_len, osmo_gsup_message::destination_name, osmo_gsup_message::destination_name_len, DLGSUP, 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::imei_enc, osmo_gsup_message::imei_enc_len, osmo_gsup_message::imei_result, osmo_gsup_message::imsi, len, LOGL_ERROR, LOGP, osmo_gsup_message::message_class, osmo_gsup_message::message_type, msg, msgb_tl_put(), 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_encode_big_endian(), OSMO_GSUP_AUTH_TUPLE_IE, OSMO_GSUP_AUTS_IE, OSMO_GSUP_CANCEL_TYPE_IE, OSMO_GSUP_CAUSE_BSSAP_IE, OSMO_GSUP_CAUSE_IE, OSMO_GSUP_CAUSE_RR_IE, OSMO_GSUP_CAUSE_SM_IE, OSMO_GSUP_CHARG_CHAR_IE, OSMO_GSUP_CN_DOMAIN_IE, OSMO_GSUP_CURRENT_RAT_TYPE_IE, OSMO_GSUP_DESTINATION_NAME_IE, osmo_gsup_encode_an_apdu(), OSMO_GSUP_FREEZE_PTMSI_IE, OSMO_GSUP_HLR_NUMBER_IE, OSMO_GSUP_IMEI_IE, OSMO_GSUP_IMEI_RESULT_IE, OSMO_GSUP_IMSI_IE, OSMO_GSUP_MAX_PCO_LEN, OSMO_GSUP_MESSAGE_CLASS_IE, OSMO_GSUP_MESSAGE_CLASS_UNSET, OSMO_GSUP_MSGT_SEND_AUTH_INFO_REQUEST, OSMO_GSUP_MSISDN_IE, OSMO_GSUP_NUM_VECTORS_REQ_IE, OSMO_GSUP_PCO_IE, OSMO_GSUP_PDP_CONTEXT_ID_IE, OSMO_GSUP_PDP_INFO_COMPL_IE, OSMO_GSUP_PDP_INFO_IE, OSMO_GSUP_RAND_IE, OSMO_GSUP_SESSION_ID_IE, OSMO_GSUP_SESSION_STATE_IE, OSMO_GSUP_SM_ALERT_RSN_IE, OSMO_GSUP_SM_RP_CAUSE_IE, OSMO_GSUP_SM_RP_MMS_IE, OSMO_GSUP_SM_RP_MR_IE, OSMO_GSUP_SM_RP_UI_IE, osmo_gsup_sms_encode_sm_rp_da(), osmo_gsup_sms_encode_sm_rp_oa(), OSMO_GSUP_SOURCE_NAME_IE, OSMO_GSUP_SS_INFO_IE, OSMO_GSUP_SUPPORTED_RAT_TYPES_IE, OSMO_RAT_COUNT, osmo_rat_type_name(), OSMO_RAT_UNKNOWN, osmo_gsup_message::pco, osmo_gsup_message::pco_len, 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, osmo_gsup_message::session_id, osmo_gsup_message::session_state, osmo_gsup_message::sm_alert_rsn, osmo_gsup_message::sm_rp_cause, osmo_gsup_message::sm_rp_da_type, osmo_gsup_message::sm_rp_mms, osmo_gsup_message::sm_rp_mr, osmo_gsup_message::sm_rp_oa_type, osmo_gsup_message::sm_rp_ui, osmo_gsup_message::sm_rp_ui_len, osmo_gsup_message::source_name, osmo_gsup_message::source_name_len, osmo_gsup_message::ss_info, osmo_gsup_message::ss_info_len, osmo_gsup_message::supported_rat_types, and osmo_gsup_message::supported_rat_types_len.

## ◆ osmo_gsup_encode_an_apdu()

int osmo_gsup_encode_an_apdu | ( | struct msgb * | msg,
|  | const struct osmo_gsup_message * | gsup_msg
| ) |  |

Encode AN-apdu (see 3GPP TS 29.002 7.6.9.1).

Parameters

  [out] | msg | target message buffer (caller-allocated)
  [in] | gsup_msg | abstract GSUP message structure

Returns
  0 in case of success, negative in case of error

References osmo_gsup_an_apdu::access_network_proto, osmo_gsup_message::an_apdu, osmo_gsup_an_apdu::data, osmo_gsup_an_apdu::data_len, DLGSUP, LOGL_ERROR, LOGP, msg, msgb_put(), msgb_tailroom(), msgb_tv_put(), msgb_v_put(), and OSMO_GSUP_AN_APDU_IE.

Referenced by osmo_gsup_encode().

## ◆ osmo_gsup_get_err_msg_type()

int osmo_gsup_get_err_msg_type | ( | enum osmo_gsup_message_type | type_in | ) |

return the error message type corresponding to type_in.

Deprecated, use OSMO_GSUP_TO_MSGT_ERROR() instead.

References OSMO_GSUP_TO_MSGT_ERROR.

## ◆ osmo_gsup_message_class_name()

static const char * osmo_gsup_message_class_name | ( | enum osmo_gsup_message_class | val | ) |
| inline static

References get_value_string(), and osmo_gsup_message_class_names.

## ◆ osmo_gsup_message_type_name()

static const char * osmo_gsup_message_type_name | ( | enum osmo_gsup_message_type | val | ) |
| inline static

References get_value_string(), and osmo_gsup_message_type_names.

## ◆ osmo_gsup_session_state_name()

static const char * osmo_gsup_session_state_name | ( | enum osmo_gsup_session_state | val | ) |
| inline static

References get_value_string(), and osmo_gsup_session_state_names.

## ◆ osmo_gsup_sms_decode_sm_rp_da()

int osmo_gsup_sms_decode_sm_rp_da | ( | struct osmo_gsup_message * | gsup_msg,
|  | uint8_t * | data,
|  | size_t | data_len
| ) |  |

Decode SM-RP-DA IE (see 7.6.8.1), Destination Address.

Parameters

  [out] | gsup_msg | abstract GSUP message structure
  [in] | data | pointer to the raw IE payload
  [in] | data_len | length of IE pointed by data

Returns
  0 in case of success, negative in case of error

References data, DLGSUP, LOGL_ERROR, LOGP, OSMO_GSUP_SMS_SM_RP_ODA_IMSI, OSMO_GSUP_SMS_SM_RP_ODA_MSISDN, OSMO_GSUP_SMS_SM_RP_ODA_NONE, OSMO_GSUP_SMS_SM_RP_ODA_NULL, OSMO_GSUP_SMS_SM_RP_ODA_SMSC_ADDR, osmo_gsup_message::sm_rp_da, osmo_gsup_message::sm_rp_da_len, and osmo_gsup_message::sm_rp_da_type.

Referenced by osmo_gsup_decode().

## ◆ osmo_gsup_sms_decode_sm_rp_oa()

int osmo_gsup_sms_decode_sm_rp_oa | ( | struct osmo_gsup_message * | gsup_msg,
|  | uint8_t * | data,
|  | size_t | data_len
| ) |  |

Decode SM-RP-OA IE (see 7.6.8.2), Originating Address.

Parameters

  [out] | gsup_msg | abstract GSUP message structure
  [in] | data | pointer to the raw IE payload
  [in] | data_len | length of IE pointed by data

Returns
  0 in case of success, negative in case of error

References data, DLGSUP, LOGL_ERROR, LOGP, OSMO_GSUP_SMS_SM_RP_ODA_IMSI, OSMO_GSUP_SMS_SM_RP_ODA_MSISDN, OSMO_GSUP_SMS_SM_RP_ODA_NONE, OSMO_GSUP_SMS_SM_RP_ODA_NULL, OSMO_GSUP_SMS_SM_RP_ODA_SMSC_ADDR, osmo_gsup_message::sm_rp_oa, osmo_gsup_message::sm_rp_oa_len, and osmo_gsup_message::sm_rp_oa_type.

Referenced by osmo_gsup_decode().

## ◆ osmo_gsup_sms_encode_sm_rp_da()

int osmo_gsup_sms_encode_sm_rp_da | ( | struct msgb * | msg,
|  | const struct osmo_gsup_message * | gsup_msg
| ) |  |

Encode SM-RP-DA IE (see 7.6.8.1), Destination Address.

Parameters

  [out] | msg | target message buffer (caller-allocated)
  [in] | gsup_msg | abstract GSUP message structure

Returns
  0 in case of success, negative in case of error

References DLGSUP, LOGL_ERROR, LOGP, msg, msgb_put(), msgb_tv_put(), msgb_v_put(), OSMO_GSUP_SM_RP_DA_IE, OSMO_GSUP_SMS_SM_RP_ODA_IMSI, OSMO_GSUP_SMS_SM_RP_ODA_MSISDN, OSMO_GSUP_SMS_SM_RP_ODA_NONE, OSMO_GSUP_SMS_SM_RP_ODA_NULL, OSMO_GSUP_SMS_SM_RP_ODA_SMSC_ADDR, osmo_gsup_message::sm_rp_da, osmo_gsup_message::sm_rp_da_len, and osmo_gsup_message::sm_rp_da_type.

Referenced by osmo_gsup_encode().

## ◆ osmo_gsup_sms_encode_sm_rp_oa()

int osmo_gsup_sms_encode_sm_rp_oa | ( | struct msgb * | msg,
|  | const struct osmo_gsup_message * | gsup_msg
| ) |  |

Encode SM-RP-OA IE (see 7.6.8.2), Originating Address.

Parameters

  [out] | msg | target message buffer (caller-allocated)
  [in] | gsup_msg | abstract GSUP message structure

Returns
  0 in case of success, negative in case of error

References DLGSUP, LOGL_ERROR, LOGP, msg, msgb_put(), msgb_tv_put(), msgb_v_put(), OSMO_GSUP_SM_RP_OA_IE, OSMO_GSUP_SMS_SM_RP_ODA_MSISDN, OSMO_GSUP_SMS_SM_RP_ODA_NONE, OSMO_GSUP_SMS_SM_RP_ODA_NULL, OSMO_GSUP_SMS_SM_RP_ODA_SMSC_ADDR, osmo_gsup_message::sm_rp_oa, osmo_gsup_message::sm_rp_oa_len, and osmo_gsup_message::sm_rp_oa_type.

Referenced by osmo_gsup_encode().

## Variable Documentation

## ◆ osmo_gsup_message_class_names [1/2]

const struct value_string osmo_gsup_message_class_names[]
| extern

Referenced by osmo_gsup_message_class_name().

## ◆ osmo_gsup_message_class_names [2/2]

const struct value_string osmo_gsup_message_class_names[]

Initial value:
= {
{ OSMO_GSUP_MESSAGE_CLASS_UNSET, "unset" },
{ OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT, "Subscriber-Management" },
{ OSMO_GSUP_MESSAGE_CLASS_SMS, "SMS" },
{ OSMO_GSUP_MESSAGE_CLASS_USSD, "USSD" },
{ OSMO_GSUP_MESSAGE_CLASS_INTER_MSC, "Inter-MSC" },
{ OSMO_GSUP_MESSAGE_CLASS_IPSEC_EPDG, "IPsec-ePDG" },
{}
}
OSMO_GSUP_MESSAGE_CLASS_SMS
@ OSMO_GSUP_MESSAGE_CLASS_SMS
Definition: gsup.h:301
OSMO_GSUP_MESSAGE_CLASS_UNSET
@ OSMO_GSUP_MESSAGE_CLASS_UNSET
Definition: gsup.h:299
OSMO_GSUP_MESSAGE_CLASS_IPSEC_EPDG
@ OSMO_GSUP_MESSAGE_CLASS_IPSEC_EPDG
Definition: gsup.h:304
OSMO_GSUP_MESSAGE_CLASS_INTER_MSC
@ OSMO_GSUP_MESSAGE_CLASS_INTER_MSC
Definition: gsup.h:303
OSMO_GSUP_MESSAGE_CLASS_USSD
@ OSMO_GSUP_MESSAGE_CLASS_USSD
Definition: gsup.h:302
OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT
@ OSMO_GSUP_MESSAGE_CLASS_SUBSCRIBER_MANAGEMENT
Definition: gsup.h:300

Referenced by osmo_gsup_message_class_name().

## ◆ osmo_gsup_message_type_names [1/2]

const struct value_string osmo_gsup_message_type_names[]
| extern

Referenced by osmo_gsup_message_type_name().

## ◆ osmo_gsup_message_type_names [2/2]

const struct value_string osmo_gsup_message_type_names[]

Referenced by osmo_gsup_message_type_name().

## ◆ osmo_gsup_session_state_names [1/2]

const struct value_string osmo_gsup_session_state_names[]
| extern

Referenced by osmo_gsup_session_state_name().

## ◆ osmo_gsup_session_state_names [2/2]

const struct value_string osmo_gsup_session_state_names[]

Initial value:
= {
{ OSMO_GSUP_SESSION_STATE_NONE, "NONE" },
{ OSMO_GSUP_SESSION_STATE_BEGIN, "BEGIN" },
{ OSMO_GSUP_SESSION_STATE_CONTINUE, "CONTINUE" },
{ OSMO_GSUP_SESSION_STATE_END, "END" },
{ 0, NULL }
}
OSMO_GSUP_SESSION_STATE_NONE
@ OSMO_GSUP_SESSION_STATE_NONE
Undefined session state.
Definition: gsup.h:249
OSMO_GSUP_SESSION_STATE_CONTINUE
@ OSMO_GSUP_SESSION_STATE_CONTINUE
Communication of an existing session.
Definition: gsup.h:253
OSMO_GSUP_SESSION_STATE_BEGIN
@ OSMO_GSUP_SESSION_STATE_BEGIN
Initiation of a new session.
Definition: gsup.h:251
OSMO_GSUP_SESSION_STATE_END
@ OSMO_GSUP_SESSION_STATE_END
Indication of the session end.
Definition: gsup.h:255

Referenced by osmo_gsup_session_state_name().