Skip to content

Ripping out support for ancient protocols

Kartik Agaram edited this page Dec 30, 2016 · 3 revisions

ripping out domains

At the static initialization of the domains global, commenting out:

  • Everything but inetdomain: leads to this error:
pfctl: getifaddrs: Protocol not available.
  • Everything but inetdomain and pfkeydomain: same error as above.

  • Just mplsdomain and pfkeydomain: works fine.

  • mplsdomain, pfkeydomain and inet6domain: boot fails without the earlier "Protocol not available" error. Page fault inside function in6_update_ifa.

  • mplsdomain, pfkeydomain and routedomain: errors on boot, but eventually gets to login screen:

route: socket: Protocol not supported
route: socket: Protocol not supported
pfctl: getifaddrs: Protocol not available
starting early daemons: syslogd pflogd(failed) ntpd.
..
starting network daemons: sshd smtdpd(failed) sndiod.
starting local daemons: cron.

No ssh access.

  • mplsdomain, pfkeydomain and unixdomain: errors on boot, but eventually gets to login screen:
socketpair: Protocol not supported
starting early daemons: syslogd(failed) pflogd(failed) ntpd(failed).
..
starting network daemons: sshd smtdpd(failed) sndiod(failed).
starting local daemons: cron(failed).

No ssh access.

  • (one final lark) mplsdomain, pfkeydomain and inetdomain (ssh access not expected): boot fails. Page fault inside function in_pcballoc.

So it looks like we require, at least for now:

  • inet6domain (at least for an explicit setup call)
  • inetdomain
  • unixdomain (for syslogd, pflogd, ntpd, smtpd, sndiod, cron, ssh access)
  • routedomain (for pflogd, smtpd, ssh access)

Easily disabled are just:

  • mplsdomain
  • pfkeydomain

inet6domain

Call graph during boot sequence:

in6_update_ifa

  • in6_ifattach_loopback and in6_ifattach_linklocal (from netinet6/in6_ifattach.c)
    • in6_ifattach
      • ifioctl and if_up (from net/if.c)
  • in6_control (from netinet6/in6.c)
    • udp_usrreq (from netinet/udp_usrreq.c)

pflogd

Disabling pflogd is done through rcctl which in turn updates /etc/rc.conf.