I suspect the current rc.d script in FreeBSD 13.1 contains circular dependencies: [slocum dan ~] % rcorder /etc/rc.d/* /usr/local/etc/rc.d/* 16:42:28 rcorder: file `/usr/local/etc/rc.d/vm' is before unknown provision `dnsmasq' rcorder: Circular dependency on file `/usr/local/etc/rc.d/vm'. rcorder: Circular dependency on provision `dmesg': /etc/rc.d/dmesg -> /etc/rc.d/mountcritremote -> /etc/rc.d/gssd -> /etc/rc.d/kdc -> /etc/rc.d/NETWORKING -> /etc/rc.d/local_unbound -> /etc/rc.d/netwait -> /etc/rc.d/pf -> /usr/local/etc/rc.d/vm -> /etc/rc.d/dmesg. rcorder: Circular dependency on provision `mountcritremote': /etc/rc.d/mountcritremote -> /etc/rc.d/gssd -> /etc/rc.d/kdc -> /etc/rc.d/NETWORKING -> /etc/rc.d/local_unbound -> /etc/rc.d/netwait -> /etc/rc.d/pf -> /usr/local/etc/rc.d/vm -> /etc/rc.d/SERVERS -> /etc/rc.d/devfs -> /etc/rc.d/mountcritremote. rcorder: `/etc/rc.d/devfs' was seen in circular dependencies for 1 times. rcorder: Circular dependency on file `/etc/rc.d/kdc'. rcorder: Circular dependency on provision `NETWORKING': /etc/rc.d/NETWORKING -> /etc/rc.d/local_unbound -> /etc/rc.d/netwait -> /etc/rc.d/pf -> /usr/local/etc/rc.d/vm -> /etc/rc.d/SERVERS -> /etc/rc.d/kdc -> /etc/rc.d/NETWORKING. rcorder: `/etc/rc.d/kdc' was seen in circular dependencies for 3 times. rcorder: Circular dependency on provision `mountcritremote': /etc/rc.d/mountcritremote -> /etc/rc.d/gssd -> /etc/rc.d/kdc -> /etc/rc.d/NETWORKING -> /etc/rc.d/local_unbound -> /etc/rc.d/netwait -> /etc/rc.d/pf -> /usr/local/etc/rc.d/vm -> /etc/rc.d/SERVERS -> /etc/rc.d/mdconfig2 -> /etc/rc.d/mountcritremote. rcorder: `/etc/rc.d/mdconfig2' was seen in circular dependencies for 1 times. rcorder: Circular dependency on provision `mountcritremote': /etc/rc.d/mountcritremote -> /etc/rc.d/gssd -> /etc/rc.d/kdc -> /etc/rc.d/NETWORKING -> /etc/rc.d/local_unbound -> /etc/rc.d/netwait -> /etc/rc.d/pf -> /usr/local/etc/rc.d/vm -> /etc/rc.d/SERVERS -> /etc/rc.d/syslogd -> /etc/rc.d/newsyslog -> /etc/rc.d/mountcritremote. rcorder: `/etc/rc.d/newsyslog' was seen in circular dependencies for 1 times. rcorder: Circular dependency on provision `mountcritremote': /etc/rc.d/mountcritremote -> /etc/rc.d/gssd -> /etc/rc.d/kdc -> /etc/rc.d/NETWORKING -> /etc/rc.d/local_unbound -> /etc/rc.d/netwait -> /etc/rc.d/pf -> /usr/local/etc/rc.d/vm -> /etc/rc.d/SERVERS -> /etc/rc.d/syslogd -> /etc/rc.d/mountcritremote. rcorder: `/etc/rc.d/syslogd' was seen in circular dependencies for 2 times. rcorder: Circular dependency on provision `NETWORKING': /etc/rc.d/NETWORKING -> /etc/rc.d/local_unbound -> /etc/rc.d/netwait -> /etc/rc.d/pf -> /usr/local/etc/rc.d/vm -> /etc/rc.d/SERVERS -> /usr/local/etc/rc.d/named -> /etc/rc.d/NETWORKING. rcorder: `/usr/local/etc/rc.d/named' was seen in circular dependencies for 1 times. rcorder: Circular dependency on provision `mountcritremote': /etc/rc.d/mountcritremote -> /etc/rc.d/gssd -> /etc/rc.d/kdc -> /etc/rc.d/NETWORKING -> /etc/rc.d/local_unbound -> /etc/rc.d/netwait -> /etc/rc.d/pf -> /usr/local/etc/rc.d/vm -> /etc/rc.d/SERVERS -> /etc/rc.d/linux -> /etc/rc.d/archdep -> /etc/rc.d/mountcritremote. rcorder: `/etc/rc.d/archdep' was seen in circular dependencies for 1 times. rcorder: `/etc/rc.d/linux' was seen in circular dependencies for 1 times. rcorder: Circular dependency on provision `mountcritremote': /etc/rc.d/mountcritremote -> /etc/rc.d/gssd -> /etc/rc.d/kdc -> /etc/rc.d/NETWORKING -> /etc/rc.d/local_unbound -> /etc/rc.d/netwait -> /etc/rc.d/pf -> /usr/local/etc/rc.d/vm -> /etc/rc.d/SERVERS -> /etc/rc.d/mountcritremote. rcorder: `/etc/rc.d/SERVERS' was seen in circular dependencies for 8 times. rcorder: Circular dependency on provision `NETWORKING': /etc/rc.d/NETWORKING -> /etc/rc.d/local_unbound -> /etc/rc.d/netwait -> /etc/rc.d/pf -> /usr/local/etc/rc.d/vm -> /etc/rc.d/NETWORKING. rcorder: `/usr/local/etc/rc.d/vm' was seen in circular dependencies for 10 times. rcorder: `/etc/rc.d/pf' was seen in circular dependencies for 10 times. rcorder: `/etc/rc.d/netwait' was seen in circular dependencies for 10 times. rcorder: `/etc/rc.d/local_unbound' was seen in circular dependencies for 10 times. rcorder: `/etc/rc.d/NETWORKING' was seen in circular dependencies for 10 times. rcorder: `/etc/rc.d/kdc' was seen in circular dependencies for 8 times. rcorder: `/etc/rc.d/gssd' was seen in circular dependencies for 7 times. rcorder: `/etc/rc.d/mountcritremote' was seen in circular dependencies for 7 times. rcorder: `/etc/rc.d/dmesg' was seen in circular dependencies for 1 times. rcorder: `/usr/local/etc/rc.d/vm' was seen in circular dependencies for 10 times. rcorder: requirement `dovecot' in file `/usr/local/etc/rc.d/postfix' has no providers. /etc/rc.d/dhclient /etc/rc.d/sysctl /etc/rc.d/natd This can be fixed by changing: # BEFORE: dnsmasq ipfw pf to: # BEFORE: dnsmasq With that change, no more circular dependencies. Background: * pf requires netif * NETWORKING requires netif * NETWORKING requires ipfw Conclusion: there is no need to specify ipfw and pf if NETWORKING is required. I am reaching the right conclusion here?
I did some simple testing in a jail (I had to remove nojail from the script for this). simple testing in the jail indicates that the rc.d script does get invoked, even with the circular situation.