Author: brd
Date: Sat Jul 28 20:41:33 2018
New Revision: 336847
URL: https://svnweb.freebsd.org/changeset/base/336847

Log:
  Opps, I missed moving a couple of files in r336845.
  
  Approved by:  will (mentor)
  Differential Revision:        https://reviews.freebsd.org/D16466

Added:
  head/sbin/init/netstart
     - copied unchanged from r336846, head/etc/netstart
  head/sbin/init/network.subr
     - copied unchanged from r336846, head/etc/network.subr
  head/sbin/init/pccard_ether
     - copied unchanged from r336846, head/etc/pccard_ether
  head/sbin/init/rc
     - copied unchanged from r336846, head/etc/rc
  head/sbin/init/rc.conf
     - copied unchanged from r336846, head/etc/defaults/rc.conf
  head/sbin/init/rc.initdiskless
     - copied unchanged from r336846, head/etc/rc.initdiskless
  head/sbin/init/rc.resume
     - copied unchanged from r336846, head/etc/rc.resume
  head/sbin/init/rc.shutdown
     - copied unchanged from r336846, head/etc/rc.shutdown
  head/sbin/init/rc.subr
     - copied unchanged from r336846, head/etc/rc.subr
  head/sbin/init/rc.suspend
     - copied unchanged from r336846, head/etc/rc.suspend
Deleted:
  head/etc/defaults/rc.conf
  head/etc/netstart
  head/etc/network.subr
  head/etc/pccard_ether
  head/etc/rc
  head/etc/rc.initdiskless
  head/etc/rc.resume
  head/etc/rc.shutdown
  head/etc/rc.subr
  head/etc/rc.suspend

Copied: head/sbin/init/netstart (from r336846, head/etc/netstart)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sbin/init/netstart     Sat Jul 28 20:41:33 2018        (r336847, copy 
of r336846, head/etc/netstart)
@@ -0,0 +1,57 @@
+#!/bin/sh -
+#
+# Copyright (c) 1993  The FreeBSD Project
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#      From: @(#)netstart      5.9 (Berkeley) 3/30/91
+#
+
+# This file is NOT called by any of the other scripts - it has been
+# obsoleted by /etc/rc.d/* and is provided here only for user
+# convenience (if you're sitting in single user mode and wish to start
+# the network by hand, this script will do it for you).
+#
+
+_start=quietstart
+
+/etc/rc.d/devd ${_start}
+/etc/rc.d/hostid ${_start}
+/etc/rc.d/hostname ${_start}
+/etc/rc.d/ipmon ${_start}
+/etc/rc.d/ipfilter ${_start}
+/etc/rc.d/ipnat ${_start}
+/etc/rc.d/ipfs ${_start}
+/etc/rc.d/sppp ${_start}
+/etc/rc.d/netif ${_start}
+/etc/rc.d/ipsec ${_start}
+/etc/rc.d/ppp ${_start}
+/etc/rc.d/ipfw ${_start}
+/etc/rc.d/routing ${_start}
+/etc/rc.d/route6d ${_start}
+/etc/rc.d/routed ${_start}
+/etc/rc.d/rtsold ${_start}
+/etc/rc.d/nisdomain ${_start}
+
+exit 0

Copied: head/sbin/init/network.subr (from r336846, head/etc/network.subr)
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sbin/init/network.subr Sat Jul 28 20:41:33 2018        (r336847, copy 
of r336846, head/etc/network.subr)
@@ -0,0 +1,1793 @@
+#
+# Copyright (c) 2003 The FreeBSD Project. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+IFCONFIG_CMD="/sbin/ifconfig"
+: ${netif_ipexpand_max:=2048}
+
+#
+# Subroutines commonly used from network startup scripts.
+# Requires that rc.conf be loaded first.
+#
+
+# ifn_start ifn
+#      Bring up and configure an interface.  If some configuration is
+#      applied, print the interface configuration.
+#
+ifn_start()
+{
+       local ifn cfg
+       ifn="$1"
+       cfg=1
+
+       [ -z "$ifn" ] && err 1 "ifn_start called without an interface"
+
+       ifscript_up ${ifn} && cfg=0
+       ifconfig_up ${ifn} && cfg=0
+       if ! noafif $ifn; then
+               afexists inet && ipv4_up ${ifn} && cfg=0
+               afexists inet6 && ipv6_up ${ifn} && cfg=0
+       fi
+       childif_create ${ifn} && cfg=0
+
+       return $cfg
+}
+
+# ifn_stop ifn
+#      Shutdown and de-configure an interface.  If action is taken,
+#      print the interface name.
+#
+ifn_stop()
+{
+       local ifn cfg
+       ifn="$1"
+       cfg=1
+
+       [ -z "$ifn" ] && err 1 "ifn_stop called without an interface"
+
+       if ! noafif $ifn; then
+               afexists inet6 && ipv6_down ${ifn} && cfg=0
+               afexists inet && ipv4_down ${ifn} && cfg=0
+       fi
+       ifconfig_down ${ifn} && cfg=0
+       ifscript_down ${ifn} && cfg=0
+       childif_destroy ${ifn} && cfg=0
+
+       return $cfg
+}
+
+# ifn_vnetup ifn
+#      Move ifn to the specified vnet jail.
+#
+ifn_vnetup()
+{
+
+       ifn_vnet0 $1 vnet
+}
+
+# ifn_vnetdown ifn
+#      Reclaim ifn from the specified vnet jail.
+#
+ifn_vnetdown()
+{
+
+       ifn_vnet0 $1 -vnet
+}
+
+# ifn_vnet0 ifn action
+#      Helper function for ifn_vnetup and ifn_vnetdown.
+#
+ifn_vnet0()
+{
+       local _ifn _cfg _action _vnet
+       _ifn="$1"
+       _action="$2"
+       _cfg=1
+
+       if _vnet=$(vnetif $_ifn); then
+               ${IFCONFIG_CMD} $_ifn $_action $_vnet && _cfg=0
+       fi
+
+       return $_cfg
+}
+
+# ifconfig_up if
+#      Evaluate ifconfig(8) arguments for interface $if and
+#      run ifconfig(8) with those arguments. It returns 0 if
+#      arguments were found and executed or 1 if the interface
+#      had no arguments.  Pseudo arguments DHCP and WPA are handled
+#      here.
+#
+ifconfig_up()
+{
+       local _cfg _ifconfig_descr _ipv6_opts ifconfig_args 
+       _cfg=1
+
+       # Make sure lo0 always comes up.
+       if [ "$1" = "lo0" ]; then
+               _cfg=0
+       fi
+
+       # inet6 specific
+       if ! noafif $1 && afexists inet6; then
+               if checkyesno ipv6_activate_all_interfaces; then
+                       _ipv6_opts="-ifdisabled"
+               elif [ "$1" != "lo0" ]; then
+                       _ipv6_opts="ifdisabled"
+               fi
+
+               # backward compatibility: $ipv6_enable
+               case $ipv6_enable in
+               [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
+                       case $1 in
+                       bridge[0-9]*)
+                               # No accept_rtadv by default on if_bridge(4)
+                               # to avoid a conflict with the member
+                               # interfaces.
+                       ;;
+                       *)
+                               if ! checkyesno ipv6_gateway_enable; then
+                                       _ipv6_opts="${_ipv6_opts} accept_rtadv"
+                               fi
+                       ;;
+                       esac
+               ;;
+               esac
+
+               case $ipv6_cpe_wanif in
+               $1)
+                       _ipv6_opts="${_ipv6_opts} -no_radr accept_rtadv"
+               ;;
+               esac
+
+               if [ -n "${_ipv6_opts}" ]; then
+                       ${IFCONFIG_CMD} $1 inet6 ${_ipv6_opts}
+               fi
+       fi
+
+       # ifconfig_IF
+       ifconfig_args=`ifconfig_getargs $1`
+       if [ -n "${ifconfig_args}" ]; then
+               eval ${IFCONFIG_CMD} $1 ${ifconfig_args}
+               _cfg=0
+       fi
+
+       # inet6 specific
+       if ! noafif $1 && afexists inet6; then
+               # ifconfig_IF_ipv6
+               ifconfig_args=`ifconfig_getargs $1 ipv6`
+               if [ -n "${ifconfig_args}" ]; then
+                       # backward compatibility: inet6 keyword
+                       case "${ifconfig_args}" in
+                       :*|[0-9a-fA-F]*:*)
+                               warn "\$ifconfig_$1_ipv6 needs leading" \
+                                   "\"inet6\" keyword for an IPv6 address."
+                               ifconfig_args="inet6 ${ifconfig_args}"
+                       ;;
+                       esac
+                       ${IFCONFIG_CMD} $1 inet6 -ifdisabled
+                       eval ${IFCONFIG_CMD} $1 ${ifconfig_args}
+                       _cfg=0
+               fi
+
+               # $ipv6_prefix_IF will be handled in
+               # ipv6_prefix_hostid_addr_common().
+               ifconfig_args=`get_if_var $1 ipv6_prefix_IF`
+               if [ -n "${ifconfig_args}" ]; then
+                       ${IFCONFIG_CMD} $1 inet6 -ifdisabled
+                       _cfg=0
+               fi
+
+               # backward compatibility: $ipv6_ifconfig_IF
+               ifconfig_args=`get_if_var $1 ipv6_ifconfig_IF`
+               if [ -n "${ifconfig_args}" ]; then
+                       warn "\$ipv6_ifconfig_$1 is obsolete." \
+                           "  Use ifconfig_$1_ipv6 instead."
+                       ${IFCONFIG_CMD} $1 inet6 -ifdisabled
+                       eval ${IFCONFIG_CMD} $1 inet6 ${ifconfig_args}
+                       _cfg=0
+               fi
+       fi
+
+       ifalias $1 link alias
+       ifalias $1 ether alias
+
+       _ifconfig_descr=`get_if_var $1 ifconfig_IF_descr`
+       if [ -n "${_ifconfig_descr}" ]; then
+               ${IFCONFIG_CMD} $1 description "${_ifconfig_descr}"
+       fi
+
+       if wpaif $1; then
+               /etc/rc.d/wpa_supplicant start $1
+               _cfg=0          # XXX: not sure this should count
+       elif hostapif $1; then
+               /etc/rc.d/hostapd start $1
+               _cfg=0
+       elif [ ${_cfg} -eq 0 ]; then
+               ${IFCONFIG_CMD} $1 up
+       fi
+
+       if dhcpif $1; then
+               if [ $_cfg -ne 0 ] ; then
+                       ${IFCONFIG_CMD} $1 up
+               fi
+               if syncdhcpif $1; then
+                       /etc/rc.d/dhclient start $1
+               fi
+               _cfg=0
+       fi
+
+       return $_cfg
+}
+
+# ifconfig_down if
+#      returns 1 if wpa_supplicant or dhclient was stopped or
+#      the interface exists.
+#
+ifconfig_down()
+{
+       local _cfg
+       _cfg=1
+
+       if wpaif $1; then
+               /etc/rc.d/wpa_supplicant stop $1
+               _cfg=0
+       elif hostapif $1; then
+               /etc/rc.d/hostapd stop $1
+               _cfg=0
+       fi
+
+       if dhcpif $1; then
+               /etc/rc.d/dhclient stop $1
+               _cfg=0
+       fi
+
+       if ifexists $1; then
+               ${IFCONFIG_CMD} $1 down
+               _cfg=0
+       fi
+
+       return $_cfg
+}
+
+# get_if_var if var [default]
+#      Return the value of the pseudo-hash corresponding to $if where
+#      $var is a string containg the sub-string "IF" which will be
+#      replaced with $if after the characters defined in _punct are
+#      replaced with '_'. If the variable is unset, replace it with
+#      $default if given.
+get_if_var()
+{
+       local _if _punct _punct_c _var _default prefix suffix
+
+       if [ $# -ne 2 -a $# -ne 3 ]; then
+               err 3 'USAGE: get_if_var name var [default]'
+       fi
+
+       _if=$1
+       _punct=".-/+"
+       ltr ${_if} "${_punct}" '_' _if
+       _var=$2
+       _default=$3
+
+       prefix=${_var%%IF*}
+       suffix=${_var##*IF}
+       eval echo \${${prefix}${_if}${suffix}-${_default}}
+}
+
+# _ifconfig_getargs if [af]
+#      Prints the arguments for the supplied interface to stdout.
+#      Returns 1 if empty.  In general, ifconfig_getargs should be used
+#      outside this file.
+_ifconfig_getargs()
+{
+       local _ifn _af
+       _ifn=$1
+       _af=${2+_$2}
+
+       if [ -z "$_ifn" ]; then
+               return 1
+       fi
+
+       get_if_var $_ifn ifconfig_IF$_af "$ifconfig_DEFAULT"
+}
+
+# ifconfig_getargs if [af]
+#      Takes the result from _ifconfig_getargs and removes pseudo
+#      args such as DHCP and WPA.
+ifconfig_getargs()
+{
+       local _tmpargs _arg _args _vnet
+       _tmpargs=`_ifconfig_getargs $1 $2`
+       if [ $? -eq 1 ]; then
+               return 1
+       fi
+       _args=
+       _vnet=0
+
+       for _arg in $_tmpargs; do
+               case $_arg:$_vnet in
+               [Dd][Hh][Cc][Pp]:0) ;;
+               [Nn][Oo][Aa][Uu][Tt][Oo]:0) ;;
+               [Nn][Oo][Ss][Yy][Nn][Cc][Dd][Hh][Cc][Pp]:0) ;;
+               [Ss][Yy][Nn][Cc][Dd][Hh][Cc][Pp]:0) ;;
+               [Ww][Pp][Aa]:0) ;;
+               [Hh][Oo][Ss][Tt][Aa][Pp]:0) ;;
+               vnet:0) _vnet=1 ;;
+               *:1)    _vnet=0 ;;
+               *:0)
+                       _args="$_args $_arg"
+               ;;
+               esac
+       done
+
+       echo $_args
+}
+
+# autoif
+#      Returns 0 if the interface should be automatically configured at
+#      boot time and 1 otherwise.
+autoif()
+{
+       local _tmpargs _arg
+       _tmpargs=`_ifconfig_getargs $1`
+
+       for _arg in $_tmpargs; do
+               case $_arg in
+               [Nn][Oo][Aa][Uu][Tt][Oo])
+                       return 1
+                       ;;
+               esac
+       done
+
+       return 0
+}
+
+# dhcpif if
+#      Returns 0 if the interface is a DHCP interface and 1 otherwise.
+dhcpif()
+{
+       local _tmpargs _arg
+       _tmpargs=`_ifconfig_getargs $1`
+
+       case $1 in
+       lo[0-9]*|\
+       stf[0-9]*|\
+       lp[0-9]*|\
+       sl[0-9]*)
+               return 1
+               ;;
+       esac
+       if noafif $1; then
+               return 1
+       fi
+
+       for _arg in $_tmpargs; do
+               case $_arg in
+               [Dd][Hh][Cc][Pp])
+                       return 0
+                       ;;
+               [Nn][Oo][Ss][Yy][Nn][Cc][Dd][Hh][Cc][Pp])
+                       return 0
+                       ;;
+               [Ss][Yy][Nn][Cc][Dd][Hh][Cc][Pp])
+                       return 0
+                       ;;
+               esac
+       done
+
+       return 1
+}
+
+# syncdhcpif
+#      Returns 0 if the interface should be configured synchronously and
+#      1 otherwise.
+syncdhcpif()
+{
+       local _tmpargs _arg
+       _tmpargs=`_ifconfig_getargs $1`
+
+       if noafif $1; then
+               return 1
+       fi
+
+       for _arg in $_tmpargs; do
+               case $_arg in
+               [Nn][Oo][Ss][Yy][Nn][Cc][Dd][Hh][Cc][Pp])
+                       return 1
+                       ;;
+               [Ss][Yy][Nn][Cc][Dd][Hh][Cc][Pp])
+                       return 0
+                       ;;
+               esac
+       done
+
+       checkyesno synchronous_dhclient
+}
+
+# wpaif if
+#      Returns 0 if the interface is a WPA interface and 1 otherwise.
+wpaif()
+{
+       local _tmpargs _arg
+       _tmpargs=`_ifconfig_getargs $1`
+
+       for _arg in $_tmpargs; do
+               case $_arg in
+               [Ww][Pp][Aa])
+                       return 0
+                       ;;
+               esac
+       done
+
+       return 1
+}
+
+# hostapif if
+#      Returns 0 if the interface is a HOSTAP interface and 1 otherwise.
+hostapif()
+{
+       local _tmpargs _arg
+       _tmpargs=`_ifconfig_getargs $1`
+
+       for _arg in $_tmpargs; do
+               case $_arg in
+               [Hh][Oo][Ss][Tt][Aa][Pp])
+                       return 0
+                       ;;
+               esac
+       done
+
+       return 1
+}
+
+# vnetif if
+#      Returns 0 and echo jail if "vnet" keyword is specified on the
+#      interface, and 1 otherwise.
+vnetif()
+{
+       local _tmpargs _arg _vnet
+       _tmpargs=`_ifconfig_getargs $1`
+
+       _vnet=0
+       for _arg in $_tmpargs; do
+               case $_arg:$_vnet in
+               vnet:0) _vnet=1 ;;
+               *:1)    echo $_arg; return 0 ;;
+               esac
+       done
+
+       return 1
+}
+
+# afexists af
+#      Returns 0 if the address family is enabled in the kernel
+#      1 otherwise.
+afexists()
+{
+       local _af
+       _af=$1
+
+       case ${_af} in
+       inet|inet6)
+               check_kern_features ${_af}
+               ;;
+       link|ether)
+               return 0
+               ;;
+       *)
+               err 1 "afexists(): Unsupported address family: $_af"
+               ;;
+       esac
+}
+
+# noafif if
+#      Returns 0 if the interface has no af configuration and 1 otherwise.
+noafif()
+{
+       local _if
+       _if=$1
+
+       case $_if in
+       pflog[0-9]*|\
+       pfsync[0-9]*|\
+       usbus[0-9]*|\
+       an[0-9]*|\
+       ath[0-9]*|\
+       ipw[0-9]*|\
+       ipfw[0-9]*|\
+       iwi[0-9]*|\
+       iwn[0-9]*|\
+       ral[0-9]*|\
+       wi[0-9]*|\
+       wl[0-9]*|\
+       wpi[0-9]*)
+               return 0
+               ;;
+       esac
+
+       return 1
+}
+
+# ipv6if if
+#      Returns 0 if the interface should be configured for IPv6 and
+#      1 otherwise.
+ipv6if()
+{
+       local _if _tmpargs i
+       _if=$1
+
+       if ! afexists inet6; then
+               return 1
+       fi
+
+       # lo0 is always IPv6-enabled
+       case $_if in
+       lo0)
+               return 0
+               ;;
+       esac
+
+       case "${ipv6_network_interfaces}" in
+       $_if|"$_if "*|*" $_if"|*" $_if "*|[Aa][Uu][Tt][Oo])
+               # True if $ifconfig_IF_ipv6 is defined.
+               _tmpargs=`_ifconfig_getargs $_if ipv6`
+               if [ -n "${_tmpargs}" ]; then
+                       return 0
+               fi
+
+               # True if $ipv6_prefix_IF is defined.
+               _tmpargs=`get_if_var $_if ipv6_prefix_IF`
+               if [ -n "${_tmpargs}" ]; then
+                       return 0
+               fi
+
+               # backward compatibility: True if $ipv6_ifconfig_IF is defined.
+               _tmpargs=`get_if_var $_if ipv6_ifconfig_IF`
+               if [ -n "${_tmpargs}" ]; then
+                       return 0
+               fi
+               ;;
+       esac
+
+       return 1
+}
+
+# ipv6_autoconfif if
+#      Returns 0 if the interface should be configured for IPv6 with
+#      Stateless Address Configuration; 1 otherwise.
+ipv6_autoconfif()
+{
+       local _if _tmpargs _arg
+       _if=$1
+
+       case $_if in
+       lo[0-9]*|\
+       stf[0-9]*|\
+       lp[0-9]*|\
+       sl[0-9]*)
+               return 1
+               ;;
+       esac
+       if noafif $_if; then
+               return 1
+       fi
+       if ! ipv6if $_if; then
+               return 1
+       fi
+       if checkyesno ipv6_gateway_enable; then
+               return 1
+       fi
+       _tmpargs=`get_if_var $_if ipv6_prefix_IF`
+       if [ -n "${_tmpargs}" ]; then
+               return 1
+       fi
+       # backward compatibility: $ipv6_enable
+       case $ipv6_enable in
+       [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1)
+               if checkyesno ipv6_gateway_enable; then
+                       return 1
+               fi
+               case $1 in
+               bridge[0-9]*)
+                       # No accept_rtadv by default on if_bridge(4)
+                       # to avoid a conflict with the member
+                       # interfaces.
+                       return 1
+               ;;
+               *)
+                       return 0
+               ;;
+               esac
+       ;;
+       esac
+
+       _tmpargs=`_ifconfig_getargs $_if ipv6`
+       for _arg in $_tmpargs; do
+               case $_arg in
+               accept_rtadv)
+                       return 0
+                       ;;
+               esac
+       done
+
+       # backward compatibility: $ipv6_ifconfig_IF
+       _tmpargs=`get_if_var $_if ipv6_ifconfig_IF`
+       for _arg in $_tmpargs; do
+               case $_arg in
+               accept_rtadv)
+                       return 0
+                       ;;
+               esac
+       done
+
+       return 1
+}
+
+# ifexists if
+#      Returns 0 if the interface exists and 1 otherwise.
+ifexists()
+{
+       [ -z "$1" ] && return 1
+       ${IFCONFIG_CMD} -n $1 > /dev/null 2>&1
+}
+
+# ipv4_up if
+#      add IPv4 addresses to the interface $if
+ipv4_up()
+{
+       local _if _ret
+       _if=$1
+       _ret=1
+
+       # Add 127.0.0.1/8 to lo0 unless otherwise specified.
+       if [ "${_if}" = "lo0" ]; then
+               ifconfig_args=`get_if_var ${_if} ifconfig_IF`
+               if [ -z "${ifconfig_args}" ]; then
+                       ${IFCONFIG_CMD} ${_if} inet 127.0.0.1/8 alias
+               fi
+       fi
+       ifalias ${_if} inet alias && _ret=0
+
+       return $_ret
+}
+
+# ipv6_up if
+#      add IPv6 addresses to the interface $if
+ipv6_up()
+{
+       local _if _ret
+       _if=$1
+       _ret=1
+
+       if ! ipv6if $_if; then
+               return 0
+       fi
+
+       ifalias ${_if} inet6 alias && _ret=0
+       ipv6_prefix_hostid_addr_common ${_if} alias && _ret=0
+       ipv6_accept_rtadv_up ${_if} && _ret=0
+
+       return $_ret
+}
+
+# ipv4_down if
+#      remove IPv4 addresses from the interface $if
+ipv4_down()
+{
+       local _if _ifs _ret inetList oldifs _inet
+       _if=$1
+       _ifs="^"
+       _ret=1
+
+       ifalias ${_if} inet -alias && _ret=0
+
+       inetList="`${IFCONFIG_CMD} ${_if} | grep 'inet ' | tr "\n\t" "$_ifs"`"
+
+       oldifs="$IFS"
+       IFS="$_ifs"
+       for _inet in $inetList ; do
+               # get rid of extraneous line
+               case $_inet in
+               inet\ *)        ;;
+               *)              continue ;;
+               esac
+
+               _inet=`expr "$_inet" : '.*\(inet 
\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\).*'`
+
+               IFS="$oldifs"
+               ${IFCONFIG_CMD} ${_if} ${_inet} delete
+               IFS="$_ifs"
+               _ret=0
+       done
+       IFS="$oldifs"
+
+       return $_ret
+}
+
+# ipv6_down if
+#      remove IPv6 addresses from the interface $if
+ipv6_down()
+{
+       local _if _ifs _ret inetList oldifs _inet6
+       _if=$1
+       _ifs="^"
+       _ret=1
+
+       if ! ipv6if $_if; then
+               return 0
+       fi
+
+       ipv6_accept_rtadv_down ${_if} && _ret=0
+       ipv6_prefix_hostid_addr_common ${_if} -alias && _ret=0
+       ifalias ${_if} inet6 -alias && _ret=0
+
+       inetList="`${IFCONFIG_CMD} ${_if} | grep 'inet6 ' | tr "\n\t" "$_ifs"`"
+
+       oldifs="$IFS"
+       IFS="$_ifs"
+       for _inet6 in $inetList ; do
+               # get rid of extraneous line
+               case $_inet6 in
+               inet6\ *)       ;;
+               *)              continue ;;
+               esac
+
+               _inet6=`expr "$_inet6" : '.*\(inet6 \([0-9a-f:]*\)\).*'`
+
+               IFS="$oldifs"
+               ${IFCONFIG_CMD} ${_if} ${_inet6} -alias
+               IFS="$_ifs"
+               _ret=0
+       done
+       IFS="$oldifs"
+
+       return $_ret
+}
+
+# ifalias if af action
+#      Configure or remove aliases for network interface $if.
+#      It returns 0 if at least one alias was configured or
+#      removed, or 1 if there were none.
+#
+ifalias()
+{
+       local _ret
+       _ret=1
+
+       afexists $2 || return $_ret
+
+       case "$2" in
+       inet|inet6|link|ether)
+               ifalias_af_common $1 $2 $3 && _ret=0
+               ;;
+       esac
+
+       return $_ret
+}
+
+# ifalias_expand_addr af action addr
+#      Expand address range ("N-M") specification in addr.
+#      "addr" must not include an address-family keyword.
+#      The results will include an address-family keyword.
+#
+ifalias_expand_addr()
+{
+       local _af _action
+
+       _af=$1
+       _action=$2
+       shift 2
+
+       afexists $_af || return
+       ifalias_expand_addr_$_af $_action $*
+}
+
+# ifalias_expand_addr_inet action addr
+#      Helper function for ifalias_expand_addr().  Handles IPv4.
+#
+ifalias_expand_addr_inet()
+{
+       local _action _arg _cidr _cidr_addr _exargs
+       local _ipaddr _plen _range _iphead _iptail _iplow _iphigh _ipcount
+       local _retstr _c
+       _action=$1
+       _arg=$2
+       shift 2
+       _exargs=$*
+       _retstr=
+
+       case $_action:$_arg:$_exargs in
+       *:*--*)         return ;;       # invalid
+       tmp:*[0-9]-[0-9]*:*)            # to be expanded
+               _action="alias"
+       ;;
+       *:*[0-9]-[0-9]*:*)              # to be expanded
+       ;;
+       tmp:*:*netmask*)                # already expanded w/ netmask option
+               echo ${_arg%/[0-9]*} $_exargs && return
+       ;;
+       tmp:*:*)                        # already expanded w/o netmask option
+               echo $_arg $_exargs && return
+       ;;
+       *:*:*netmask*)                  # already expanded w/ netmask option
+               echo inet ${_arg%/[0-9]*} $_exargs && return
+       ;;
+       *:*:*)                          # already expanded w/o netmask option
+               echo inet $_arg $_exargs && return
+       ;;
+       esac
+
+       for _cidr in $_arg; do
+               _ipaddr=${_cidr%%/*}
+               _plen=${_cidr##*/}
+               # When subnet prefix length is not specified, use /32.
+               case $_plen in
+               $_ipaddr)       _plen=32 ;;     # "/" character not found
+               esac
+
+               OIFS=$IFS
+               IFS=. set -- $_ipaddr
+               _range=
+               _iphead=
+               _iptail=
+               for _c in $@; do
+                       case $_range:$_c in
+                       :[0-9]*-[0-9]*)
+                               _range=$_c
+                       ;;
+                       :*)
+                               _iphead="${_iphead}${_iphead:+.}${_c}"
+                       ;;
+                       *:*)
+                               _iptail="${_iptail}${_iptail:+.}${_c}"
+                       ;;
+                       esac
+               done
+               IFS=$OIFS
+               _iplow=${_range%-*}
+               _iphigh=${_range#*-}
+
+               # clear netmask when removing aliases
+               if [ "$_action" = "-alias" ]; then
+                       _plen=""
+               fi
+
+               _ipcount=$_iplow
+               while [ "$_ipcount" -le "$_iphigh" ]; do
+                       _retstr="${_retstr} 
${_iphead}${_iphead:+.}${_ipcount}${_iptail:+.}${_iptail}${_plen:+/}${_plen}"
+                       if [ $_ipcount -gt $(($_iplow + $netif_ipexpand_max)) 
]; then
+                               warn "Range specification is too large 
(${_iphead}${_iphead:+.}${_iplow}${_iptail:+.}${_iptail}-${_iphead}${_iphead:+.}${_iphigh}${_iptail:+.}${_iptail}).
  
${_iphead}${_iphead:+.}${_iplow}${_iptail:+.}${_iptail}-${_iphead}${_iphead:+.}${_ipcount}${_iptail:+.}${_iptail}
 was processed.  Increase \$netif_ipexpand_max in rc.conf."
+                               break
+                       else
+                               _ipcount=$(($_ipcount + 1))
+                       fi
+                       # Forcibly set /32 for remaining aliases.
+                       _plen=32
+               done
+       done
+
+       for _c in $_retstr; do
+               ifalias_expand_addr_inet $_action $_c $_exargs
+       done
+}
+
+# ifalias_expand_addr_inet6 action addr
+#      Helper function for ifalias_expand_addr().  Handles IPv6.
+#
+ifalias_expand_addr_inet6()
+{
+       local _action _arg _cidr _cidr_addr _exargs
+       local _ipaddr _plen _ipleft _ipright _iplow _iphigh _ipcount
+       local _ipv4part
+       local _retstr _c
+       _action=$1
+       _arg=$2
+       shift 2
+       _exargs=$*
+       _retstr=
+
+       case $_action:$_arg:$_exargs in
+       *:*--*:*)       return ;;       # invalid
+       tmp:*[0-9a-zA-Z]-[0-9a-zA-Z]*:*)# to be expanded
+               _action="alias"
+       ;;
+       *:*[0-9a-zA-Z]-[0-9a-zA-Z]*:*)  # to be expanded
+       ;;
+       tmp:*:*prefixlen*)      # already expanded w/ prefixlen option
+               echo ${_arg%/[0-9]*} $_exargs && return
+       ;;
+       tmp:*:*)                # already expanded w/o prefixlen option
+               echo $_arg $_exargs && return
+       ;;
+       *:*:*prefixlen*)        # already expanded w/ prefixlen option
+               echo inet6 ${_arg%/[0-9]*} $_exargs && return
+       ;;
+       *:*:*)                  # already expanded w/o prefixlen option
+               echo inet6 $_arg $_exargs && return
+       ;;
+       esac
+
+       for _cidr in $_arg; do
+               _ipaddr="${_cidr%%/*}"
+               _plen="${_cidr##*/}"
+
+               case $_action:$_ipaddr:$_cidr in

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to