libosmo-netif 1.4.0
Osmocom network interface library
ipa.h
1#ifndef _OSMO_NETIF_IPA_H_
2#define _OSMO_NETIF_IPA_H_
3
4#include <osmocom/gsm/protocol/ipaccess.h>
5#include <osmocom/gsm/ipa.h>
6
7/* This is like 'struct ipaccess_head' in libosmocore, but 'ipa_head' is
8 * actually the more apropriate name, so rather than making more code
9 * use the wrong name, let's keep the duplicate header definitions below */
10struct ipa_head {
11 uint16_t len; /* network byte order */
12 uint8_t proto;
13 uint8_t data[0];
14} __attribute__ ((packed));
15
17 uint8_t proto;
18 uint8_t data[0];
19} __attribute__ ((packed));
20
22 uint8_t proto;
23 uint8_t proto_ext;
24} __attribute__ ((packed));
25
26#define OSMO_IPA_MSGB_CB(__msg) ((struct osmo_ipa_msgb_cb *)&((__msg)->cb[0]))
27#define osmo_ipa_msgb_cb_proto(__x) OSMO_IPA_MSGB_CB(__x)->proto
28#define osmo_ipa_msgb_cb_proto_ext(__x) OSMO_IPA_MSGB_CB(__x)->proto_ext
29
30struct msgb *osmo_ipa_msg_alloc(int headroom);
31struct msgb *osmo_ipa_ext_msg_alloc(size_t headroom);
32
33void osmo_ipa_msg_push_header(struct msgb *msg, uint8_t proto);
34
35int osmo_ipa_process_msg(struct msgb *msg);
36
37struct osmo_fd;
38struct tlv_parsed;
39
40int osmo_ipa_rcvmsg_base(struct msgb *msg, struct osmo_fd *bfd, int server);
41int osmo_ipa_parse_unitid(const char *str, struct ipaccess_unit *unit_data);
42
43int ipaccess_send_pong(int fd);
44int ipaccess_send_id_ack(int fd);
45int ipaccess_send_id_req(int fd);
46
47struct osmo_ipa_unit;
48
49struct msgb *ipa_cli_id_resp(struct osmo_ipa_unit *dev, uint8_t *data, int len);
50struct msgb *ipa_cli_id_ack(void);
51
52int osmo_ipa_parse_msg_id_resp(struct msgb *msg, struct ipaccess_unit *unit_data);
53
54int osmo_ipa_segmentation_cb(struct msgb *msg);
55
56#endif
Definition: ipa.h:16
Definition: ipa.h:10
Definition: ipa.h:21
Definition: ipa_unit.c:27