aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/input/lapd.h
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2011-02-05 19:13:00 +0100
committerHarald Welte <laforge@gnumonks.org>2011-02-05 20:26:27 +0100
commitd38f10593afbd9ab79d4940d48371333d0c034c9 (patch)
tree946684de325ac6718954d61667974cc351efa46b /openbsc/src/input/lapd.h
parent0ae575536a0421bf734e51bdc71722d107ab6c13 (diff)
[LAPD] Support multiple instances of LAPD
We cannot afford static/global state, as we may have multiple E1 lines, each having its own LAPD instance. Furthermore, we might even have multiple LAPD instances on the same E1 line (think of a multi-drop setup). This also implements dynamic TEI allocation, i.e. no hardcoded TEI list anymore.
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 */