--- main.c.orig	2004-01-05 04:16:44.000000000 +0100
+++ main.c	2004-07-02 19:47:36.000000000 +0200
@@ -288,7 +288,7 @@
 static int listensockets(int *sock, runopts * opts, int *maxfd) {
 	
 	int listensock; /* listening fd */
-	struct sockaddr_in listen_addr;
+	struct sockaddr_in6 listen_addr;
 	struct linger linger;
 	unsigned int i;
 	int val;
@@ -296,7 +296,7 @@
 	for (i = 0; i < opts->portcount; i++) {
 
 		/* iterate through all the sockets to listen on */
-		listensock = socket(PF_INET, SOCK_STREAM, 0);
+		listensock = socket(PF_INET6, SOCK_STREAM, 0);
 		if (listensock < 0) {
 			dropbear_exit("Failed to create socket");
 		}
@@ -315,10 +315,8 @@
 				(void*)&val, sizeof(val));
 
 		memset((void*)&listen_addr, 0x0, sizeof(listen_addr));
-		listen_addr.sin_family = AF_INET;
-		listen_addr.sin_port = htons(opts->ports[i]);
-		listen_addr.sin_addr.s_addr = htonl(INADDR_ANY);
-		memset(&(listen_addr.sin_zero), '\0', 8);
+		listen_addr.sin6_family = AF_INET6;
+		listen_addr.sin6_port = htons(opts->ports[i]);
 
 		if (bind(listensock, (struct sockaddr *)&listen_addr,
 					sizeof(listen_addr)) < 0) {
