\doxysection{ipa.\+h} \label{ipa_8h_source}\index{include/osmocom/netif/ipa.h@{include/osmocom/netif/ipa.h}} \begin{DoxyCode}{0} \DoxyCodeLine{1 \textcolor{preprocessor}{\#ifndef \_OSMO\_NETIF\_IPA\_H\_}} \DoxyCodeLine{2 \textcolor{preprocessor}{\#define \_OSMO\_NETIF\_IPA\_H\_}} \DoxyCodeLine{3 } \DoxyCodeLine{4 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{5 \textcolor{preprocessor}{\#include }} \DoxyCodeLine{6 } \DoxyCodeLine{7 \textcolor{comment}{/* This is like 'struct ipaccess\_head' in libosmocore, but 'ipa\_head' is}} \DoxyCodeLine{8 \textcolor{comment}{ * actually the more apropriate name, so rather than making more code}} \DoxyCodeLine{9 \textcolor{comment}{ * use the wrong name, let's keep the duplicate header definitions below */}} \DoxyCodeLine{10 \textcolor{keyword}{struct }ipa\_head \{} \DoxyCodeLine{11 uint16\_t len; \textcolor{comment}{/* network byte order */}} \DoxyCodeLine{12 uint8\_t proto;} \DoxyCodeLine{13 uint8\_t data[0];} \DoxyCodeLine{14 \} \_\_attribute\_\_ ((packed));} \DoxyCodeLine{15 } \DoxyCodeLine{16 \textcolor{keyword}{struct }ipa\_head\_ext \{} \DoxyCodeLine{17 uint8\_t proto;} \DoxyCodeLine{18 uint8\_t data[0];} \DoxyCodeLine{19 \} \_\_attribute\_\_ ((packed));} \DoxyCodeLine{20 } \DoxyCodeLine{21 \textcolor{keyword}{struct }osmo\_ipa\_msgb\_cb \{} \DoxyCodeLine{22 uint8\_t proto;} \DoxyCodeLine{23 uint8\_t proto\_ext;} \DoxyCodeLine{24 \} \_\_attribute\_\_ ((packed));} \DoxyCodeLine{25 } \DoxyCodeLine{26 \textcolor{preprocessor}{\#define OSMO\_IPA\_MSGB\_CB(\_\_msg) ((struct osmo\_ipa\_msgb\_cb *)\&((\_\_msg)-\/>cb[0]))}} \DoxyCodeLine{27 \textcolor{preprocessor}{\#define osmo\_ipa\_msgb\_cb\_proto(\_\_x) OSMO\_IPA\_MSGB\_CB(\_\_x)-\/>proto}} \DoxyCodeLine{28 \textcolor{preprocessor}{\#define osmo\_ipa\_msgb\_cb\_proto\_ext(\_\_x) OSMO\_IPA\_MSGB\_CB(\_\_x)-\/>proto\_ext}} \DoxyCodeLine{29 } \DoxyCodeLine{30 \textcolor{keyword}{struct }msgb *osmo\_ipa\_msg\_alloc(\textcolor{keywordtype}{int} headroom);} \DoxyCodeLine{31 \textcolor{keyword}{struct }msgb *osmo\_ipa\_ext\_msg\_alloc(\textcolor{keywordtype}{size\_t} headroom);} \DoxyCodeLine{32 } \DoxyCodeLine{33 \textcolor{keywordtype}{void} osmo\_ipa\_msg\_push\_header(\textcolor{keyword}{struct} msgb *msg, uint8\_t proto);} \DoxyCodeLine{34 } \DoxyCodeLine{35 \textcolor{keywordtype}{int} osmo\_ipa\_process\_msg(\textcolor{keyword}{struct} msgb *msg);} \DoxyCodeLine{36 } \DoxyCodeLine{37 \textcolor{keyword}{struct }osmo\_fd;} \DoxyCodeLine{38 \textcolor{keyword}{struct }tlv\_parsed;} \DoxyCodeLine{39 } \DoxyCodeLine{40 \textcolor{keywordtype}{int} osmo\_ipa\_rcvmsg\_base(\textcolor{keyword}{struct} msgb *msg, \textcolor{keyword}{struct} osmo\_fd *bfd, \textcolor{keywordtype}{int} server);} \DoxyCodeLine{41 \textcolor{keywordtype}{int} osmo\_ipa\_parse\_unitid(\textcolor{keyword}{const} \textcolor{keywordtype}{char} *str, \textcolor{keyword}{struct} ipaccess\_unit *unit\_data);} \DoxyCodeLine{42 } \DoxyCodeLine{43 \textcolor{keywordtype}{int} ipaccess\_send\_pong(\textcolor{keywordtype}{int} fd);} \DoxyCodeLine{44 \textcolor{keywordtype}{int} ipaccess\_send\_id\_ack(\textcolor{keywordtype}{int} fd);} \DoxyCodeLine{45 \textcolor{keywordtype}{int} ipaccess\_send\_id\_req(\textcolor{keywordtype}{int} fd);} \DoxyCodeLine{46 } \DoxyCodeLine{47 \textcolor{keyword}{struct }osmo\_ipa\_unit;} \DoxyCodeLine{48 } \DoxyCodeLine{49 \textcolor{keyword}{struct }msgb *ipa\_cli\_id\_resp(\textcolor{keyword}{struct} osmo\_ipa\_unit *dev, uint8\_t *data, \textcolor{keywordtype}{int} len);} \DoxyCodeLine{50 \textcolor{keyword}{struct }msgb *ipa\_cli\_id\_ack(\textcolor{keywordtype}{void});} \DoxyCodeLine{51 } \DoxyCodeLine{52 \textcolor{keywordtype}{int} osmo\_ipa\_parse\_msg\_id\_resp(\textcolor{keyword}{struct} msgb *msg, \textcolor{keyword}{struct} ipaccess\_unit *unit\_data);} \DoxyCodeLine{53 } \DoxyCodeLine{54 \textcolor{keywordtype}{int} osmo\_ipa\_segmentation\_cb(\textcolor{keyword}{struct} msgb *msg);} \DoxyCodeLine{55 } \DoxyCodeLine{56 \textcolor{preprocessor}{\#endif}} \end{DoxyCode}