I think that's really gross. route domains are a concept usable by some people, not everyone should need to see this.
> I think rc.d should specify the routing domain explicitly when it > executes the daemon program even if the daemon's rtable is configured > 0 since the executed routing domain may not be 0. > > Exmaple: > > (run sshd on rtable 100) > $ doas ifconfig lo100 rdomain 100 127.0.0.1/8 > $ doas ln -s sshd /etc/rc.d/sshd100 > $ doas rcctl enable sshd100 > $ doas rcctl set sshd100 rtable 100 > $ doas rcctl start sshd100 > > (ssh login from rdomain 100) > $ route -T100 exec ssh 127.0.0.1 > > (logged in, default routing domain becomes 100) > $ doas rcctl get ntpd rtable > 0 > $ doas rcctl restart ntpd > ntpd(ok) > ntpd(ok) > > $ doas /etc/rc.d/ntpd check > ntpd(failed) > $ ps ax -o 'pid comm rtable' | grep ntpd > 26036 ntpd 100 > 2924 ntpd 100 > 78901 ntpd 100 > $ > > "check" fails because /var/run/rc.d/ntpd rtable is 0, but it is > actually running on 100. > > ok? > > Execute the daemon program on the configured routing table always even > if its rtable is configured 0 and rc.d is executed on a routing domain > other than 0. > > Index: etc/rc.d/rc.subr > =================================================================== > RCS file: /cvs/src/etc/rc.d/rc.subr,v > retrieving revision 1.130 > diff -u -p -r1.130 rc.subr > --- etc/rc.d/rc.subr 20 Jan 2019 04:52:07 -0000 1.130 > +++ etc/rc.d/rc.subr 20 Feb 2019 03:57:37 -0000 > @@ -320,5 +320,4 @@ unset _rcflags _rcrtable _rcuser _rctime > # make sure pexp matches the process (i.e. doesn't include the quotes) > pexp="$(eval echo ${daemon}${daemon_flags:+ ${daemon_flags}})" > rcexec="su -l -c ${daemon_class} -s /bin/sh ${daemon_user} -c" > -[ "${daemon_rtable}" -eq 0 ] || > - rcexec="route -T ${daemon_rtable} exec ${rcexec}" > +rcexec="route -T ${daemon_rtable} exec ${rcexec}" >