libosmocore 1.10.0.57-8972
Osmocom core library
|
Osmocom Primitives are a method to express inter-layer primitives as used often in ITU/ETSI/3GPP specifications in a generic way. More...
Files | |
file | prim.h |
file | prim.c |
Data Structures | |
struct | osmo_prim_hdr |
Osmocom primitive header. More... | |
struct | osmo_prim_event_map |
single entry in a SAP/PRIM/OP -> EVENT map More... | |
Macros | |
#define | OSMO_PRIM(prim, op) ((prim << 8) | (op & 0xFF)) |
#define | OSMO_PRIM_HDR(oph) OSMO_PRIM((oph)->primitive, (oph)->operation) |
#define | _SAP_GSM_SHIFT 24 |
#define | _SAP_GSM_BASE (0x01 << _SAP_GSM_SHIFT) |
#define | _SAP_TETRA_BASE (0x02 << _SAP_GSM_SHIFT) |
#define | _SAP_SS7_BASE (0x03 << _SAP_GSM_SHIFT) |
#define | OSMO_NO_EVENT 0xFFFFFFFF |
magic value to be used as final record of osmo_prim_event_map More... | |
Typedefs | |
typedef int(* | osmo_prim_cb) (struct osmo_prim_hdr *oph, void *ctx) |
primitive handler callback type More... | |
Enumerations | |
enum | osmo_prim_operation { PRIM_OP_REQUEST , PRIM_OP_RESPONSE , PRIM_OP_INDICATION , PRIM_OP_CONFIRM } |
primitive operation More... | |
Functions | |
static const char * | osmo_prim_operation_name (enum osmo_prim_operation val) |
The upper 8 byte of the technology, the lower 24 bits for the SAP. More... | |
static void | osmo_prim_init (struct osmo_prim_hdr *oph, unsigned int sap, unsigned int primitive, enum osmo_prim_operation operation, struct msgb *msg) |
Convenience function to initialize a primitive header. More... | |
uint32_t | osmo_event_for_prim (const struct osmo_prim_hdr *oph, const struct osmo_prim_event_map *maps) |
resolve the (fsm) event for a given primitive using a map More... | |
Variables | |
const struct value_string | osmo_prim_op_names [] |
human-readable string mapping for osmo_prim_operation More... | |
const struct value_string | osmo_prim_op_names [5] |
human-readable string mapping for osmo_prim_operation More... | |
Osmocom Primitives are a method to express inter-layer primitives as used often in ITU/ETSI/3GPP specifications in a generic way.
(C) 2015-2017 by Harald Welte lafor.nosp@m.ge@g.nosp@m.numon.nosp@m.ks.o.nosp@m.rg All Rights Reserved
They are based on Message buffers and encapsulate any (optional) user payload data with a primitive header. The header contains information on
For more information on the inter-layer primitives concept, see ITU-T X.21@ as found at https://www.itu.int/rec/T-REC-X.212-199511-I/en
SPDX-License-Identifier: GPL-2.0+
#define _SAP_GSM_BASE (0x01 << _SAP_GSM_SHIFT) |
#define _SAP_GSM_SHIFT 24 |
#define _SAP_SS7_BASE (0x03 << _SAP_GSM_SHIFT) |
#define _SAP_TETRA_BASE (0x02 << _SAP_GSM_SHIFT) |
#define OSMO_NO_EVENT 0xFFFFFFFF |
magic value to be used as final record of osmo_prim_event_map
#define OSMO_PRIM | ( | prim, | |
op | |||
) | ((prim << 8) | (op & 0xFF)) |
#define OSMO_PRIM_HDR | ( | oph | ) | OSMO_PRIM((oph)->primitive, (oph)->operation) |
typedef int(* osmo_prim_cb) (struct osmo_prim_hdr *oph, void *ctx) |
primitive handler callback type
enum osmo_prim_operation |
uint32_t osmo_event_for_prim | ( | const struct osmo_prim_hdr * | oph, |
const struct osmo_prim_event_map * | maps | ||
) |
resolve the (fsm) event for a given primitive using a map
[in] | oph | primitive header used as key for match |
[in] | maps | list of mappings from primitive to event |
References osmo_prim_event_map::event, osmo_prim_hdr::operation, osmo_prim_event_map::operation, OSMO_NO_EVENT, osmo_prim_hdr::primitive, osmo_prim_event_map::primitive, osmo_prim_hdr::sap, and osmo_prim_event_map::sap.
|
inlinestatic |
Convenience function to initialize a primitive header.
[in,out] | oph | primitive header |
[in] | sap | Service Access Point |
[in] | primitive | Primitive Number |
[in] | operation | Primitive Operation (REQ/RESP/IND/CONF) |
[in] | msg | Message |
References msg, osmo_prim_hdr::msg, osmo_prim_hdr::operation, osmo_prim_hdr::primitive, and osmo_prim_hdr::sap.
|
inlinestatic |
The upper 8 byte of the technology, the lower 24 bits for the SAP.
References get_value_string(), and osmo_prim_op_names.
const struct value_string osmo_prim_op_names[5] |
human-readable string mapping for osmo_prim_operation
Referenced by osmo_prim_operation_name().
|
extern |
human-readable string mapping for osmo_prim_operation
Referenced by osmo_prim_operation_name().