Browse Source

create virtual interfaces before starting all interface config.

this resolves an ordering problem when adding pseudo interfaces to bridges
tweaks from kn@
ok mpi@ sthen@
OPENBSD_6_3
dlg 6 years ago
parent
commit
29613cf71b
1 changed files with 29 additions and 11 deletions
  1. +29
    -11
      src/etc/netstart

+ 29
- 11
src/etc/netstart View File

@ -1,6 +1,6 @@
#!/bin/sh -
#
# $OpenBSD: netstart,v 1.190 2018/02/10 08:46:10 claudio Exp $
# $OpenBSD: netstart,v 1.191 2018/02/14 22:08:45 dlg Exp $
# Turn off Strict Bourne shell mode.
set +o sh
@ -72,6 +72,26 @@ parse_hn_line() {
set +o noglob
}
ifcreate() {
local _if=$1
{ ifconfig $_if || ifconfig $_if create; } >/dev/null 2>&1 || return
}
vifscreate() {
local _vifs=$(ifconfig -C) _vif _hn _if
for _vif in ${_vifs}; do
for _hn in /etc/hostname.${_vif}*; do
[[ -f $_hn ]] || continue
_if=${_hn#/etc/hostname.}
# Create wanted ifs.
ifcreate $_if || return
done
done
}
# Start a single interface.
# Usage: ifstart if1
ifstart() {
@ -97,8 +117,7 @@ ifstart() {
# Check for ifconfig'able interface, except if -n option is specified.
if ! $PRINT_ONLY; then
(ifconfig $_if || ifconfig $_if create) >/dev/null 2>&1 ||
return
ifcreate $_if || return
fi
# Parse the hostname.if(5) file and fill _cmds array with interface
@ -260,15 +279,17 @@ else
ip6kernel=NO
fi
# Create all the pseudo interfaces up front
vifscreate
# Configure all the non-loopback interfaces which we know about, but
# do not start interfaces which must be delayed. Refer to hostname.if(5)
ifmstart "" "trunk svlan vlan carp gif gre pfsync pppoe tun bridge switch pflow"
ifmstart "" "trunk svlan vlan carp pppoe tun tap gif etherip gre egre mobileip pflow"
# The trunk interfaces need to come up first in this list.
# The (s)vlan interfaces need to come up after trunk.
# Configure all the carp interfaces which we know about before default route.
ifmstart "trunk svlan vlan carp"
ifmstart "trunk svlan vlan carp pppoe"
# Look for default routes in /etc/mygate.
defaultroute
@ -279,15 +300,12 @@ if [[ $multicast != YES ]]; then
route -qn add -net 224.0.0.0/4 -interface 127.0.0.1 -reject >/dev/null
fi
# Configure PPPoE, GIF, GRE, TUN and PFLOW interfaces, delayed because they
# require routes to be set. TUN might depend on PPPoE, and GIF or GRE may
# depend on either of them. PFLOW might bind to ip addresses configured
# on either of them.
ifmstart "pppoe tun gif gre bridge switch pflow"
# Reject 127/8 other than 127.0.0.1.
route -qn add -net 127 127.0.0.1 -reject >/dev/null
# Configure interfaces that rely on routing
ifmstart "tun tap gif etherip gre egre mobileip pflow"
if [[ $ip6kernel == YES ]]; then
# This is to make sure DAD is completed before going further.
count=0


Loading…
Cancel
Save