add basic unixsocket support

Allow to connect to a unix socket for communicating with LAPD.

Change-Id: Ia5723b09a5c68a0505829dc732def981e60a907a
diff --git a/src/e1_input_vty.c b/src/e1_input_vty.c
index 5320bb3..9d69586 100644
--- a/src/e1_input_vty.c
+++ b/src/e1_input_vty.c
@@ -38,12 +38,13 @@
 
 /* CONFIG */
 
-#define E1_DRIVER_NAMES		"(misdn|misdn_lapd|dahdi|ipa)"
+#define E1_DRIVER_NAMES		"(misdn|misdn_lapd|dahdi|ipa|unixsocket)"
 #define E1_DRIVER_HELP		"mISDN supported E1 Card (kernel LAPD)\n" \
 				"mISDN supported E1 Card (userspace LAPD)\n" \
 				"DAHDI supported E1/T1/J1 Card\n" \
 				"IPA TCP/IP input\n" \
-				"HSL TCP/IP input"
+				"HSL TCP/IP input\n" \
+				"Unix socket input\n"
 
 #define E1_LINE_HELP		"Configure E1/T1/J1 Line\n" "Line Number\n"
 
@@ -88,6 +89,25 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_e1line_socket, cfg_e1_line_socket_cmd,
+	"e1_line <0-255> socket .SOCKET",
+	E1_LINE_HELP "Set socket path for unixsocket\n"
+	"socket path\n")
+{
+	struct e1inp_line *line;
+	int e1_nr = atoi(argv[0]);
+
+	line = e1inp_line_find(e1_nr);
+	if (!line) {
+		vty_out(vty, "%% Line %d doesn't exist%s", e1_nr, VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	line->sock_path = talloc_strdup(line, argv[1]);
+
+	return CMD_SUCCESS;
+}
+
 #define KEEPALIVE_HELP "Enable keep-alive probing\n"
 static int set_keepalive_params(struct vty *vty, int e1_nr,
 				int idle, int num_probes, int probe_interval)
@@ -363,6 +383,7 @@
 	vty_install_default(L_E1INP_NODE);
 	install_element(L_E1INP_NODE, &cfg_e1_line_driver_cmd);
 	install_element(L_E1INP_NODE, &cfg_e1_line_port_cmd);
+	install_element(L_E1INP_NODE, &cfg_e1_line_socket_cmd);
 	install_element(L_E1INP_NODE, &cfg_e1_line_name_cmd);
 	install_element(L_E1INP_NODE, &cfg_e1_line_keepalive_cmd);
 	install_element(L_E1INP_NODE, &cfg_e1_line_keepalive_params_cmd);