input: fix multiple BTS attached to single line scenario

With multiple BTS attached to a single line, we have to call
->line_update() multiple times. I broke this myself while avoiding
that A-bis over IP drivers bind to the socket several times.

To fix this situation, Harald prefers that this case is internally
handled by the ipaccess and hsl drivers by means of the driver_data
field in the e1inp_line structure.

Reported-by: Gus Bourg <gus@bourg.net>
diff --git a/src/input/ipaccess.c b/src/input/ipaccess.c
index b7391b3..ea04e8d 100644
--- a/src/input/ipaccess.c
+++ b/src/input/ipaccess.c
@@ -813,9 +813,29 @@
 	return 0;
 }
 
+struct ipaccess_line {
+	int line_already_initialized;
+};
+
 static int ipaccess_line_update(struct e1inp_line *line)
 {
 	int ret = -ENOENT;
+	struct ipaccess_line *il;
+
+	if (!line->driver_data)
+		line->driver_data = talloc_zero(line, struct ipaccess_line);
+
+	if (!line->driver_data) {
+		LOGP(DLINP, LOGL_ERROR, "ipaccess: OOM in line update\n");
+		return -ENOMEM;
+	}
+	il = line->driver_data;
+
+	/* We only initialize this line once. */
+	if (il->line_already_initialized)
+		return 0;
+
+	il->line_already_initialized = 1;
 
 	switch(line->ops->cfg.ipa.role) {
 	case E1INP_LINE_R_BSC: {