home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / rescue / etc / sysconfig / network / scripts / ifup-802.1q < prev    next >
Text File  |  2006-11-29  |  3KB  |  116 lines

  1. #!/bin/bash
  2. #
  3. # Copyright (c) 2002 SuSE Linux AG Nuernberg, Germany.
  4. # All rights reserved.
  5. #
  6. # Author: Olaf Kirch <okir@suse.de>, 2002
  7. #
  8. # $Id: ifup-802.1q 1344 2006-01-13 15:12:41Z zoz $
  9. #
  10.  
  11. usage () {
  12.     echo $@
  13.     echo "Usage: if{up,down}-802.1q [<config>] <hwdesc> [-o <options>]"
  14.     echo "  hwdesc may be the interface name or any valid description"
  15.     echo "  of the corresponding device, for details see ifup(8)."
  16.     echo "Any option will be ignored."
  17.     exit $R_USAGE
  18. }
  19.  
  20. ######################################################################
  21. # change the working direcory and source some common files
  22. #
  23. R_INTERNAL=1      # internal error, e.g. no config or missing scripts
  24. cd /etc/sysconfig/network || exit $R_INTERNAL
  25. test -f ./config && . ./config
  26. test -f scripts/functions && . scripts/functions || exit $R_INTERNAL
  27.  
  28. ######################################################################
  29. # check arguments and how we are called (in case of links)
  30. #
  31. SCRIPTNAME=${0##*/}
  32. debug $*
  33. case "${SCRIPTNAME}" in
  34.     ifup-*) ACTION=start ;;
  35.     ifdown-*) ACTION=stop ;;
  36.     *) usage
  37. esac
  38. INTERFACE=$1
  39. case "$INTERFACE" in ""|-h|*help*) usage; esac
  40. shift
  41. if [ -n "$1" -a "$1" != "-o" ] ; then
  42.     CONFIG=$INTERFACE
  43.     INTERFACE=$1
  44. fi
  45. shift
  46. test "$1" = "-o" && shift
  47. OPTIONS="$@"
  48. MODE=manual
  49. while [ $# -gt 0 ]; do
  50.     case $1 in
  51.         boot|onboot) MODE=onboot ;;
  52.         hotplug)     MODE=hotplug ;;
  53.         quiet)       be_quiet_has_gone ;;
  54.         debug)       DEBUG=yes ;;
  55.         *)           debug unknown option $1 ;;
  56.     esac
  57.     shift
  58. done
  59.  
  60. ######################################################################
  61. # Check needed tools
  62. #
  63. if ! [ -x /usr/sbin/vconfig ]; then
  64.     logerror "VLAN utilities not installed"
  65.     exit $R_INTERNAL
  66. fi
  67.  
  68. ######################################################################
  69. # check presence of configuration file and source it
  70. #
  71. test -f ./ifcfg-$CONFIG && . ./ifcfg-$CONFIG
  72.  
  73. ######################################################################
  74. # get the base interface and check if it is available or up
  75. #
  76. # ETHERDEVICE may contain a device description which must first be
  77. # converted to the current interface name of that device
  78. if [ "$ACTION" = start ] ; then
  79.     ETHERDEVICE=`/sbin/getcfg-interface -- $ETHERDEVICE`
  80.     if ! is_iface_available  $ETHERDEVICE ; then
  81.         logerror "interface ${ETHERDEVICE} is not available"
  82.         exit $R_NODEV
  83.     fi
  84.     if ! is_iface_up $ETHERDEVICE ; then
  85.         #logerror "interface ${ETHERDEVICE} is not up"
  86.         #exit $R_NOTRUNNING
  87.         ip link set up dev $ETHERDEVICE
  88.     fi
  89. fi
  90.  
  91. ######################################################################
  92. case $ACTION in
  93. start)    /sbin/modprobe 8021q
  94.     # Switches the naming type to vlan<N>
  95.     # The default is ethN.M but that's hard to reconcile
  96.     # with the network script framework
  97.     /usr/sbin/vconfig set_name_type vlan_plus_vid_no_pad >/dev/null
  98.     #/usr/sbin/vconfig set_bind_type per_kernel
  99.  
  100.     # Now create the VLAN interface
  101.     id=${INTERFACE#vlan}
  102.     if [ "$INTERFACE" = "$id" ]; then
  103.         logerror "interface $INTERFACE not named vlanNNN"
  104.         exit $R_INTERNAL
  105.     fi
  106.  
  107.     /usr/sbin/vconfig add $ETHERDEVICE $id >/dev/null
  108.     ;;
  109. stop)
  110.     if [ -d /sys/class/net/$INTERFACE ] ; then
  111.         /usr/sbin/vconfig rem $INTERFACE >/dev/null
  112.     fi
  113.     ;;
  114. esac
  115.  
  116.