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/tests/e1inp_ipa_bsc_test.c b/tests/e1inp_ipa_bsc_test.c
index ba3aabb..424c87b 100644
--- a/tests/e1inp_ipa_bsc_test.c
+++ b/tests/e1inp_ipa_bsc_test.c
@@ -205,8 +205,12 @@
 	osmo_init_logging(&bsc_test_log_info);
 
 	struct e1inp_line_ops ops = {
-		.addr		= "0.0.0.0",
-		.role		= E1INP_LINE_R_BSC,
+		.cfg = {
+			.ipa = {
+				.addr	= "0.0.0.0",
+				.role	= E1INP_LINE_R_BSC,
+			},
+		},
 		.sign_link_up	= sign_link_up,
 		.sign_link_down	= sign_link_down,
 		.sign_link	= sign_link,