Page MenuHomeFreeBSD

syslogd: Handle connection errors when setting up forwarding sockets
Needs ReviewPublic

Authored by markj on Tue, Jun 2, 3:24 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Jun 9, 2:29 AM
Unknown Object (File)
Tue, Jun 9, 2:26 AM
Unknown Object (File)
Mon, Jun 8, 4:59 AM
Unknown Object (File)
Sun, Jun 7, 4:30 AM
Unknown Object (File)
Sun, Jun 7, 4:30 AM
Unknown Object (File)
Sun, Jun 7, 4:23 AM
Unknown Object (File)
Thu, Jun 4, 4:40 AM
Unknown Object (File)
Wed, Jun 3, 11:23 PM
Subscribers

Details

Reviewers
ae
des
jfree
Summary

Suppose a forwarding host is identified by a hostname. We will attempt
to set up a connected forwarding socket for each address returned by
getaddrinfo(). However, a failure to connect some of these sockets
shouldn't be fatal.

PR: 293758

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 73625
Build 70508: arc lint + arc unit

Event Timeline

markj requested review of this revision.Tue, Jun 2, 3:24 PM

No, it doesn't help.

17146 syslogd  CALL  socket(PF_INET6,0x10000002<SOCK_DGRAM|SOCK_CLOEXEC>,IPPROTO_UDP)
17146 syslogd  RET   socket 5
17146 syslogd  CALL  connect(0x5,0x23c6f2034820,0x1c)
17146 syslogd  STRU  struct sockaddr { AF_INET6, [2a02:XXX::XXX]:1 }
17146 syslogd  RET   connect -1 errno 65 No route to host
17146 syslogd  CALL  close(0x5)
17146 syslogd  RET   close 0
17146 syslogd  CALL  socket(PF_INET,0x10000002<SOCK_DGRAM|SOCK_CLOEXEC>,IPPROTO_UDP)
17146 syslogd  RET   socket 5
17146 syslogd  CALL  connect(0x5,0x23c6f2034820,0x10)
17146 syslogd  STRU  struct sockaddr { AF_INET, 141.XXX.XXX.XXX:1 }
17146 syslogd  RET   connect -1 errno 51 Network is unreachable
17146 syslogd  CALL  close(0x5)
17146 syslogd  RET   close 0
17146 syslogd  CALL  socket(PF_INET6,0x2<SOCK_DGRAM>,IPPROTO_IP)
17146 syslogd  RET   socket 5
17146 syslogd  CALL  setsockopt(0x5,SOL_SOCKET,SO_REUSEPORT,0x23c6f20349fc,0x4)
17146 syslogd  RET   setsockopt 0
17146 syslogd  CALL  bind(0x5,0x4b0c58c436d8,0x1c)
17146 syslogd  STRU  struct sockaddr { AF_INET6, [::]:514 }
17146 syslogd  RET   bind 0
17146 syslogd  CALL  connect(0x5,0x4b0c58c132b0,0x1c)
17146 syslogd  STRU  struct sockaddr { AF_INET6, [2a02:XXX::XXX]:514 }
17146 syslogd  RET   connect -1 errno 65 No route to host
17146 syslogd  CALL  close(0x5)
17146 syslogd  RET   close 0
17146 syslogd  CALL  socket(PF_INET6,0x2<SOCK_DGRAM>,IPPROTO_IP)
17146 syslogd  RET   socket 5
17146 syslogd  CALL  connect(0x5,0x4b0c58c132b0,0x1c)
17146 syslogd  STRU  struct sockaddr { AF_INET6, [2a02:XXX::XXX]:514 }
17146 syslogd  RET   connect -1 errno 65 No route to host
17146 syslogd  CALL  close(0x5)
17146 syslogd  RET   close 0
17146 syslogd  CALL  socket(PF_INET,0x2<SOCK_DGRAM>,IPPROTO_IP)
17146 syslogd  RET   socket 5
17146 syslogd  CALL  setsockopt(0x5,SOL_SOCKET,SO_REUSEPORT,0x23c6f20349fc,0x4)
17146 syslogd  RET   setsockopt 0
17146 syslogd  CALL  bind(0x5,0x4b0c58c4f0c8,0x10)
17146 syslogd  STRU  struct sockaddr { AF_INET, 0.0.0.0:514 }
17146 syslogd  RET   bind 0
17146 syslogd  CALL  connect(0x5,0x4b0c58c12230,0x10)
17146 syslogd  STRU  struct sockaddr { AF_INET, 141.XXX.XXX.XXX:514 }
17146 syslogd  RET   connect -1 errno 51 Network is unreachable
17146 syslogd  CALL  close(0x5)
17146 syslogd  RET   close 0
17146 syslogd  CALL  socket(PF_INET,0x2<SOCK_DGRAM>,IPPROTO_IP)
17146 syslogd  RET   socket 5
17146 syslogd  CALL  connect(0x5,0x4b0c58c12230,0x10)
17146 syslogd  STRU  struct sockaddr { AF_INET, 141.XXX.XXX.XXX:514 }
17146 syslogd  RET   connect -1 errno 51 Network is unreachable
17146 syslogd  CALL  close(0x5)
17146 syslogd  RET   close 0
17146 syslogd  CALL  write(0x2,0x23c6f2034250,0x9)
17146 syslogd  GIO   fd 2 wrote 9 bytes
      "syslogd: "
17146 syslogd  RET   write 9
17146 syslogd  CALL  write(0x2,0x23c6f2034340,0x3a)
17146 syslogd  GIO   fd 2 wrote 58 bytes
      "failed to create forwarding socket for HOSTNAME.DOMAIN"
17146 syslogd  RET   write 58/0x3a
17146 syslogd  CALL  write(0x2,0x23c6f7472107,0x1)
17146 syslogd  GIO   fd 2 wrote 1 byte
      "
      "
17146 syslogd  RET   write 1
17146 syslogd  CALL  _exit(0x1)

As I understand, due to capability mode we cannot use sendto and connect when syslogd is already started and configured.
Probably, specified address is not reachable during boot time and its route will appear when routing daemon will start.
But bird has # REQUIRE: DAEMON in its startup script and it will start much later.