Date: Sat, 28 Jan 2017 14:42:58 +0300 From: Alex Deiter <alex.deiter@gmail.com> To: freebsd-current <freebsd-current@freebsd.org> Subject: CURRENT [r309933] broke syslogd on IPv4 only system Message-ID: <F18D421C-6E3F-4A65-AF18-708B9DAEFFBD@gmail.com>
next in thread | raw e-mail | index | archive | help
Hello, Please take a look SVN r309933: ------------------------------------------------------------------------ r309933 | hrs | 2016-12-12 22:33:40 +0300 (Mon, 12 Dec 2016) | 13 lines - Refactor listening socket list. All of the listening sockets are now maintained in a single linked-list in a transport-independent = manner. - Use queue.h for linked-list structure. - Use linked-list for AllowedPeers. - Use getaddrinfo(8) even for Unix Domain sockets. - Use macros to type-casting from/to struct sockaddr{,_in,_in6}. - Define fu_* macro for union f_un to shorten the member names. - Remove an extra #include <sys/type.h>. - Add "static" to non-exported symbols. - !INET support is still incomplete but will be fixed later. There is no functional change except for some minor debug messages. ------------------------------------------------------------------------ After this change syslogd is not listen on local sockets: # /usr/sbin/syslogd -d Try (null) new socket fd is 6 shutdown sending on socket Try /var/run/log Try /var/run/logpriv off & running.... init loading timezone data via tzset() . . . # sockstat | grep syslogd root syslogd 19151 6 udp4 *:514 *:* # ls -l /var/run/ |grep log -rw------- 1 root wheel 5 Jan 28 14:30 syslog.pid Root cause: usr.sbin/syslogd/syslogd.c . . . 309 #ifdef INET6 310 static int family =3D PF_UNSPEC; /* protocol family (IPv4, = IPv6 or both) */ 311 #else 312 static int family =3D PF_INET; /* protocol family (IPv4 = only) */ 313 #endif . . . 2856 static int 2857 socksetup(struct peer *pe) . . . 2911 if (family !=3D AF_UNSPEC && res->ai_family !=3D = family) 2912 continue; in case of IPv4-only system (WITHOUT_INET6=3DYES in /etc/src.conf) we = have family =3D PF_INET in 312 line and function socksetup will skip = listen on local sockets. Proposed patch: Index: syslogd.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- syslogd.c (revision 312909) +++ syslogd.c (working copy) @@ -2908,7 +2908,7 @@ /* Only AF_LOCAL in secure mode. */ continue; } - if (family !=3D AF_UNSPEC && res->ai_family !=3D family) + if (res->ai_family !=3D AF_LOCAL && res->ai_family !=3D = family) continue; s =3D socket(res->ai_family, res->ai_socktype, Successfully tested on IPv4-only CURRENT r312856M. Thank you!=20 Alex Deiter alex.deiter@gmail.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F18D421C-6E3F-4A65-AF18-708B9DAEFFBD>