aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2005-05-10 23:53:33 +0000
committerRob Landley <rob@landley.net>2005-05-10 23:53:33 +0000
commit00e76cb6b98062eaef61e56a6be1bb7f26ad2fc9 (patch)
treeee4008e9bb713ae48c79e2bf353000cdb29951c0
parente5d0bde6975f3f599ea1123918e281db11e10517 (diff)
downloadbusybox-w32-00e76cb6b98062eaef61e56a6be1bb7f26ad2fc9.tar.gz
busybox-w32-00e76cb6b98062eaef61e56a6be1bb7f26ad2fc9.tar.bz2
busybox-w32-00e76cb6b98062eaef61e56a6be1bb7f26ad2fc9.zip
Patch from Jason Schoon to add IPV6 support to telnetd. Reworked by Rob
Landley to remove an #ifdef and move another one out of the flow of code.
-rw-r--r--networking/telnetd.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/networking/telnetd.c b/networking/telnetd.c
index 491c66fd1..b3d0a1166 100644
--- a/networking/telnetd.c
+++ b/networking/telnetd.c
@@ -49,6 +49,15 @@
49 49
50#define BUFSIZE 4000 50#define BUFSIZE 4000
51 51
52#ifdef CONFIG_FEATURE_IPV6
53#define SOCKET_TYPE AF_INET6
54typedef struct sockaddr_in6 sockaddr_type;
55#else
56#define SOCKET_TYPE AF_INET
57typedef struct sockaddr_in sockaddr_type;
58#endif
59
60
52#ifdef CONFIG_LOGIN 61#ifdef CONFIG_LOGIN
53static const char *loginpath = "/bin/login"; 62static const char *loginpath = "/bin/login";
54#else 63#else
@@ -373,7 +382,7 @@ int
373telnetd_main(int argc, char **argv) 382telnetd_main(int argc, char **argv)
374{ 383{
375#ifndef CONFIG_FEATURE_TELNETD_INETD 384#ifndef CONFIG_FEATURE_TELNETD_INETD
376 struct sockaddr_in sa; 385 sockaddr_type sa;
377 int master_fd; 386 int master_fd;
378#endif /* CONFIG_FEATURE_TELNETD_INETD */ 387#endif /* CONFIG_FEATURE_TELNETD_INETD */
379 fd_set rdfdset, wrfdset; 388 fd_set rdfdset, wrfdset;
@@ -431,7 +440,7 @@ telnetd_main(int argc, char **argv)
431 440
432 /* Grab a TCP socket. */ 441 /* Grab a TCP socket. */
433 442
434 master_fd = socket(AF_INET, SOCK_STREAM, 0); 443 master_fd = socket(SOCKET_TYPE, SOCK_STREAM, 0);
435 if (master_fd < 0) { 444 if (master_fd < 0) {
436 bb_perror_msg_and_die("socket"); 445 bb_perror_msg_and_die("socket");
437 } 446 }
@@ -440,8 +449,13 @@ telnetd_main(int argc, char **argv)
440 /* Set it to listen to specified port. */ 449 /* Set it to listen to specified port. */
441 450
442 memset((void *)&sa, 0, sizeof(sa)); 451 memset((void *)&sa, 0, sizeof(sa));
452#ifdef CONFIG_FEATURE_IPV6
453 sa.sin6_family = AF_INET6;
454 sa.sin6_port = htons(portnbr);
455#else
443 sa.sin_family = AF_INET; 456 sa.sin_family = AF_INET;
444 sa.sin_port = htons(portnbr); 457 sa.sin_port = htons(portnbr);
458#endif
445 459
446 if (bind(master_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) { 460 if (bind(master_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
447 bb_perror_msg_and_die("bind"); 461 bb_perror_msg_and_die("bind");