diff --git a/Config.h b/Config.h
index 57760be..7438e2c 100644
--- a/Config.h
+++ b/Config.h
@@ -362,6 +362,9 @@
 // Enable a if you system have setuped locale
 //#define BB_LOCALE_SUPPORT
 //
+// Support for TELNET to pass TERM type to remote host.  Adds 384 bytes.
+#define BB_FEATURE_TELNET_TTYPE
+//
 // End of Features List
 //
 //
diff --git a/networking/telnet.c b/networking/telnet.c
index edcc508..207732b 100644
--- a/networking/telnet.c
+++ b/networking/telnet.c
@@ -27,6 +27,8 @@
  * initial revision
  * Modified 2000/06/13 for inclusion into BusyBox by Erik Andersen
  * <andersen@lineo.com> 
+ * Modified 2001/05/07 to add ability to pass TTYPE to remote host by Jim McQuillan
+ * <jam@ltsp.org>
  *
  */
 
@@ -136,6 +138,10 @@
 /* Some globals */
 static int one = 1;
 
+#ifdef BB_FEATURE_TELNET_TTYPE
+static char *ttype;
+#endif
+
 static void doexit(int ev)
 {
 	cookmode();
@@ -321,6 +327,27 @@
 }
 #endif
 
+#ifdef BB_FEATURE_TELNET_TTYPE
+static void putiac_subopt(byte c, char *str)
+{
+	int	len = strlen(str) + 6;   // ( 2 + 1 + 1 + strlen + 2 )
+
+	if (G.iaclen + len > IACBUFSIZE)
+		iacflush();
+
+	putiac(IAC);
+	putiac(SB);
+	putiac(c);
+	putiac(0);
+
+	while(*str)
+		putiac(*str++);
+
+	putiac(IAC);
+	putiac(SE);
+}
+#endif
+
 /* void putiacstring (subneg strings) */
 
 /* ******************************* */
@@ -427,12 +454,29 @@
 	return;
 }
 
+#ifdef BB_FEATURE_TELNET_TTYPE
+static inline void to_ttype()
+{
+	/* Tell server we will (or won't) do TTYPE */
+
+	if(ttype)
+		putiac2(WILL, TELOPT_TTYPE);
+	else
+		putiac2(WONT, TELOPT_TTYPE);
+
+	return;
+}
+#endif
+
 static void telopt(byte c)
 {
 	switch (c)
 	{
 	case TELOPT_ECHO:		to_echo(c);		break;
 	case TELOPT_SGA:		to_sga(c);		break;
+#ifdef BB_FEATURE_TELNET_TTYPE
+	case TELOPT_TTYPE:		to_ttype(c);	break;
+#endif
 	default:				to_notsup(c);	break;
 	}
 }
@@ -440,7 +484,7 @@
 
 /* ******************************* */
 
-/* subnegotiation -- ignore all */
+/* subnegotiation -- ignore all (except TTYPE) */
 
 static int subneg(byte c)
 {
@@ -449,6 +493,11 @@
 	case TS_SUB1:
 		if (c == IAC)
 			G.telstate = TS_SUB2;
+#ifdef BB_FEATURE_TELNET_TTYPE
+		else
+		if (c == TELOPT_TTYPE)
+			putiac_subopt(TELOPT_TTYPE,ttype);
+#endif
 		break;
 	case TS_SUB2:
 		if (c == SE)
@@ -488,6 +537,9 @@
 	int maxfd;
 #endif	
 
+#ifdef BB_FEATURE_TELNET_TTYPE
+    ttype = getenv("TERM");
+#endif
 
 	memset(&G, 0, sizeof G);
 
diff --git a/telnet.c b/telnet.c
index edcc508..207732b 100644
--- a/telnet.c
+++ b/telnet.c
@@ -27,6 +27,8 @@
  * initial revision
  * Modified 2000/06/13 for inclusion into BusyBox by Erik Andersen
  * <andersen@lineo.com> 
+ * Modified 2001/05/07 to add ability to pass TTYPE to remote host by Jim McQuillan
+ * <jam@ltsp.org>
  *
  */
 
@@ -136,6 +138,10 @@
 /* Some globals */
 static int one = 1;
 
+#ifdef BB_FEATURE_TELNET_TTYPE
+static char *ttype;
+#endif
+
 static void doexit(int ev)
 {
 	cookmode();
@@ -321,6 +327,27 @@
 }
 #endif
 
+#ifdef BB_FEATURE_TELNET_TTYPE
+static void putiac_subopt(byte c, char *str)
+{
+	int	len = strlen(str) + 6;   // ( 2 + 1 + 1 + strlen + 2 )
+
+	if (G.iaclen + len > IACBUFSIZE)
+		iacflush();
+
+	putiac(IAC);
+	putiac(SB);
+	putiac(c);
+	putiac(0);
+
+	while(*str)
+		putiac(*str++);
+
+	putiac(IAC);
+	putiac(SE);
+}
+#endif
+
 /* void putiacstring (subneg strings) */
 
 /* ******************************* */
@@ -427,12 +454,29 @@
 	return;
 }
 
+#ifdef BB_FEATURE_TELNET_TTYPE
+static inline void to_ttype()
+{
+	/* Tell server we will (or won't) do TTYPE */
+
+	if(ttype)
+		putiac2(WILL, TELOPT_TTYPE);
+	else
+		putiac2(WONT, TELOPT_TTYPE);
+
+	return;
+}
+#endif
+
 static void telopt(byte c)
 {
 	switch (c)
 	{
 	case TELOPT_ECHO:		to_echo(c);		break;
 	case TELOPT_SGA:		to_sga(c);		break;
+#ifdef BB_FEATURE_TELNET_TTYPE
+	case TELOPT_TTYPE:		to_ttype(c);	break;
+#endif
 	default:				to_notsup(c);	break;
 	}
 }
@@ -440,7 +484,7 @@
 
 /* ******************************* */
 
-/* subnegotiation -- ignore all */
+/* subnegotiation -- ignore all (except TTYPE) */
 
 static int subneg(byte c)
 {
@@ -449,6 +493,11 @@
 	case TS_SUB1:
 		if (c == IAC)
 			G.telstate = TS_SUB2;
+#ifdef BB_FEATURE_TELNET_TTYPE
+		else
+		if (c == TELOPT_TTYPE)
+			putiac_subopt(TELOPT_TTYPE,ttype);
+#endif
 		break;
 	case TS_SUB2:
 		if (c == SE)
@@ -488,6 +537,9 @@
 	int maxfd;
 #endif	
 
+#ifdef BB_FEATURE_TELNET_TTYPE
+    ttype = getenv("TERM");
+#endif
 
 	memset(&G, 0, sizeof G);
 
