summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/core/msgb.h8
-rw-r--r--src/bits.c5
-rw-r--r--src/bitvec.c5
-rw-r--r--src/conv.c5
-rw-r--r--src/crcXXgen.c.tpl1
-rw-r--r--src/fsm.c6
-rw-r--r--src/gb/gprs_ns.c2
-rw-r--r--src/gsm/a5.c7
-rw-r--r--src/gsm/abis_nm.c2
-rw-r--r--src/gsm/auth_comp128v1.c6
-rw-r--r--src/gsm/auth_comp128v23.c6
-rw-r--r--src/gsm/auth_core.c4
-rw-r--r--src/gsm/auth_milenage.c6
-rw-r--r--src/gsm/comp128.c21
-rw-r--r--src/gsm/comp128v23.c22
-rw-r--r--src/gsm/gan.c4
-rw-r--r--src/gsm/gea.c9
-rw-r--r--src/gsm/gprs_cipher_core.c5
-rw-r--r--src/gsm/gprs_gea.c6
-rw-r--r--src/gsm/gprs_rlc.c4
-rw-r--r--src/gsm/gsm0341.c18
-rw-r--r--src/gsm/gsm0411_smc.c7
-rw-r--r--src/gsm/gsm0411_smr.c6
-rw-r--r--src/gsm/gsm0411_utils.c54
-rw-r--r--src/gsm/gsm0808.c100
-rw-r--r--src/gsm/gsm0808_utils.c73
-rw-r--r--src/gsm/gsm48.c80
-rw-r--r--src/gsm/gsm48_ie.c122
-rw-r--r--src/gsm/gsm_04_08_gprs.c18
-rw-r--r--src/gsm/gsm_utils.c101
-rw-r--r--src/gsm/gsup.c7
-rw-r--r--src/gsm/ipa.c7
-rw-r--r--src/gsm/lapd_core.c1
-rw-r--r--src/gsm/lapdm.c1
-rw-r--r--src/gsm/oap.c7
-rw-r--r--src/gsm/rsl.c38
-rw-r--r--src/gsm/tlv_parser.c19
-rw-r--r--src/gsmtap_util.c1
-rw-r--r--src/logging.c1
-rw-r--r--src/logging_gsmtap.c8
-rw-r--r--src/logging_syslog.c4
-rw-r--r--src/loggingrb.c4
-rw-r--r--src/macaddr.c4
-rw-r--r--src/msgb.c29
-rw-r--r--src/plugin.c6
-rw-r--r--src/rate_ctr.c1
-rw-r--r--src/select.c5
-rw-r--r--src/sercomm.c1
-rw-r--r--src/serial.c5
-rw-r--r--src/signal.c2
-rw-r--r--src/socket.c5
-rw-r--r--src/strrb.c6
-rw-r--r--src/timer.c4
-rw-r--r--src/utils.c1
-rw-r--r--src/vty/command.c3
-rw-r--r--src/vty/fsm_vty.c12
-rw-r--r--src/vty/logging_vty.c12
-rw-r--r--src/vty/stats_vty.c11
-rw-r--r--src/vty/telnet_interface.c6
-rw-r--r--src/vty/utils.c50
-rw-r--r--src/vty/vector.c7
-rw-r--r--src/vty/vty.c2
-rw-r--r--src/write_queue.c1
63 files changed, 827 insertions, 157 deletions
diff --git a/include/osmocom/core/msgb.h b/include/osmocom/core/msgb.h
index afb887c0..f5dd323b 100644
--- a/include/osmocom/core/msgb.h
+++ b/include/osmocom/core/msgb.h
@@ -29,13 +29,7 @@
* @{
*/
-/*! \file msgb.h
- * \brief Osmocom message buffers
- * The Osmocom message buffers are modelled after the 'struct skb'
- * inside the Linux kernel network stack. As they exist in userspace,
- * they are much simplified. However, terminology such as headroom,
- * tailroom, push/pull/put etc. remains the same.
- */
+/*! \file msgb.h */
#define MSGB_DEBUG
diff --git a/src/bits.c b/src/bits.c
index 0c77b279..fe92f933 100644
--- a/src/bits.c
+++ b/src/bits.c
@@ -26,12 +26,11 @@
/*! \addtogroup bits
* @{
- */
-
-/*! \file bits.c
* \brief Osmocom bit level support code
*/
+/*! \file bits.c */
+
/*! \brief convert unpacked bits to packed bits, return length in bytes
* \param[out] out output buffer of packed bits
diff --git a/src/bitvec.c b/src/bitvec.c
index c895cffa..41e4f64c 100644
--- a/src/bitvec.c
+++ b/src/bitvec.c
@@ -24,12 +24,11 @@
/*! \addtogroup bitvec
* @{
- */
-
-/*! \file bitvec.c
* \brief Osmocom bit vector abstraction
*/
+/*! \file bitvec.c */
+
#include <errno.h>
#include <stdint.h>
#include <string.h>
diff --git a/src/conv.c b/src/conv.c
index 79b3a7c0..8e97e52e 100644
--- a/src/conv.c
+++ b/src/conv.c
@@ -24,11 +24,10 @@
/*! \addtogroup conv
* @{
+ * \brief Osmocom convolutional encoder and decoder
*/
-/*! \file conv.c
- * Osmocom convolutional encoder and decoder
- */
+/*! \file conv.c */
#include "config.h"
#ifdef HAVE_ALLOCA_H
#include <alloca.h>
diff --git a/src/crcXXgen.c.tpl b/src/crcXXgen.c.tpl
index 7e45c111..1a69e852 100644
--- a/src/crcXXgen.c.tpl
+++ b/src/crcXXgen.c.tpl
@@ -24,6 +24,7 @@
/*! \addtogroup crcgen
* @{
+ * \brief Osmocom generic CRC routines
*/
/*! \file crcXXgen.c
diff --git a/src/fsm.c b/src/fsm.c
index 5e744827..fbe22d72 100644
--- a/src/fsm.c
+++ b/src/fsm.c
@@ -29,9 +29,6 @@
/*! \addtogroup fsm
* @{
- */
-
-/*! \file fsm.c
* \brief Finite State Machine abstraction
*
* This is a generic C-language abstraction for implementing finite
@@ -84,9 +81,10 @@
*
* In order to attach private state to the \ref osmo_fsm_inst, it
* offers an opaque priv pointer.
- *
*/
+/*! \file fsm.c */
+
LLIST_HEAD(osmo_g_fsms);
static bool fsm_log_addr = true;
diff --git a/src/gb/gprs_ns.c b/src/gb/gprs_ns.c
index 23c0be88..17933ed1 100644
--- a/src/gb/gprs_ns.c
+++ b/src/gb/gprs_ns.c
@@ -1648,4 +1648,4 @@ void gprs_ns_set_log_ss(int ss)
DNS = ss;
}
-/*! }@ */
+/*! @} */
diff --git a/src/gsm/a5.c b/src/gsm/a5.c
index dbba0f20..23cbe0c9 100644
--- a/src/gsm/a5.c
+++ b/src/gsm/a5.c
@@ -26,13 +26,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-/*! \addtogroup a5
+/*! \addtogroup crypto
* @{
+ * \brief Osmocom GSM/GPRS ciphering algorithm implementation
*/
-/*! \file gsm/a5.c
- * \brief Osmocom GSM A5 ciphering algorithm implementation
- */
+/*! \file gsm/a5.c */
#include <errno.h>
#include <string.h>
diff --git a/src/gsm/abis_nm.c b/src/gsm/abis_nm.c
index 73759cbd..c9549027 100644
--- a/src/gsm/abis_nm.c
+++ b/src/gsm/abis_nm.c
@@ -22,6 +22,8 @@
/*! \addtogroup oml
* @{
+ * \brief GSM Network Management (OML) messages on the A-bis interface
+ * 3GPP TS 12.21 version 8.0.0 Release 1999 / ETSI TS 100 623 V8.0.0
*/
/*! \file abis_nm.c */
diff --git a/src/gsm/auth_comp128v1.c b/src/gsm/auth_comp128v1.c
index c40027ee..3b645d2a 100644
--- a/src/gsm/auth_comp128v1.c
+++ b/src/gsm/auth_comp128v1.c
@@ -24,6 +24,10 @@
#include <osmocom/crypt/auth.h>
#include <osmocom/gsm/comp128.h>
+/*! \addtogroup auth
+ * @{
+ */
+
static int c128v1_gen_vec(struct osmo_auth_vector *vec,
struct osmo_sub_auth_data *aud,
const uint8_t *_rand)
@@ -45,3 +49,5 @@ static __attribute__((constructor)) void on_dso_load_c128(void)
{
osmo_auth_register(&c128v1_alg);
}
+
+/*! @} */
diff --git a/src/gsm/auth_comp128v23.c b/src/gsm/auth_comp128v23.c
index 168f8865..b0900af2 100644
--- a/src/gsm/auth_comp128v23.c
+++ b/src/gsm/auth_comp128v23.c
@@ -27,6 +27,10 @@
#include <osmocom/crypt/auth.h>
#include <osmocom/gsm/comp128v23.h>
+/*! \addtogroup auth
+ * @{
+ */
+
static int c128v2_gen_vec(struct osmo_auth_vector *vec,
struct osmo_sub_auth_data *aud,
const uint8_t *_rand)
@@ -66,3 +70,5 @@ static __attribute__((constructor)) void on_dso_load_c128(void)
osmo_auth_register(&c128v2_alg);
osmo_auth_register(&c128v3_alg);
}
+
+/*! @} */
diff --git a/src/gsm/auth_core.c b/src/gsm/auth_core.c
index 9ca5d93b..c9e403c5 100644
--- a/src/gsm/auth_core.c
+++ b/src/gsm/auth_core.c
@@ -32,10 +32,10 @@
/*! \addtogroup auth
* @{
+ * \brief GSM/GPRS/3G authentication core infrastructure
*/
-/* \file auth_core.c
- */
+/* \file auth_core.c */
static LLIST_HEAD(osmo_auths);
diff --git a/src/gsm/auth_milenage.c b/src/gsm/auth_milenage.c
index c1331b5b..41e538d2 100644
--- a/src/gsm/auth_milenage.c
+++ b/src/gsm/auth_milenage.c
@@ -25,6 +25,10 @@
#include "milenage/common.h"
#include "milenage/milenage.h"
+/*! \addtogroup auth
+ * @{
+ */
+
static int milenage_gen_vec(struct osmo_auth_vector *vec,
struct osmo_sub_auth_data *aud,
const uint8_t *_rand)
@@ -160,3 +164,5 @@ static __attribute__((constructor)) void on_dso_load_milenage(void)
{
osmo_auth_register(&milenage_alg);
}
+
+/*! @} */
diff --git a/src/gsm/comp128.c b/src/gsm/comp128.c
index abb49179..cb3a3092 100644
--- a/src/gsm/comp128.c
+++ b/src/gsm/comp128.c
@@ -68,6 +68,14 @@
#include <string.h>
#include <stdint.h>
+/*! \addtogroup auth
+ * @{
+ */
+
+/*! \file comp128.c
+ * \brief COMP128 v1; common/old GSM Authentication Algorithm (A3/A8)
+ */
+
/* The compression tables (just copied ...) */
static const uint8_t table_0[512] = {
102, 177, 186, 162, 2, 156, 112, 75, 55, 25, 8, 12, 251, 193, 246, 188,
@@ -184,6 +192,11 @@ _comp128_permutation(uint8_t *x, uint8_t *bits)
x[(i>>3)+16] |= bits[(i*17) & 127] << (7-(i&7));
}
+/*! \brief Perform COMP128v1 algorithm
+ * \param[in] ki Secret Key K(i) of subscriber
+ * \param[in] rand Random Challenge
+ * \param[out] sres user-supplied buffer for storing computed SRES value
+ * \param[out] kc user-supplied buffer for storing computed Kc value */
void
comp128v1(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc)
{
@@ -228,8 +241,16 @@ comp128v1(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc)
kc[7] = 0;
}
+
+/*! \brief Perform COMP128v1 algorithm
+ * \param[in] ki Secret Key K(i) of subscriber
+ * \param[in] rand Random Challenge
+ * \param[out] sres user-supplied buffer for storing computed SRES value
+ * \param[out] kc user-supplied buffer for storing computed Kc value */
void
comp128(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc)
{
comp128v1(ki, rand, sres, kc);
}
+
+/*! @} */
diff --git a/src/gsm/comp128v23.c b/src/gsm/comp128v23.c
index e21b718e..bfb4a0ee 100644
--- a/src/gsm/comp128v23.c
+++ b/src/gsm/comp128v23.c
@@ -28,6 +28,14 @@
#include <stdint.h>
#include <string.h>
+/*! \addtogroup auth
+ * @{
+ */
+
+/*! \file comp128v23.c
+ * \brief COMP128 v2 / v3; Common Algorithm used for GSM Authentication (A3/A8)
+ */
+
static const uint8_t table0[256] = {
197, 235, 60, 151, 98, 96, 3, 100, 248, 118, 42, 117, 172, 211, 181, 203, 61,
126, 156, 87, 149, 224, 55, 132, 186, 63, 238, 255, 85, 83, 152, 33, 160,
@@ -101,6 +109,12 @@ _comp128v23_internal(uint8_t *output, const uint8_t *kxor, const uint8_t *rand)
}
}
+/*! \brief Perform COMP128v3 algorithm
+ * \param[in] ki Secret Key K(i) of subscriber
+ * \param[in] rand Random Challenge
+ * \param[out] sres user-supplied buffer for storing computed SRES value
+ * \param[out] kc user-supplied buffer for storing computed Kc value
+ * \returns 0 */
int
comp128v3(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc)
{
@@ -147,6 +161,12 @@ comp128v3(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc)
return 0;
}
+/*! \brief Perform COMP128v2 algorithm
+ * \param[in] ki Secret Key K(i) of subscriber
+ * \param[in] rand Random Challenge
+ * \param[out] sres user-supplied buffer for storing computed SRES value
+ * \param[out] kc user-supplied buffer for storing computed Kc value
+ * \returns 0 */
int
comp128v2(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc)
{
@@ -155,3 +175,5 @@ comp128v2(const uint8_t *ki, const uint8_t *rand, uint8_t *sres, uint8_t *kc)
kc[6] &= 0xfc;
return r;
}
+
+/*! @} */
diff --git a/src/gsm/gan.c b/src/gsm/gan.c
index 0bcaa175..1d98b38b 100644
--- a/src/gsm/gan.c
+++ b/src/gsm/gan.c
@@ -21,6 +21,10 @@
#include <osmocom/gsm/protocol/gsm_44_318.h>
+/*! \file gan.c
+ * \brief Generic Access Network (GAN) / UMA according to TS 44.318
+ */
+
const struct value_string gan_msgt_vals[] = {
{ GA_MT_RC_DISCOVERY_REQUEST, "GA-RC DISCOVERY REQUEST" },
diff --git a/src/gsm/gea.c b/src/gsm/gea.c
index b8f6768a..8d026a29 100644
--- a/src/gsm/gea.c
+++ b/src/gsm/gea.c
@@ -30,6 +30,13 @@
#include <stdint.h>
#include <string.h>
+/*! \addtogroup crypto
+ * @{
+ */
+
+/*! \file gsm/gea.c */
+
+
/*! \brief Performs the GEA4 algorithm as in 3GPP TS 55.226 V9.0.0
* \param[in,out] out Buffer for gamma for encrypted/decrypted
* \param[in] len Length of out, in bytes
@@ -58,3 +65,5 @@ int gea3(uint8_t *out, uint16_t len, uint8_t *kc, uint32_t iv,
osmo_c4(ck, kc);
return gea4(out, len, ck, iv, direction);
}
+
+/*! @} */
diff --git a/src/gsm/gprs_cipher_core.c b/src/gsm/gprs_cipher_core.c
index da6e0a83..a0cf1851 100644
--- a/src/gsm/gprs_cipher_core.c
+++ b/src/gsm/gprs_cipher_core.c
@@ -29,6 +29,10 @@
#include <osmocom/crypt/gprs_cipher.h>
+/*! \addtogroup crypto
+ * @{
+ */
+
static LLIST_HEAD(gprs_ciphers);
static struct gprs_cipher_impl *selected_ciphers[_GPRS_ALGO_NUM];
@@ -125,3 +129,4 @@ uint32_t gprs_cipher_gen_input_i(uint32_t iov_i, uint32_t lfn, uint32_t oc)
{
return iov_i + lfn + oc;
}
+/*! @} */
diff --git a/src/gsm/gprs_gea.c b/src/gsm/gprs_gea.c
index 8ff16484..836ee68c 100644
--- a/src/gsm/gprs_gea.c
+++ b/src/gsm/gprs_gea.c
@@ -27,6 +27,10 @@
#include <stdint.h>
+/*! \addtogroup crypto
+ * @{
+ */
+
static struct gprs_cipher_impl gea3_impl = {
.algo = GPRS_ALGO_GEA3,
.name = "GEA3 (libosmogsm built-in)",
@@ -46,3 +50,5 @@ static __attribute__((constructor)) void on_dso_load_gea(void)
gprs_cipher_register(&gea3_impl);
gprs_cipher_register(&gea4_impl);
}
+
+/*! @} */
diff --git a/src/gsm/gprs_rlc.c b/src/gsm/gprs_rlc.c
index a4053ef6..d1247be6 100644
--- a/src/gsm/gprs_rlc.c
+++ b/src/gsm/gprs_rlc.c
@@ -5,6 +5,10 @@
#include <osmocom/coding/gsm0503_coding.h>
#include <osmocom/gprs/protocol/gsm_04_60.h>
+/*! \file gsm/gprs_rlc.c
+ * \brief helper functions for (E)GPRS RLC according to 3GPP TS 44.060
+ */
+
#define EGPRS_CPS_TYPE1_TBL_SZ 29
#define EGPRS_CPS_TYPE2_TBL_SZ 8
#define EGPRS_CPS_TYPE3_TBL_SZ 16
diff --git a/src/gsm/gsm0341.c b/src/gsm/gsm0341.c
index 1c14d3ed..2592b54e 100644
--- a/src/gsm/gsm0341.c
+++ b/src/gsm/gsm0341.c
@@ -27,6 +27,22 @@
#include <osmocom/core/talloc.h>
#include <osmocom/gsm/protocol/gsm_03_41.h>
+/*! \addtogroup sms
+ * @{
+ */
+
+/*! \brief Encode a 3GPP TS 03.41 SMS-CB message
+ * \param[in] ctx talloc allocation context
+ * \param[in] geo_scope Geographic Scope
+ * \param[in] msg_code Message Code
+ * \param[in] update Is this an update?
+ * \param[in] msg_id Message ID
+ * \param[in] dcs Data Coding Scheme
+ * \param[in] page_total Total number of pages
+ * \param[in] page_cur Current Page (up to \a page_total)
+ * \param[in] data Message data (copied 1:1)
+ * \param[in] len Length of \a data in bytes (up to 88)
+ * \returns callee-allocated TS 03.41 message with encoded data */
struct gsm341_ms_message *
gsm0341_build_msg(void *ctx, uint8_t geo_scope, uint8_t msg_code,
uint8_t update, uint16_t msg_id, uint8_t dcs,
@@ -57,3 +73,5 @@ gsm0341_build_msg(void *ctx, uint8_t geo_scope, uint8_t msg_code,
return cbmsg;
}
+
+/*! @} */
diff --git a/src/gsm/gsm0411_smc.c b/src/gsm/gsm0411_smc.c
index 4c083659..03016b92 100644
--- a/src/gsm/gsm0411_smc.c
+++ b/src/gsm/gsm0411_smc.c
@@ -60,6 +60,11 @@
#include <osmocom/gsm/gsm0411_smc.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>
+/*! \addtogroup sms
+ * @{
+ * \brief Point-to-Point (PP) Short Message Service (SMS) as per TS 04.11
+ */
+
static void cp_timer_expired(void *data);
#define MAX_SMS_RETRY 2
@@ -569,3 +574,5 @@ int gsm411_smc_recv(struct gsm411_smc_inst *inst, int msg_type,
return rc;
}
+
+/*! @} */
diff --git a/src/gsm/gsm0411_smr.c b/src/gsm/gsm0411_smr.c
index eb8aec0d..d120f2df 100644
--- a/src/gsm/gsm0411_smr.c
+++ b/src/gsm/gsm0411_smr.c
@@ -62,6 +62,10 @@
#define SMR_LOG_STR "SMR(%" PRIu64 ") "
+/*! \addtogroup sms
+ * @{
+ */
+
static void rp_timer_expired(void *data);
/* init a new instance */
@@ -484,3 +488,5 @@ int gsm411_smr_recv(struct gsm411_smr_inst *inst, int msg_type,
return rc;
}
+
+/*! @} */
diff --git a/src/gsm/gsm0411_utils.c b/src/gsm/gsm0411_utils.c
index b84c9f25..543775cc 100644
--- a/src/gsm/gsm0411_utils.c
+++ b/src/gsm/gsm0411_utils.c
@@ -38,16 +38,24 @@
#include <osmocom/gsm/protocol/gsm_03_40.h>
#include <osmocom/gsm/protocol/gsm_04_11.h>
+/*! \addtogroup sms
+ * @{
+ */
+
#define GSM411_ALLOC_SIZE 1024
#define GSM411_ALLOC_HEADROOM 128
+/*! \brief Allocate a message buffer for use as TS 04.11 message
+ * \returns allocated message buffer */
struct msgb *gsm411_msgb_alloc(void)
{
return msgb_alloc_headroom(GSM411_ALLOC_SIZE, GSM411_ALLOC_HEADROOM,
"GSM 04.11");
}
-/* Turn int into semi-octet representation: 98 => 0x89 */
+/*! \brief Turn int into semi-octet representation: 98 => 0x89
+ * \param[in] integer value representing decimal number 0..99
+ * \returns BSC encoded as nibbles, swapped */
uint8_t gsm411_bcdify(uint8_t value)
{
uint8_t ret;
@@ -58,7 +66,9 @@ uint8_t gsm411_bcdify(uint8_t value)
return ret;
}
-/* Turn semi-octet representation into int: 0x89 => 98 */
+/*! \brief Turn semi-octet representation into int: 0x89 => 98
+ * \param[in] value byte containing two BCD nibbles in revere order
+ * \returns integer representing decoded, re-ordered nibbles */
uint8_t gsm411_unbcdify(uint8_t value)
{
uint8_t ret;
@@ -73,7 +83,9 @@ uint8_t gsm411_unbcdify(uint8_t value)
return ret;
}
-/* Generate 03.40 TP-SCTS */
+/*! \brief Generate 03.40 TP-SCTS
+ * \param[out] scts Caller-provided buffer to store SCTS (7 octets)
+ * \param[in] time to encode */
void gsm340_gen_scts(uint8_t *scts, time_t time)
{
struct tm *tm = gmtime(&time);
@@ -92,7 +104,9 @@ void gsm340_gen_scts(uint8_t *scts, time_t time)
#endif
}
-/* Decode 03.40 TP-SCTS (into utc/gmt timestamp) */
+/*! \brief Decode 03.40 TP-SCTS (into utc/gmt timestamp)