diff options
| author | Rob Landley <rob@landley.net> | 2005-05-10 23:53:33 +0000 |
|---|---|---|
| committer | Rob Landley <rob@landley.net> | 2005-05-10 23:53:33 +0000 |
| commit | 00e76cb6b98062eaef61e56a6be1bb7f26ad2fc9 (patch) | |
| tree | ee4008e9bb713ae48c79e2bf353000cdb29951c0 | |
| parent | e5d0bde6975f3f599ea1123918e281db11e10517 (diff) | |
| download | busybox-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.c | 18 |
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 | ||
| 54 | typedef struct sockaddr_in6 sockaddr_type; | ||
| 55 | #else | ||
| 56 | #define SOCKET_TYPE AF_INET | ||
| 57 | typedef struct sockaddr_in sockaddr_type; | ||
| 58 | #endif | ||
| 59 | |||
| 60 | |||
| 52 | #ifdef CONFIG_LOGIN | 61 | #ifdef CONFIG_LOGIN |
| 53 | static const char *loginpath = "/bin/login"; | 62 | static const char *loginpath = "/bin/login"; |
| 54 | #else | 63 | #else |
| @@ -373,7 +382,7 @@ int | |||
| 373 | telnetd_main(int argc, char **argv) | 382 | telnetd_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"); |
