/[util-vserver]/util-vserver/scripts/vserver.functions
ViewVC logotype

Diff of /util-vserver/scripts/vserver.functions

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.26 by ensc, Fri Mar 26 07:35:09 2004 UTC revision 1.28 by ensc, Tue Mar 30 20:26:03 2004 UTC
# Line 411  function _addInterfaceCmd Line 411  function _addInterfaceCmd
411      let ++INTERFACE_CMDS_IDX      let ++INTERFACE_CMDS_IDX
412  }  }
413    
414    ## Usage: _generateMac <var> <iface> <ctx>
415    function _generateMac
416    {
417        isNumber "$2" || {
418            echo $"Interface basename '$iface' must be either a number, or the mac must be configured explicitly" >&2
419            return 1
420        }
421    
422        eval $1=$(printf "f0:ff:%02x:%02x:%02x:%02x" $[ (~($2>>8)) & 0xff ] $[ ($2 & 0xff) ] $[ ($3>>8) & 0xff ] $[ $3 & 0xff ])
423    }
424    
425  ## Usage: _processSingleInterface <interface-directory>  ## Usage: _processSingleInterface <interface-directory>
426  function _processSingleInterface  function _processSingleInterface
427  {  {
# Line 423  function _processSingleInterface Line 434  function _processSingleInterface
434      local bcast      local bcast
435      local name      local name
436      local scope      local scope
437        local mac
438        local extip
439        local up="up"
440    
441      _getInterfaceValue ip     '' "$iface"      _getInterfaceValue ip     '' "$iface"
442        _getInterfaceValue extip  '' "$iface" "$iface/.."
443      _getInterfaceValue dev    '' "$iface" "$iface/.."      _getInterfaceValue dev    '' "$iface" "$iface/.."
444      _getInterfaceValue prefix '' "$iface" "$iface/.."      _getInterfaceValue prefix '' "$iface" "$iface/.."
445      _getInterfaceValue mask   '' "$iface" "$iface/.."      _getInterfaceValue mask   '' "$iface" "$iface/.."
446      _getInterfaceValue bcast  '' "$iface" "$iface/.."      _getInterfaceValue bcast  '' "$iface" "$iface/.."
447      _getInterfaceValue name   '' "$iface"      _getInterfaceValue name   '' "$iface"
448      _getInterfaceValue scope  '' "$iface" "$iface/.."      _getInterfaceValue scope  '' "$iface" "$iface/.."
449        _getInterfaceValue mac    '' "$iface"
450    
451      test "$ip" || { echo $"Can not read ip for '$iface'"  >&2; return 1; }      test "$ip" || { echo $"Can not read ip for '$iface'"  >&2; return 1; }
452        
453      test ! -e "$iface"/only_ip || {      test ! -e "$iface"/only_ip || {
454            ## LEGACY ALERT
455          echo $"The 'only_ip' flag for interface '$iface' is deprecated; use 'nodev' instead of" >&2          echo $"The 'only_ip' flag for interface '$iface' is deprecated; use 'nodev' instead of" >&2
456          unset dev          unset dev
457      }      }
458      test ! -e "$iface"/nodev   || unset dev      test ! -e "$iface"/nodev   || unset dev
459        test ! -e "$iface"/down    || up=
460            
461      if test "$dev"; then      if test "$dev"; then
462          _transformMask2Prefix prefix "$prefix" "$mask"          _transformMask2Prefix prefix "$prefix" "$mask"
# Line 452  function _processSingleInterface Line 470  function _processSingleInterface
470                  test -f /proc/net/vlan || {                  test -f /proc/net/vlan || {
471                      _addInterfaceCmd VCONFIG "${dev/./ }"                      _addInterfaceCmd VCONFIG "${dev/./ }"
472                      _addInterfaceCmd IP_ADDR 127.0.0.1/8 broadcast 127.255.255.255 dev "$dev"                      _addInterfaceCmd IP_ADDR 127.0.0.1/8 broadcast 127.255.255.255 dev "$dev"
473                      _addInterfaceCmd IP_LINK "$dev"                      _addInterfaceCmd IP_LINK "$dev" $up
474                  }                  }
475                  ;;                  ;;
476          esac          esac
477    
478            if ! test -e "$iface"/indirect; then
479                _addInterfaceCmd IP_ADDR  "$ip${prefix:+/$prefix}" broadcast ${bcast:-+} ${name:+label "$dev:$name"} dev "$dev"
480                #_addInterfaceCmd IP_ROUTE "$ip${prefix:+/$prefix}" dev "$dev"
481                _addInterfaceCmd IP_LINK  "$dev" $up
482            elif ! test "$ctx"; then
483                echo $"Using 'dummy' (indirect) for interface '$dev' requires a fixed context number; dynamic ctx are not supported" >&2
484                return 1
485            else
486                test "$mac" || _generateMac mac "$(basename $iface)" "$ctx" || return 1
487                _addInterfaceCmd MODPROBE dummy "$dev"
488                _addInterfaceCmd IP_LINK  dev dummy0 address "$mac"
489                _addInterfaceCmd NAMEIF   "$dev" "$mac"
490                _addInterfaceCmd IP_ADDR  "$ip${prefix:+/$prefix}" dev "$dev"
491                test -z "$extip" || _addInterfaceCmd IPTABLES "$ip${prefix:+/$prefix}" ${name:+label "$dev:$name"} "$ctx" "$extip"
492            fi
493          INTERFACES=( "${INTERFACES[@]}" "$ip${prefix:+/$prefix}" )          INTERFACES=( "${INTERFACES[@]}" "$ip${prefix:+/$prefix}" )
         _addInterfaceCmd IP_ADDR  "$ip${prefix:+/$prefix}" broadcast ${bcast:-+} ${name:+label "$dev:$name"} dev "$dev"  
         #_addInterfaceCmd IP_ROUTE "$ip${prefix:+/$prefix}" dev "$dev"  
         _addInterfaceCmd IP_LINK  "$dev"  
494      fi      fi
495  }  }
496    
# Line 468  function _processSingleInterface Line 498  function _processSingleInterface
498  function _generateInterfaceOptions  function _generateInterfaceOptions
499  {  {
500      local iface      local iface
501        local ctx
502    
503        test ! -e "$1"/context || read ctx <"$1"/context
504    
505      for iface in "$1/interfaces/"*; do      for iface in "$1/interfaces/"*; do
506          test   -d "$iface"          || continue          test   -d "$iface"          || continue
# Line 487  function enableInterfaces Line 520  function enableInterfaces
520          eval var='( "${INTERFACE_CMDS_'$i'[@]}" )'          eval var='( "${INTERFACE_CMDS_'$i'[@]}" )'
521          local type=${var[0]}          local type=${var[0]}
522          unset var[0]          unset var[0]
523            
524            set -- "${var[@]}"
525          case "$type" in          case "$type" in
526              VCONFIG)    $_VCONFIG  add "${var[@]}";;              IPTABLES)   ;; ## TODO
527              IP_ADDR)    $_IP addr  add "${var[@]}";;              MODPROBE)
528              IP_LINK)    $_IP link  set "${var[@]}" up;;                  local mod=$1
529              IP_ROUTE)   $_IP route add "${var[@]}";;                  local name=$2
530                    shift 2
531                    $_MODPROBE ${name:+-o "$name"} "$mod" "$@"
532                    ;;
533                NAMEIF)     $_NAMEIF   "$@";;
534                VCONFIG)    $_VCONFIG  add "$@";;
535                IP_ADDR)    $_IP addr  add "$@";;
536                IP_LINK)    $_IP link  set "$@";;
537                IP_ROUTE)   $_IP route add "$@";;
538              *)          echo "Unknown interface-command type '$type'" >&2; false;;              *)          echo "Unknown interface-command type '$type'" >&2; false;;
539          esac          esac
540    
# Line 514  function disableInterfaces Line 556  function disableInterfaces
556          local type=${var[0]}          local type=${var[0]}
557          unset var[0]          unset var[0]
558                    
559            set -- "${var[@]}"
560          case "$type" in          case "$type" in
561              VCONFIG)    $_VCONFIG  rem "${var[@]}";;              IPTABLES)   ;; ## TODO
562              IP_ADDR)    $_IP addr  del "${var[@]}";;              MODPROBE)   $_RMMOD "${2:-$1}";;
563                NAMEIF)     ;;
564                VCONFIG)    $_VCONFIG  rem "$@";;
565                IP_ADDR)    $_IP addr  del "$@";;
566              IP_LINK)    ;; ## Ignore the link-down command for now              IP_LINK)    ;; ## Ignore the link-down command for now
567              IP_ROUTE)   $_IP route del "${var[@]}";;              IP_ROUTE)   $_IP route del "$@";;
568              *)          echo "Unknown interface-command type '$type'" >&2; false;;              *)          echo "Unknown interface-command type '$type'" >&2; false;;
569          esac          esac
570      done      done

Legend:
Removed from v.1.26  
changed lines
  Added in v.1.28

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26