vmd(8): pull validation into local prefix parser.
authordv <dv@openbsd.org>
Thu, 13 Jul 2023 18:31:59 +0000 (18:31 +0000)
committerdv <dv@openbsd.org>
Thu, 13 Jul 2023 18:31:59 +0000 (18:31 +0000)
commit2272e5863df41314f4e3e6aab7cf4aa3b69f2fb8
treeb43538dddc909cd630daa69770556d4ced4c1551
parentac73c2845b834e6ab00afc24a89f772fa25f5139
vmd(8): pull validation into local prefix parser.

Validation for local prefixes, both inet and inet6, was scattered
around. To make it even more confusing, vmd was using generic address
parsing logic from prior network daemons. vmd doesn't need to parse
addresses other than when parsing the local prefix settings in
vm.conf and no runtime parsing is needed.

This change merges parsing and validation based on vmd's specific
needs for local prefixes (e.g. reserving enough bits for vm id and
network interface id encoding in an ipv4 address). In addition, it
simplifies the struct from a generic address struct to one focused
on just storing the v4 and v6 prefixes and masks. This cleans up an
unused TAILQ struct member that isn't used by vmd and was leftover
copy-pasta from those prior daemons.

The address parsing that vmd uses is also updated to using the
latest logic in bgpd(8).

ok mlarkin@
usr.sbin/vmd/config.c
usr.sbin/vmd/dhcp.c
usr.sbin/vmd/parse.y
usr.sbin/vmd/priv.c
usr.sbin/vmd/virtio.c
usr.sbin/vmd/virtio.h
usr.sbin/vmd/vm.c
usr.sbin/vmd/vmd.h
usr.sbin/vmd/vmm.c