1#ifndef _OSMO_NETIF_IPA_H_
2#define _OSMO_NETIF_IPA_H_
4#include <osmocom/gsm/protocol/ipaccess.h>
5#include <osmocom/gsm/ipa.h>
14} __attribute__ ((packed));
19} __attribute__ ((packed));
24} __attribute__ ((packed));
32#define OSMO_IPA_MSGB_CB(__msg) (&((( \
35 struct osmo_ipa_msgb_cb _cb; \
37 *)&((__msg)->cb[0]))->_cb))
39#define osmo_ipa_msgb_cb_proto(__x) OSMO_IPA_MSGB_CB(__x)->proto
40#define osmo_ipa_msgb_cb_proto_ext(__x) OSMO_IPA_MSGB_CB(__x)->proto_ext
42struct msgb *osmo_ipa_msg_alloc(
int headroom);
43struct msgb *osmo_ipa_ext_msg_alloc(
size_t headroom);
45void osmo_ipa_msg_push_header(
struct msgb *msg, uint8_t proto);
47int osmo_ipa_process_msg(
struct msgb *msg);
52int osmo_ipa_rcvmsg_base(
struct msgb *msg,
struct osmo_fd *bfd,
int server);
53int osmo_ipa_parse_unitid(
const char *str,
struct ipaccess_unit *unit_data);
55int ipaccess_send_pong(
int fd);
56int ipaccess_send_id_ack(
int fd);
57int ipaccess_send_id_req(
int fd);
61struct msgb *ipa_cli_id_resp(
struct osmo_ipa_unit *dev, uint8_t *data,
int len);
62struct msgb *ipa_cli_id_ack(
void);
64int osmo_ipa_parse_msg_id_resp(
struct msgb *msg,
struct ipaccess_unit *unit_data);
66int osmo_ipa_segmentation_cb(
struct msgb *msg);
68void osmo_ipa_msg_push_headers(
struct msgb *msg,
enum ipaccess_proto p,
enum ipaccess_proto_ext pe);