f3e6c7
diff --git a/commands.c b/commands.c
f3e6c7
index 49619ac..636fb5c 100644
f3e6c7
--- a/telnet/commands.c
f3e6c7
+++ b/telnet/commands.c
f3e6c7
@@ -2267,6 +2267,7 @@ tn(int argc, char *argv[])
f3e6c7
     char *srp = 0;
f3e6c7
     int srlen;
f3e6c7
 #endif
f3e6c7
+    int family = AF_UNSPEC;
f3e6c7
     char *cmd, *hostp = 0, *portp = 0, *user = 0, *aliasp = 0;
f3e6c7
     int retry;
f3e6c7
 #ifdef NI_WITHSCOPEID
f3e6c7
@@ -2317,6 +2318,21 @@ tn(int argc, char *argv[])
f3e6c7
 	    autologin = 1;
f3e6c7
 	    continue;
f3e6c7
 	}
f3e6c7
+	
f3e6c7
+	if (strcmp(*argv, "-6") == 0) {
f3e6c7
+	    --argc; ++argv;
f3e6c7
+#ifdef AF_INET6
f3e6c7
+	    family = AF_INET6;
f3e6c7
+#else
f3e6c7
+	    puts("IPv6 unsupported");
f3e6c7
+#endif
f3e6c7
+	    continue;
f3e6c7
+	}
f3e6c7
+	if (strcmp(*argv, "-4") == 0) {
f3e6c7
+	    --argc; ++argv;
f3e6c7
+	    family = AF_INET;
f3e6c7
+	    continue;
f3e6c7
+	}
f3e6c7
 	if (hostp == 0) {
f3e6c7
 	    hostp = *argv++;
f3e6c7
 	    --argc;
f3e6c7
@@ -2355,7 +2371,7 @@ tn(int argc, char *argv[])
f3e6c7
     {
f3e6c7
 	hostname = hostp;
f3e6c7
 	memset(&hints, 0, sizeof(hints));
f3e6c7
-	hints.ai_family = PF_UNSPEC;
f3e6c7
+	hints.ai_family = family;
f3e6c7
 	hints.ai_socktype = SOCK_STREAM;
f3e6c7
 	hints.ai_flags = AI_CANONNAME;
f3e6c7
 	if (portp == NULL) {
f3e6c7
diff --git a/main.c b/main.c
f3e6c7
index 5fa96e8..599f0af 100644
f3e6c7
--- a/telnet/main.c
f3e6c7
+++ b/telnet/main.c
f3e6c7
@@ -80,10 +80,10 @@ usage(void)
f3e6c7
 	fprintf(stderr, "Usage: %s %s%s%s%s\n",
f3e6c7
 	    prompt,
f3e6c7
 #ifdef	AUTHENTICATION
f3e6c7
-	    "[-8] [-E] [-K] [-L] [-S tos] [-X atype] [-a] [-c] [-d] [-e char]",
f3e6c7
+	    "[-4] [-6] [-8] [-E] [-K] [-L] [-S tos] [-X atype] [-a] [-c] [-d] [-e char]",
f3e6c7
 	    "\n\t[-k realm] [-l user] [-f/-F] [-n tracefile] [-b hostalias ] ",
f3e6c7
 #else
f3e6c7
-	    "[-8] [-E] [-L] [-S tos] [-a] [-c] [-d] [-e char] [-l user]",
f3e6c7
+	    "[-4] [-6] [-8] [-E] [-L] [-S tos] [-a] [-c] [-d] [-e char] [-l user]",
f3e6c7
 	    "\n\t[-n tracefile] [-b hostalias ] ",
f3e6c7
 #endif
f3e6c7
 #if defined(TN3270) && defined(unix)
f3e6c7
@@ -116,6 +116,7 @@ main(int argc, char *argv[])
f3e6c7
 #endif
f3e6c7
 	int ch;
f3e6c7
 	char *user, *alias;
f3e6c7
+	int family;
f3e6c7
 #ifdef	FORWARD
f3e6c7
 	extern int forward_flags;
f3e6c7
 #endif	/* FORWARD */
f3e6c7
@@ -130,7 +131,6 @@ main(int argc, char *argv[])
f3e6c7
 		prompt = argv[0];
f3e6c7
 
f3e6c7
 	user = alias = NULL;
f3e6c7
-
f3e6c7
 	rlogin = (strncmp(prompt, "rlog", 4) == 0) ? '~' : _POSIX_VDISABLE;
f3e6c7
 
f3e6c7
 	/* 
f3e6c7
@@ -139,9 +139,19 @@ main(int argc, char *argv[])
f3e6c7
 	 * passed 
f3e6c7
 	 */
f3e6c7
 	autologin = -1;
f3e6c7
-
f3e6c7
-	while ((ch = getopt(argc, argv, "78DEKLS:X:ab:cde:fFk:l:n:rt:x")) != -1) {
f3e6c7
+	family = 0;
f3e6c7
+	while ((ch = getopt(argc, argv, "4678DEKLS:X:ab:cde:fFk:l:n:rt:x")) != -1) {
f3e6c7
 		switch(ch) {
f3e6c7
+		case '4':
f3e6c7
+			family = AF_INET;
f3e6c7
+			break;
f3e6c7
+		case '6':
f3e6c7
+#ifdef AF_INET6
f3e6c7
+			family = AF_INET6;
f3e6c7
+#else
f3e6c7
+			fputs("IPv6 unsupported\n", stderr); 
f3e6c7
+#endif
f3e6c7
+			break;
f3e6c7
 		case '8':
f3e6c7
 			binary = 3;	/* send TELNET BINARY option for output and input */
f3e6c7
 			break;
f3e6c7
@@ -340,6 +350,9 @@ main(int argc, char *argv[])
f3e6c7
 			*argp++ = "-b";
f3e6c7
 			*argp++ = alias;
f3e6c7
 		}
f3e6c7
+		if (family) {
f3e6c7
+			*argp++ = family == AF_INET ? "-4" : "-6";
f3e6c7
+		}
f3e6c7
 		*argp++ = argv[0];		/* host */
f3e6c7
 		if (argc > 1)
f3e6c7
 			*argp++ = argv[1];	/* port */
f3e6c7
diff --git a/telnet.1 b/telnet.1
f3e6c7
index 50015a6..f30e034 100644
f3e6c7
--- a/telnet/telnet.1
f3e6c7
+++ b/telnet/telnet.1
f3e6c7
@@ -44,7 +44,7 @@
f3e6c7
 protocol
f3e6c7
 .Sh SYNOPSIS
f3e6c7
 .Nm telnet
f3e6c7
-.Op Fl 8EFKLacdfrx
f3e6c7
+.Op Fl 468EFKLacdfrx
f3e6c7
 .Op Fl X Ar authtype
f3e6c7
 .Op Fl b Ar hostalias
f3e6c7
 .Op Fl e Ar escapechar
f3e6c7
@@ -76,6 +76,10 @@ command with those arguments.
f3e6c7
 .Pp
f3e6c7
 The options are as follows:
f3e6c7
 .Bl -tag -width Ds
f3e6c7
+.It Fl 4
f3e6c7
+Force IPv4 address resolution.
f3e6c7
+.It Fl 6
f3e6c7
+Force IPv6 address resolution.
f3e6c7
 .It Fl 7
f3e6c7
 Strip 8th bit on input and output. Telnet is 8-bit clean by default but doesn't send the TELNET BINARY option unless forced.
f3e6c7
 .It Fl 8