libosmogsm  1.9.2
Osmocom GSM library
Ipa

Macros

#define IPA_ALLOC_SIZE   1200
 
#define IPA_STRING_MAX   64
 

Functions

const char * ipa_ccm_idtag_name (uint8_t tag)
 
int ipa_ccm_idtag_parse (struct tlv_parsed *dec, unsigned char *buf, int len)
 Parse the payload part of an IPA CCM ID GET, return tlv_parsed format. More...
 
int ipa_ccm_idtag_parse_off (struct tlv_parsed *dec, unsigned char *buf, int len, const int len_offset)
 Parse the payload part of an IPA CCM ID GET, return tlv_parsed format. More...
 
int ipa_ccm_id_get_parse (struct tlv_parsed *dec, const uint8_t *buf, unsigned int len)
 Parse the payload part of an IPA CCM ID GET, return tlv_parsed format. More...
 
int ipa_ccm_id_resp_parse (struct tlv_parsed *dec, const uint8_t *buf, unsigned int len)
 Parse the payload part of an IPA CCM ID RESP, return tlv_parsed format. More...
 
int ipa_parse_unitid (const char *str, struct ipaccess_unit *unit_data)
 
int ipa_ccm_tlv_to_unitdata (struct ipaccess_unit *ud, const struct tlv_parsed *tp)
 
struct msgbipa_ccm_make_id_resp (const struct ipaccess_unit *dev, const uint8_t *ies_req, unsigned int num_ies_req)
 Generate IPA CCM ID RESP based on list of IEs. More...
 
struct msgbipa_ccm_make_id_resp_from_req (const struct ipaccess_unit *dev, const uint8_t *data, unsigned int len)
 Generate IPA CCM ID RESP based on requets payload. More...
 
int ipa_send (int fd, const void *msg, size_t msglen)
 
int ipa_ccm_send_pong (int fd)
 
int ipa_ccm_send_id_ack (int fd)
 
int ipa_ccm_send_id_req (int fd)
 
int ipa_ccm_rcvmsg_base (struct msgb *msg, struct osmo_fd *bfd)
 
int ipa_ccm_rcvmsg_bts_base (struct msgb *msg, struct osmo_fd *bfd)
 
void ipa_prepend_header_ext (struct msgb *msg, int proto)
 
void ipa_prepend_header (struct msgb *msg, int proto)
 
struct msgbipa_msg_alloc (int headroom)
 

Variables

static const uint8_t ipa_pong_msg []
 
static const uint8_t ipa_id_ack_msg []
 
static const uint8_t ipa_id_req_msg []
 
static const char * idtag_names []
 

Detailed Description

IPA Multiplex utility routines

Macro Definition Documentation

◆ IPA_ALLOC_SIZE

#define IPA_ALLOC_SIZE   1200

◆ IPA_STRING_MAX

#define IPA_STRING_MAX   64

Function Documentation

◆ ipa_ccm_id_get_parse()

int ipa_ccm_id_get_parse ( struct tlv_parsed dec,
const uint8_t *  buf,
unsigned int  len 
)

Parse the payload part of an IPA CCM ID GET, return tlv_parsed format.

The odd payload format of those messages is structured as follows:

  • 8bit length value (length of payload and tag)
  • 8bit tag value
  • optional, variable-length payload
    Parameters
    [out]decCaller-provided/allocated output structure for parsed payload
    [in]bufBuffer containing the payload (excluding 1 byte msg_type) of the message
    [in]lenLength of buf in octets
    Returns
    0 on success; negative on error

References DLMI, ipa_ccm_idtag_name(), len, tlv_p_entry::len, LOGL_DEBUG, LOGL_ERROR, LOGP, LOGPC, tlv_parsed::lv, and tlv_p_entry::val.

◆ ipa_ccm_id_resp_parse()

int ipa_ccm_id_resp_parse ( struct tlv_parsed dec,
const uint8_t *  buf,
unsigned int  len 
)

Parse the payload part of an IPA CCM ID RESP, return tlv_parsed format.

The odd payload format of those messages is structured as follows:

  • 16bit length value (length of payload and tag)
  • 8bit tag value
  • optional, variable-length payload
    Parameters
    [out]decCaller-provided/allocated output structure for parsed payload
    [in]bufBuffer containing the payload (excluding 1 byte msg_type) of the message
    [in]lenLength of buf in octets
    Returns
    0 on success; negative on error

References DEBUGPC, DLMI, ipa_ccm_idtag_name(), len, tlv_p_entry::len, LOGL_DEBUG, LOGL_ERROR, LOGP, LOGPC, tlv_parsed::lv, and tlv_p_entry::val.

◆ ipa_ccm_idtag_name()

const char* ipa_ccm_idtag_name ( uint8_t  tag)

◆ ipa_ccm_idtag_parse()

int ipa_ccm_idtag_parse ( struct tlv_parsed dec,
unsigned char *  buf,
int  len 
)

Parse the payload part of an IPA CCM ID GET, return tlv_parsed format.

References ipa_ccm_idtag_parse_off(), and len.

◆ ipa_ccm_idtag_parse_off()

int ipa_ccm_idtag_parse_off ( struct tlv_parsed dec,
unsigned char *  buf,
int  len,
const int  len_offset 
)

Parse the payload part of an IPA CCM ID GET, return tlv_parsed format.

WARNING: This function can only parse correctly IPA CCM ID GET/REQUEST messages, and only when len_offset is passed value of 1.

Parameters
[out]decCaller-provided/allocated output structure for parsed payload
[in]bufBuffer containing the payload (excluding 1 byte msg_type) of the message
[in]lenLength of buf in octets
[in]len_offsetOffset from end of len field to start of value (ommiting tag). Must be 1!
Returns
0 on success; negative on error

References DLMI, ipa_ccm_idtag_name(), len, tlv_p_entry::len, LOGL_DEBUG, LOGL_ERROR, LOGP, LOGPC, tlv_parsed::lv, and tlv_p_entry::val.

Referenced by ipa_ccm_idtag_parse().

◆ ipa_ccm_make_id_resp()

struct msgb* ipa_ccm_make_id_resp ( const struct ipaccess_unit dev,
const uint8_t *  ies_req,
unsigned int  num_ies_req 
)

◆ ipa_ccm_make_id_resp_from_req()

struct msgb* ipa_ccm_make_id_resp_from_req ( const struct ipaccess_unit dev,
const uint8_t *  data,
unsigned int  len 
)

Generate IPA CCM ID RESP based on requets payload.

Parameters
[in]devDescriptor describing identity data for response
[in]dataPayload of the IPA CCM ID GET request
[in]lenLength of data in octets
Returns
Message buffer with IPA CCM ID RESP

References data, DLINP, ipa_ccm_make_id_resp(), len, LOGL_ERROR, and LOGP.

◆ ipa_ccm_rcvmsg_base()

int ipa_ccm_rcvmsg_base ( struct msgb msg,
struct osmo_fd bfd 
)

◆ ipa_ccm_rcvmsg_bts_base()

int ipa_ccm_rcvmsg_bts_base ( struct msgb msg,
struct osmo_fd bfd 
)

◆ ipa_ccm_send_id_ack()

int ipa_ccm_send_id_ack ( int  fd)

References fd, ipa_id_ack_msg, and ipa_send().

Referenced by ipa_ccm_rcvmsg_base().

◆ ipa_ccm_send_id_req()

int ipa_ccm_send_id_req ( int  fd)

References fd, ipa_id_req_msg, and ipa_send().

◆ ipa_ccm_send_pong()

int ipa_ccm_send_pong ( int  fd)

◆ ipa_ccm_tlv_to_unitdata()

◆ ipa_msg_alloc()

struct msgb* ipa_msg_alloc ( int  headroom)

References msgb_alloc_headroom().

Referenced by ipa_ccm_make_id_resp().

◆ ipa_parse_unitid()

int ipa_parse_unitid ( const char *  str,
struct ipaccess_unit unit_data 
)

◆ ipa_prepend_header()

void ipa_prepend_header ( struct msgb msg,
int  proto 
)

◆ ipa_prepend_header_ext()

void ipa_prepend_header_ext ( struct msgb msg,
int  proto 
)

◆ ipa_send()

int ipa_send ( int  fd,
const void *  msg,
size_t  msglen 
)

Variable Documentation

◆ idtag_names

const char* idtag_names[]
static
Initial value:
= {
[IPAC_IDTAG_SERNR] = "Serial_Number",
[IPAC_IDTAG_UNITNAME] = "Unit_Name",
[IPAC_IDTAG_LOCATION1] = "Location_1",
[IPAC_IDTAG_LOCATION2] = "Location_2",
[IPAC_IDTAG_EQUIPVERS] = "Equipment_Version",
[IPAC_IDTAG_SWVERSION] = "Software_Version",
[IPAC_IDTAG_IPADDR] = "IP_Address",
[IPAC_IDTAG_MACADDR] = "MAC_Address",
[IPAC_IDTAG_UNIT] = "Unit_ID",
}

Referenced by ipa_ccm_idtag_name().

◆ ipa_id_ack_msg

const uint8_t ipa_id_ack_msg[]
static
Initial value:

Referenced by ipa_ccm_send_id_ack().

◆ ipa_id_req_msg

const uint8_t ipa_id_req_msg[]
static

◆ ipa_pong_msg

const uint8_t ipa_pong_msg[]
static
Initial value:

Referenced by ipa_ccm_send_pong().

IPAC_IDTAG_SWVERSION
@ IPAC_IDTAG_SWVERSION
Definition: ipaccess.h:67
IPAC_PROTO_IPACCESS
@ IPAC_PROTO_IPACCESS
Definition: ipaccess.h:23
IPAC_MSGT_ID_ACK
@ IPAC_MSGT_ID_ACK
Definition: ipaccess.h:50
IPAC_IDTAG_EQUIPVERS
@ IPAC_IDTAG_EQUIPVERS
Definition: ipaccess.h:66
IPAC_IDTAG_SERNR
@ IPAC_IDTAG_SERNR
Definition: ipaccess.h:62
IPAC_IDTAG_IPADDR
@ IPAC_IDTAG_IPADDR
Definition: ipaccess.h:68
IPAC_IDTAG_LOCATION2
@ IPAC_IDTAG_LOCATION2
Definition: ipaccess.h:65
IPAC_IDTAG_UNITNAME
@ IPAC_IDTAG_UNITNAME
Definition: ipaccess.h:63
IPAC_IDTAG_MACADDR
@ IPAC_IDTAG_MACADDR
Definition: ipaccess.h:69
IPAC_IDTAG_LOCATION1
@ IPAC_IDTAG_LOCATION1
Definition: ipaccess.h:64
IPAC_IDTAG_UNIT
@ IPAC_IDTAG_UNIT
Definition: ipaccess.h:70
IPAC_MSGT_ID_GET
@ IPAC_MSGT_ID_GET
Definition: ipaccess.h:48
IPAC_MSGT_PONG
@ IPAC_MSGT_PONG
Definition: ipaccess.h:47