summaryrefslogtreecommitdiffstats
path: root/libexec/ftpd
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2002-07-02 11:11:17 +0000
committerume <ume@FreeBSD.org>2002-07-02 11:11:17 +0000
commit8530756499f8c558b6ab7577e18e02d8aaad8a08 (patch)
tree8dda2e8107bc333e6cdfeb694d953d92cc720b94 /libexec/ftpd
parenteb16909ba9b7fb0a350f1401e02f918e89dd17ec (diff)
downloadFreeBSD-src-8530756499f8c558b6ab7577e18e02d8aaad8a08.zip
FreeBSD-src-8530756499f8c558b6ab7577e18e02d8aaad8a08.tar.gz
Cope with 2292bis-01 getaddrinfo (no NI_WITHSCOPEID, always attach
scope identifier). MFC after: 3 weeks
Diffstat (limited to 'libexec/ftpd')
-rw-r--r--libexec/ftpd/ftpd.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/libexec/ftpd/ftpd.c b/libexec/ftpd/ftpd.c
index fc06f9b..e628d66 100644
--- a/libexec/ftpd/ftpd.c
+++ b/libexec/ftpd/ftpd.c
@@ -103,11 +103,6 @@ static const char rcsid[] =
static char version[] = "Version 6.00LS";
#undef main
-/* wrapper for KAME-special getnameinfo() */
-#ifndef NI_WITHSCOPEID
-#define NI_WITHSCOPEID 0
-#endif
-
extern off_t restart_point;
extern char cbuf[];
@@ -1321,7 +1316,7 @@ skip:
getnameinfo((struct sockaddr *)&his_addr, his_addr.su_len,
remote_ip, sizeof(remote_ip) - 1, NULL, 0,
- NI_NUMERICHOST|NI_WITHSCOPEID);
+ NI_NUMERICHOST);
remote_ip[sizeof(remote_ip) - 1] = 0;
if (!auth_hostok(lc, remotehost, remote_ip)) {
syslog(LOG_INFO|LOG_AUTH,
@@ -1751,7 +1746,7 @@ pdata_err:
getnameinfo((struct sockaddr *)&data_source,
data_source.su_len, hostbuf, sizeof(hostbuf) - 1,
portbuf, sizeof(portbuf),
- NI_NUMERICHOST|NI_NUMERICSERV|NI_WITHSCOPEID);
+ NI_NUMERICHOST|NI_NUMERICSERV);
reply(425, "Can't create data socket (%s,%s): %s.",
hostbuf, portbuf, strerror(errno));
return (NULL);
@@ -2028,15 +2023,14 @@ statcmd(void)
{
union sockunion *su;
u_char *a, *p;
- char hname[INET6_ADDRSTRLEN];
+ char hname[NI_MAXHOST];
int ispassive;
lreply(211, "%s FTP server status:", hostname, version);
printf(" %s\r\n", version);
printf(" Connected to %s", remotehost);
if (!getnameinfo((struct sockaddr *)&his_addr, his_addr.su_len,
- hname, sizeof(hname) - 1, NULL, 0,
- NI_NUMERICHOST|NI_WITHSCOPEID)) {
+ hname, sizeof(hname) - 1, NULL, 0, NI_NUMERICHOST)) {
if (strcmp(hname, remotehost) != 0)
printf(" (%s)", hname);
}
@@ -2134,12 +2128,17 @@ epsvonly:;
break;
}
if (af) {
- if (!getnameinfo((struct sockaddr *)su, su->su_len,
+ union sockunion tmp;
+
+ tmp = *su;
+ if (tmp.su_family == AF_INET6)
+ tmp.su_sin6.sin6_scope_id = 0;
+ if (!getnameinfo((struct sockaddr *)&tmp, tmp.su_len,
hname, sizeof(hname) - 1, NULL, 0,
NI_NUMERICHOST)) {
printf(" %s |%d|%s|%d|\r\n",
ispassive ? "EPSV" : "EPRT",
- af, hname, htons(su->su_port));
+ af, hname, htons(tmp.su_port));
}
}
}
@@ -2348,8 +2347,7 @@ dolog(struct sockaddr *who)
error = getnameinfo(who, who->sa_len,
who_name, sizeof(who_name) - 1,
- NULL, 0,
- NI_NUMERICHOST|NI_WITHSCOPEID);
+ NULL, 0, NI_NUMERICHOST);
syslog(LOG_INFO, "connection from %s (%s)", remotehost,
error == 0 ? who_name : "");
}
OpenPOWER on IntegriCloud