On 2009-05-25, Maurice Janssen <maur...@z74.net> wrote: > I have an FTP-server (running OpenBSD 4.5-stable) that is only reachable > over IPv6. Passive FTP works fine, but active FTP doesn't seem to work. > I run ftpd from rc.conf.local (-DAS6), not through inetd.
This fixes it, but I'm not sure whether it's correct. Index: monitor.c =================================================================== RCS file: /cvs/src/libexec/ftpd/monitor.c,v retrieving revision 1.18 diff -N -u -p monitor.c --- monitor.c 30 Jun 2008 12:03:51 -0000 1.18 +++ monitor.c 26 May 2009 20:47:51 -0000 @@ -254,7 +254,7 @@ handle_cmds(void) int err, s, slavequit, serrno, domain; pid_t preauth_slave_pid; size_t len; - struct sockaddr sa; + union sockunion sa; socklen_t salen; char *name, *pw; @@ -364,13 +364,14 @@ handle_cmds(void) bzero(&sa, sizeof(sa)); recv_data(fd_slave, &sa, salen); - if (sa.sa_len != salen) + if (sa.su_si.si_len != salen) fatalx("monitor received invalid sockaddr len"); - if (sa.sa_family != AF_INET && sa.sa_family != AF_INET6) + if (sa.su_si.si_family != AF_INET && + sa.su_si.si_family != AF_INET6) fatalx("monitor received invalid addr family"); - err = bind(s, &sa, salen); + err = bind(s, (struct sockaddr *)&sa, salen); serrno = errno; if (s >= 0)