If you change the evaluation order in netstart, something similar may be needed in the install script emulation of netstart.
Alexander Bluhm <alexander.bl...@gmx.net> wrote: > Hi, > > I want to create an enc1 interface for routing domain 1 and set > additional addresses on lo1. So my net config looks like this. > > ==> /etc/hostname.enc1 <== > rdomain 1 > > ==> /etc/hostname.lo1 <== > rdomain 1 > inet alias 10.188.10.74 255.255.255.255 > ... > > /etc/netstart creates enc1 in routing domain 0, but does not place > it into rdomain 1 due to this error: > starting network > ifconfig: SIOCSIFRDOMAIN: Invalid argument > > With some additional debug output netstart does this: > { ifconfig enc1 || ifconfig enc1 create; } > { ifconfig lo0 || ifconfig lo0 create; } > { ifconfig lo1 || ifconfig lo1 create; } > { ifconfig enc1 || ifconfig enc1 create; } > ifconfig enc1 rdomain 1 > ... > { ifconfig lo1 || ifconfig lo1 create; } > ifconfig lo1 rdomain 1 > ifconfig lo1 inet alias 10.188.10.74 netmask 255.255.255.255 > > ifconfig enc1 rdomain 1 fails as lo1 exists, but is still in routing > domain 0. > > To fix this, I think lo1, lo2, ... should not be created upfront. > Also more debug output for /etc/netstart -n is necessary to understand > what is going on. > > ok? > > bluhm > > Index: netstart > =================================================================== > RCS file: /data/mirror/openbsd/cvs/src/etc/netstart,v > retrieving revision 1.214 > diff -u -p -r1.214 netstart > --- netstart 6 Aug 2021 07:06:35 -0000 1.214 > +++ netstart 18 Aug 2021 14:13:01 -0000 > @@ -86,7 +86,11 @@ parse_hn_line() { > ifcreate() { > local _if=$1 > > - { ifconfig $_if || ifconfig $_if create; } >/dev/null 2>&1 > + if $PRINT_ONLY; then > + print -r -- "{ ifconfig $_if || ifconfig $_if create; }" > + else > + { ifconfig $_if || ifconfig $_if create; } >/dev/null 2>&1 > + fi > } > > # Create interfaces for network pseudo-devices referred to by hostname.if > files. > @@ -99,6 +103,9 @@ vifscreate() { > [[ -f $_hn ]] || continue > _if=${_hn#/etc/hostname.} > > + # loopback for routing domain is created by kernel > + [[ -n "${_if##lo[1-9]*}" ]] || continue > + > if ! ifcreate $_if; then > print -u2 "${0##*/}: create for '$_if' failed." > fi > @@ -130,9 +137,7 @@ ifstart() { > fi > > # Check for ifconfig'able interface, except if -n option is specified. > - if ! $PRINT_ONLY; then > - ifcreate $_if || return > - fi > + ifcreate $_if || return > > # Parse the hostname.if(5) file and fill _cmds array with interface > # configuration commands. > @@ -232,9 +237,6 @@ while getopts ":n" opt; do > esac > done > shift $((OPTIND-1)) > - > -# Option -n is only supported if interface names are specified as parameters. > -$PRINT_ONLY && (($# == 0)) && usage > > # Load key material for the generation of IPv6 Semantically Opaque Interface > # Identifiers (SOII) used for link local and SLAAC addresses. >