vty/telnet_interface: Add telnet_exit function

This frees socket and pending connections

Written-by: Andreas Eversberg <jolly@eversberg.eu>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
diff --git a/include/osmocom/vty/telnet_interface.h b/include/osmocom/vty/telnet_interface.h
index 9a7c9e5..2de4f19 100644
--- a/include/osmocom/vty/telnet_interface.h
+++ b/include/osmocom/vty/telnet_interface.h
@@ -48,6 +48,8 @@
 
 int telnet_init(void *tall_ctx, void *priv, int port);
 
+void telnet_exit(void);
+
 /*! }@ */
 
 #endif /* TELNET_INTERFACE_H */
diff --git a/src/vty/telnet_interface.c b/src/vty/telnet_interface.c
index ed64cda..167acc1 100644
--- a/src/vty/telnet_interface.c
+++ b/src/vty/telnet_interface.c
@@ -221,4 +221,16 @@
 	}
 }
 
+void telnet_exit(void) 
+{
+	struct telnet_connection *tc, *tc2;
+
+	llist_for_each_entry_safe(tc, tc2, &active_connections, entry)
+		telnet_close_client(&tc->fd);
+
+	osmo_fd_unregister(&server_socket);
+	close(server_socket.fd);
+	talloc_free(tall_telnet_ctx);
+}
+
 /*! }@ */