e1_input: rework configuration of virtual E1 line operations

 struct e1inp_line_ops {
-       enum e1inp_line_role    role;
-       char                    *addr;
-       void                    *data;
+       union {
+               struct {
+                       enum e1inp_line_role role;      /* BSC or BTS mode. */
+                       const char *addr;               /* IP address .*/
+                       void *dev;                      /* device parameters. */
+               } ipa;
+               struct {
+                       const char *port;       /* e.g. /dev/ttyUSB0 */
+                       unsigned int delay;
+               } rs232;
+       } cfg;

Now this structure contains the configuration details for the
virtual E1 line, instead of using a pointer.

This also get the line_update callback to its original layout:

+       int (*line_update)(struct e1inp_line *line);
diff --git a/src/input/misdn.c b/src/input/misdn.c
index 7adcaa6..bb9145f 100644
--- a/src/input/misdn.c
+++ b/src/input/misdn.c
@@ -380,8 +380,7 @@
 	return ret;
 }
 
-static int mi_e1_line_update(struct e1inp_line *line,
-			     enum e1inp_line_role role, const char *addr);
+static int mi_e1_line_update(struct e1inp_line *line);
 
 struct e1inp_driver misdn_driver = {
 	.name = "misdn",
@@ -479,8 +478,7 @@
 	return 0;
 }
 
-static int mi_e1_line_update(struct e1inp_line *line,
-			     enum e1inp_line_role role, const char *addr)
+static int mi_e1_line_update(struct e1inp_line *line)
 {
 	struct mISDN_devinfo devinfo;
 	int sk, ret, cnt;