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_bts_test.c b/tests/e1inp_ipa_bts_test.c
index 2c03d94..3549661 100644
--- a/tests/e1inp_ipa_bts_test.c
+++ b/tests/e1inp_ipa_bts_test.c
@@ -252,9 +252,13 @@
 	osmo_init_logging(&bts_test_log_info);
 
 	struct e1inp_line_ops ops = {
-		.role		= E1INP_LINE_R_BTS,
-		.addr		= "127.0.0.1",
-		.data		= &bts_dev_info,
+		.cfg = {
+			.ipa = {
+				.role	= E1INP_LINE_R_BTS,
+				.addr	= "127.0.0.1",
+				.dev	= &bts_dev_info,
+			},
+		},
 		.sign_link_up	= sign_link_up,
 		.sign_link_down	= sign_link_down,
 		.sign_link	= sign_link,