Author: eugen
Date: Fri Apr  5 22:45:08 2019
New Revision: 345970
URL: https://svnweb.freebsd.org/changeset/base/345970

Log:
  network.subr: improve configuration of cloned gif(4) interfaces
  
  ifconfig(8) syntax allows to specify only single address_family,
  so we need additional invocation of ifconfig to support configuration
  of cloned gif interface that may use different address families
  for its internal and external addresses.
  
  Also, ifconfig(8) does not allow to omit "inet6" keyword for address family
  specifying IPv6 addresses as outer addresses of the interface.
  
  Also, address_family is not "parameter" and it has to go before parameters
  including "tunnel" keyword, so "ifconfig gif0 tunnel inet6 $oip1 $oip2" would 
be
  wrong syntax and only "ifconfig gif0 inet6 tunnel $oip1 $oip2" is right.
  
  With this change, the following works:
  
  gifconfig_gif0="inet6 2a00::1 2a01::1"
  ifconfig_gif0="inet 10.0.0.1 10.0.0.2 netmask 255.255.255.252"
  
  MFC after:    2 weeks

Modified:
  head/libexec/rc/network.subr

Modified: head/libexec/rc/network.subr
==============================================================================
--- head/libexec/rc/network.subr        Fri Apr  5 22:45:01 2019        
(r345969)
+++ head/libexec/rc/network.subr        Fri Apr  5 22:45:08 2019        
(r345970)
@@ -1328,7 +1328,7 @@ wlan_down()
 #
 clone_up()
 {
-       local _list ifn ifopt _iflist _n tmpargs
+       local _list ifn ifopt _iflist _inet6 _n tmpargs
        _list=
        _iflist=$*
 
@@ -1394,9 +1394,21 @@ clone_up()
                esac
                if [ $? -eq 0 ]; then
                        _list="$_list $ifn"
+                       tmpargs=$(get_if_var $ifn gifconfig_IF)
+                       _inet6=''
+                       case "$tmpargs" in
+                       '')
+                       ;;
+                       inet6[[:space:]]*)
+                               tmpargs=${tmpargs#inet6}
+                               _inet6=inet6
+                               # FALLTHROUGH
+                       ;&
+                       *)
+                               ${IFCONFIG_CMD} $ifn $_inet6 tunnel $tmpargs
+                       ;;
+                       esac
                fi
-               tmpargs=$(get_if_var $ifn gifconfig_IF)
-               eval ifconfig_${ifn}=\"\$ifconfig_${ifn} tunnel \$tmpargs\"
        done
        if [ -n "${_list# }" ]; then
                echo "Created clone interfaces: ${_list# }."


_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to