From eff215a8bb766e62a02bcc0f4334470a53475001 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 25 Apr 2016 16:01:15 +0200 Subject: osmo_gsup_messge.[ch] documentation update (doxygen) --- openbsc/include/openbsc/osmo_gsup_messages.h | 18 +++++++++++++++--- openbsc/src/gprs/osmo_gsup_messages.c | 10 ++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) (limited to 'openbsc') diff --git a/openbsc/include/openbsc/osmo_gsup_messages.h b/openbsc/include/openbsc/osmo_gsup_messages.h index 4ccc029fc..8156b739b 100644 --- a/openbsc/include/openbsc/osmo_gsup_messages.h +++ b/openbsc/include/openbsc/osmo_gsup_messages.h @@ -1,11 +1,9 @@ /* Osmocom Subscriber Update Protocol message encoder/decoder */ -/* (C) 2014 by Sysmocom s.f.m.c. GmbH +/* (C) 2014 by Sysmocom s.f.m.c. GmbH, Author: Jacob Erlbeck * (C) 2016 by Harald Welte * All Rights Reserved * - * Author: Jacob Erlbeck - * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation; either version 3 of the License, or @@ -28,12 +26,16 @@ #include #include +/*! Maximum nubmer of PDP inside \ref osmo_gsup_message */ #define OSMO_GSUP_MAX_NUM_PDP_INFO 10 /* GSM 09.02 limits this to 50 */ +/*! Maximum number of auth info inside \ref osmo_gsup_message */ #define OSMO_GSUP_MAX_NUM_AUTH_INFO 5 +/*! Maximum number of octets encoding MSISDN in BCD format */ #define OSMO_GSUP_MAX_MSISDN_LEN 9 #define OSMO_GSUP_PDP_TYPE_SIZE 2 +/*! Information Element Identifiers for GSUP IEs */ enum osmo_gsup_iei { OSMO_GSUP_IMSI_IE = 0x01, OSMO_GSUP_CAUSE_IE = 0x02, @@ -59,6 +61,7 @@ enum osmo_gsup_iei { OSMO_GSUP_RES_IE = 0x27, }; +/*! GSUP message type */ enum osmo_gsup_message_type { OSMO_GSUP_MSGT_UPDATE_LOCATION_REQUEST = 0b00000100, OSMO_GSUP_MSGT_UPDATE_LOCATION_ERROR = 0b00000101, @@ -94,16 +97,25 @@ enum osmo_gsup_cancel_type { OSMO_GSUP_CANCEL_TYPE_WITHDRAW = 2, /* on wire: 1 */ }; +/*! parsed/decoded PDP context information */ struct osmo_gsup_pdp_info { unsigned int context_id; int have_info; + /*! Type of PDP context */ uint16_t pdp_type; + /*! APN information, still in encoded form. Can be NULL if no + * APN information included */ const uint8_t *apn_enc; + /*! length (in octets) of apn_enc */ size_t apn_enc_len; + /*! QoS information, still in encoded form. Can be NULL if no + * QoS information included */ const uint8_t *qos_enc; + /*! length (in octets) of qos_enc */ size_t qos_enc_len; }; +/*! parsed/decoded GSUP protocol message */ struct osmo_gsup_message { enum osmo_gsup_message_type message_type; char imsi[GSM23003_IMSI_MAX_DIGITS+2]; diff --git a/openbsc/src/gprs/osmo_gsup_messages.c b/openbsc/src/gprs/osmo_gsup_messages.c index e820b5a17..430cba750 100644 --- a/openbsc/src/gprs/osmo_gsup_messages.c +++ b/openbsc/src/gprs/osmo_gsup_messages.c @@ -174,6 +174,12 @@ parse_error: return -1; } +/*! Decode (parse) a GSUP message + * \param[in] const_data input data to be parsed + * \param[in] data_len length of input (\a const_data) + * \param[out] gsup_msg callee-allocated output data structure + * \returns 0 on success; negative otherwise + */ int osmo_gsup_decode(const uint8_t *const_data, size_t data_len, struct osmo_gsup_message *gsup_msg) { @@ -392,6 +398,10 @@ static void encode_auth_info(struct msgb *msg, enum osmo_gsup_iei iei, *len_field = msgb_length(msg) - old_len; } +/*! Encode a GSUP message + * \param[out] msg message buffer to which encoded message is written + * \param[in] gsup_msg \ref osmo_gsup_message data to be encoded + */ void osmo_gsup_encode(struct msgb *msg, const struct osmo_gsup_message *gsup_msg) { uint8_t u8; -- cgit v1.2.3