I noticed the following warning when booting FreeBSD 15.0:

vm-public: WARNING: Adding member interface re0 which has an IP
address assigned is deprecated and will be unsupported in a future release.

The error message was caused by the initialisation of vm-bhyve, which I use for a Windows 10 VM. Some background on the reason for the warning is available from the FreeBSD forum.

Original configuration

In /etc/rc.conf I had:

ifconfig_re0="inet 10.0.0.5/16 up"
# other stuff ...
vm_enable="YES"

and in ${vm_dir}/.config/system.conf:

switch_list="public"
type_public="standard"
ports_public="re0"

The system.conf file was created automatically when I first used vm-bhyve to create the Windows 10 VM. The install steps were cribbed from this post. Specifically, from these commands:

vm switch create public
vm switch add public re0

This network setup was the obvious cause of the warning. In future, the static IP address must be assigned to the bridge, not the member.

New configuration

/etc/rc.conf is changed to:

# Create bridge interface for vm-bhyve use
cloned_interfaces="bridge0"
ifconfig_bridge0="inet 10.0.0.5/16 addm re0 up"
ifconfig_re0="up"

and ${vm_dir}/.config/system.conf to:

switch_list="public"
type_public="manual"
bridge_public="bridge0"

This can be created directly, or via the command:

vm switch create -t manual -b bridge0 public

This configuraton eliminates the warning message. It’ll be interesting to see if it still works comes FreeBSD 16.0.

And also …​

While figuring out the vm-bhyve network setup, I also saw this warning from netwait on boot:

Continuing with startup, but be aware you may not have a fully
functional networking layer at this point.

However, this was displayed after a successful ping to ${netwait_ip}.

The errant message seems to be caused by a bug in /etc/rc.d/netwait. This is the fix:

--- /tmp/netwait.orig	2026-01-19 09:54:03.531027000 +0000
+++ netwait	2026-01-19 09:54:16.798862000 +0000
@@ -126,7 +126,7 @@

                if [ $rc -eq 0 ]; then
                    echo ', got response.'
-					got_ip=false
+					got_ip=true
                    break 2
                fi
                count=$((count+1))

N.B. I use netwait to ensure the network is up before starting named, otherwise ntpd complains it can’t resolve the default time servers.