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/e1_input.c b/src/e1_input.c
index 22f38d8..81c5a99 100644
--- a/src/e1_input.c
+++ b/src/e1_input.c
@@ -610,8 +610,7 @@
 		return 0;
 
 	if (line->driver && line->ops && line->driver->line_update) {
-		rc = line->driver->line_update(line, line->ops->role,
-						line->ops->addr);
+		rc = line->driver->line_update(line);
 	} else
 		rc = 0;