libosmogsm
1.9.2
Osmocom GSM library
|
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 msgb * | ipa_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 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. 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 msgb * | ipa_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 [] |
IPA Multiplex utility routines
#define IPA_ALLOC_SIZE 1200 |
#define IPA_STRING_MAX 64 |
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:
[out] | dec | Caller-provided/allocated output structure for parsed payload |
[in] | buf | Buffer containing the payload (excluding 1 byte msg_type) of the message |
[in] | len | Length of buf in octets |
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.
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:
[out] | dec | Caller-provided/allocated output structure for parsed payload |
[in] | buf | Buffer containing the payload (excluding 1 byte msg_type) of the message |
[in] | len | Length of buf in octets |
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.
const char* ipa_ccm_idtag_name | ( | uint8_t | tag | ) |
References ARRAY_SIZE, and idtag_names.
Referenced by ipa_ccm_id_get_parse(), ipa_ccm_id_resp_parse(), and ipa_ccm_idtag_parse_off().
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.
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.
[out] | dec | Caller-provided/allocated output structure for parsed payload |
[in] | buf | Buffer containing the payload (excluding 1 byte msg_type) of the message |
[in] | len | Length of buf in octets |
[in] | len_offset | Offset from end of len field to start of value (ommiting tag). Must be 1! |
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().
struct msgb* ipa_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.
[in] | dev | Descriptor describing identity data for response |
[in] | ies_req | List of IEIs to include in response |
[in] | num_ies_req | Number of IEIs in ies_req |
References ipaccess_unit::bts_id, DLINP, ipaccess_unit::equipvers, ipa_msg_alloc(), ipa_prepend_header(), IPA_STRING_MAX, IPAC_IDTAG_EQUIPVERS, IPAC_IDTAG_LOCATION1, IPAC_IDTAG_LOCATION2, IPAC_IDTAG_MACADDR, IPAC_IDTAG_SERNR, IPAC_IDTAG_SWVERSION, IPAC_IDTAG_UNIT, IPAC_IDTAG_UNITNAME, IPAC_MSGT_ID_RESP, IPAC_PROTO_IPACCESS, ipaccess_unit::location1, ipaccess_unit::location2, LOGL_INFO, LOGL_NOTICE, LOGP, ipaccess_unit::mac_addr, msg, msgb_free(), msgb_put(), osmo_strlcpy(), ipaccess_unit::serno, ipaccess_unit::site_id, ipaccess_unit::swversion, ipaccess_unit::trx_id, and ipaccess_unit::unit_name.
Referenced by 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.
[in] | dev | Descriptor describing identity data for response |
[in] | data | Payload of the IPA CCM ID GET request |
[in] | len | Length of data in octets |
References data, DLINP, ipa_ccm_make_id_resp(), len, LOGL_ERROR, and LOGP.
References DEBUGP, DLINP, DLMI, osmo_fd::fd, ipa_ccm_send_id_ack(), ipa_ccm_send_pong(), IPAC_MSGT_ID_ACK, IPAC_MSGT_PING, IPAC_MSGT_PONG, LOGL_ERROR, LOGP, msg, and msg_type.
References DEBUGP, DLINP, DLMI, osmo_fd::fd, ipa_ccm_send_pong(), IPAC_MSGT_ID_ACK, IPAC_MSGT_PING, IPAC_MSGT_PONG, LOGL_ERROR, LOGP, msg, and msg_type.
int ipa_ccm_send_id_ack | ( | int | fd | ) |
References fd, ipa_id_ack_msg, and ipa_send().
Referenced by ipa_ccm_rcvmsg_base().
int ipa_ccm_send_id_req | ( | int | fd | ) |
References fd, ipa_id_req_msg, and ipa_send().
int ipa_ccm_send_pong | ( | int | fd | ) |
References fd, ipa_pong_msg, and ipa_send().
Referenced by ipa_ccm_rcvmsg_base(), and ipa_ccm_rcvmsg_bts_base().
int ipa_ccm_tlv_to_unitdata | ( | struct ipaccess_unit * | ud, |
const struct tlv_parsed * | tp | ||
) |
References ipaccess_unit::equipvers, ipa_parse_unitid(), IPAC_IDTAG_EQUIPVERS, IPAC_IDTAG_LOCATION1, IPAC_IDTAG_LOCATION2, IPAC_IDTAG_MACADDR, IPAC_IDTAG_SERNR, IPAC_IDTAG_SWVERSION, IPAC_IDTAG_UNIT, IPAC_IDTAG_UNITNAME, ipaccess_unit::location1, ipaccess_unit::location2, ipaccess_unit::mac_addr, osmo_macaddr_parse(), ipaccess_unit::serno, ipaccess_unit::swversion, TLVP_PRES_LEN, TLVP_VAL, and ipaccess_unit::unit_name.
struct msgb* ipa_msg_alloc | ( | int | headroom | ) |
References msgb_alloc_headroom().
Referenced by ipa_ccm_make_id_resp().
int ipa_parse_unitid | ( | const char * | str, |
struct ipaccess_unit * | unit_data | ||
) |
References ipaccess_unit::bts_id, ipaccess_unit::site_id, value_string::str, and ipaccess_unit::trx_id.
Referenced by ipa_ccm_tlv_to_unitdata().
void ipa_prepend_header | ( | struct msgb * | msg, |
int | proto | ||
) |
References ipaccess_head::len, msg, msgb_push(), osmo_htons, proto, and ipaccess_head::proto.
Referenced by ipa_ccm_make_id_resp().
void ipa_prepend_header_ext | ( | struct msgb * | msg, |
int | proto | ||
) |
References msg, msgb_push(), proto, and ipaccess_head_ext::proto.
int ipa_send | ( | int | fd, |
const void * | msg, | ||
size_t | msglen | ||
) |
References DLINP, fd, LOGL_ERROR, LOGP, and msg.
Referenced by ipa_ccm_send_id_ack(), ipa_ccm_send_id_req(), and ipa_ccm_send_pong().
|
static |
Referenced by ipa_ccm_idtag_name().
|
static |
Referenced by ipa_ccm_send_id_ack().
|
static |
Referenced by ipa_ccm_send_id_req().
|
static |
Referenced by ipa_ccm_send_pong().