aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/input/lapd.h
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/input/lapd.h')
-rw-r--r--openbsc/src/input/lapd.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/openbsc/src/input/lapd.h b/openbsc/src/input/lapd.h
index b0e6e6f66..f79d84f14 100644
--- a/openbsc/src/input/lapd.h
+++ b/openbsc/src/input/lapd.h
@@ -3,6 +3,8 @@
#include <stdint.h>
+#include <osmocore/linuxlist.h>
+
typedef enum {
LAPD_MPH_NONE = 0,
@@ -14,10 +16,22 @@ typedef enum {
} lapd_mph_type;
-extern uint8_t *lapd_receive(uint8_t *data, int len, int *ilen, lapd_mph_type *prim, void *cbdata);
+struct lapd_instance {
+ struct llist_head list; /* list of LAPD instances */
+ int network_side;
+
+ void (*transmit_cb)(uint8_t *data, int len, void *cbdata);
+ void *cbdata;
+
+ struct llist_head tei_list; /* list of TEI in this LAPD instance */
+};
+
+extern uint8_t *lapd_receive(struct lapd_instance *li, uint8_t *data, unsigned int len,
+ int *ilen, lapd_mph_type *prim);
-extern void (*lapd_transmit_cb)(uint8_t *data, int len, void *cbdata);
+extern void lapd_transmit(struct lapd_instance *li, uint8_t tei, uint8_t *data, unsigned int len);
-extern void lapd_transmit(int tei, uint8_t *data, int len, void *cbdata);
+struct lapd_instance *lapd_instance_alloc(void (*tx_cb)(uint8_t *data, int len,
+ void *cbdata), void *cbdata);
#endif /* OPENBSC_LAPD_H */