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.
This commit is contained in:
parent
e5d0bde697
commit
00e76cb6b9
@ -49,6 +49,15 @@
|
|||||||
|
|
||||||
#define BUFSIZE 4000
|
#define BUFSIZE 4000
|
||||||
|
|
||||||
|
#ifdef CONFIG_FEATURE_IPV6
|
||||||
|
#define SOCKET_TYPE AF_INET6
|
||||||
|
typedef struct sockaddr_in6 sockaddr_type;
|
||||||
|
#else
|
||||||
|
#define SOCKET_TYPE AF_INET
|
||||||
|
typedef struct sockaddr_in sockaddr_type;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_LOGIN
|
#ifdef CONFIG_LOGIN
|
||||||
static const char *loginpath = "/bin/login";
|
static const char *loginpath = "/bin/login";
|
||||||
#else
|
#else
|
||||||
@ -373,7 +382,7 @@ int
|
|||||||
telnetd_main(int argc, char **argv)
|
telnetd_main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
#ifndef CONFIG_FEATURE_TELNETD_INETD
|
#ifndef CONFIG_FEATURE_TELNETD_INETD
|
||||||
struct sockaddr_in sa;
|
sockaddr_type sa;
|
||||||
int master_fd;
|
int master_fd;
|
||||||
#endif /* CONFIG_FEATURE_TELNETD_INETD */
|
#endif /* CONFIG_FEATURE_TELNETD_INETD */
|
||||||
fd_set rdfdset, wrfdset;
|
fd_set rdfdset, wrfdset;
|
||||||
@ -431,7 +440,7 @@ telnetd_main(int argc, char **argv)
|
|||||||
|
|
||||||
/* Grab a TCP socket. */
|
/* Grab a TCP socket. */
|
||||||
|
|
||||||
master_fd = socket(AF_INET, SOCK_STREAM, 0);
|
master_fd = socket(SOCKET_TYPE, SOCK_STREAM, 0);
|
||||||
if (master_fd < 0) {
|
if (master_fd < 0) {
|
||||||
bb_perror_msg_and_die("socket");
|
bb_perror_msg_and_die("socket");
|
||||||
}
|
}
|
||||||
@ -440,8 +449,13 @@ telnetd_main(int argc, char **argv)
|
|||||||
/* Set it to listen to specified port. */
|
/* Set it to listen to specified port. */
|
||||||
|
|
||||||
memset((void *)&sa, 0, sizeof(sa));
|
memset((void *)&sa, 0, sizeof(sa));
|
||||||
|
#ifdef CONFIG_FEATURE_IPV6
|
||||||
|
sa.sin6_family = AF_INET6;
|
||||||
|
sa.sin6_port = htons(portnbr);
|
||||||
|
#else
|
||||||
sa.sin_family = AF_INET;
|
sa.sin_family = AF_INET;
|
||||||
sa.sin_port = htons(portnbr);
|
sa.sin_port = htons(portnbr);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (bind(master_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
|
if (bind(master_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) {
|
||||||
bb_perror_msg_and_die("bind");
|
bb_perror_msg_and_die("bind");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user