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 / functions.common < prev    next >
Text File  |  2006-11-29  |  6KB  |  173 lines

  1. #!/bin/bash
  2.  
  3. # Network interface configuration
  4. #
  5. # Copyright (c) 2002-2003 SuSE Linux AG Nuernberg, Germany.
  6. # All rights reserved.
  7. #
  8. # This program is free software; you can redistribute it and/or modify it under
  9. # the terms of the GNU General Public License as published by the Free Software
  10. # Foundation; either version 2 of the License, or (at your option) any later
  11. # version.
  12. #
  13. # This program is distributed in the hope that it will be useful, but WITHOUT
  14. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  15. # FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
  16. # details.
  17. #
  18. # You should have received a copy of the GNU General Public License along with
  19. # this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  20. # Place, Suite 330, Boston, MA 02111-1307 USA
  21. #
  22. # Authors: Michal Svec <msvec@suse.cz>
  23. #          Mads Martin Joergensen <mmj@suse.de>
  24. #
  25. # $Id: functions.common 1413 2006-02-14 19:18:24Z zoz $
  26. #
  27.  
  28. # RUN_FILES_BASE contains the path to the configuration data cache.
  29. # It __must__ __not__ contain a trailing slash.
  30. RUN_FILES_BASE=/dev/shm/sysconfig
  31. test -d $RUN_FILES_BASE || mkdir -p $RUN_FILES_BASE
  32.  
  33. #####################################################################
  34. # Returnvalues
  35. #
  36. # I don't know currently, if all this returnvalues are necessary. Probably some
  37. # of them will be removed. The values 0-7 should be very similar to the LSB
  38. # return values for init scripts
  39. R_SUCCESS=0        # interface has been set up
  40. R_ERROR=1          # any unspecified error
  41. R_USAGE=2          # wrong usage
  42. R_NOTIMPL=3        # feature not implemented
  43. R_NOTALLOWED=4     # insufficient privilege
  44.  
  45. R_NODEV=7          # the given interface does not exist
  46. R_NOTCONFIGURED=5  # the bootmode does not match the current mode
  47. R_INACTIVE=5       # the interface is not up and it should not
  48. R_NOTRUNNING=7     # the interface is not up but it should be up
  49.  
  50. R_NOCONFIG=9       # we could not find a matching configuration file
  51. R_BUSY=10          # the interface is busy and should not be shut down.
  52.                    # It will be used for 'ifstatus ... -o stop' or ifdown ... -o
  53.                    # check' or whatever we use for the check if a interface can
  54.                    # be shut down savely.
  55. R_LOCKED=11        # ifup/down is currently running on this hwdesc
  56. R_DHCP_BG=12       # dhcp client is running in bg, but no address up to now
  57.                    # or setting up firewall is still in progress
  58. R_INTERNAL=$R_ERROR      # internal error, e.g. no config or missing scripts
  59. R_NOT_UP2DATE=13   # returned from ifprobe if configuration has changed
  60. R_PROPERTY_NOT_SET=14    # some property of the iface could not be set.
  61. R_NO_IFPLUGD=15    # ifplugd is not running despite configured
  62.  
  63. export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/etc/sysconfig/network/scripts
  64.  
  65. LOGGER=/bin/logger
  66.  
  67. be_quiet_has_gone() {
  68.     mesg "Option 'quiet' has gone. Redirect output instead"
  69. }
  70.  
  71. logerror () {
  72.     err_mesg "$*"
  73. }
  74.  
  75. message () {
  76.     mesg "$*"
  77. }
  78.  
  79. message_n () {
  80.     mesg_n "$*"
  81. }
  82.  
  83. debug () {
  84.     test -n "$*" && info_mesg "$*"
  85.     test "$DEBUG" == "yes"
  86. }
  87.  
  88. message_if_not_run_from_rc () {
  89.     if [ "$RUN_FROM_RC" = "yes" ]; then
  90.         debug "$*"
  91.     else
  92.         message "$*"
  93.     fi
  94.     return 0
  95. }
  96.  
  97. reverse () {
  98.     local X=$1
  99.     test -z "$X" && return
  100.     shift
  101.     reverse $*
  102.     echo $X
  103. }
  104.  
  105. ########################################################################
  106. # output functions
  107. #
  108. # This defines a set of new output functions. One for each syslog level.
  109. # Currently we use only {err,info,debug}_mesg(), but other level may be added
  110. # easily. These functions should replace the old functions logerror(), message()
  111. # and debug()
  112. #
  113. # IMPORTANT: Wanted LOG_LEVEL has to be set _before_ this file is sourced.
  114.  
  115. # If your script is called from udev and you did not set DEFAULT_LOG_LEVEL we
  116. # use the udev loglevel. Else an unset LOG_LEVEL will be set to 3 (err).
  117. LOG_LEVEL=${LOG_LEVEL:-$DEFAULT_LOG_LEVEL}
  118. LOG_LEVEL=${LOG_LEVEL:-$UDEV_LOG}
  119. LOG_LEVEL=${LOG_LEVEL:-3}
  120. # Also respect variable DEBUG for backward compliance
  121. test "$DEBUG" == yes && LOG_LEVEL=7
  122. SCRIPTNAME=${SCRIPTNAME:-${0##*/}}
  123.  
  124. if [ "$USE_SYSLOG" != yes ] ; then
  125.     mesg() {
  126.         echo -e "$@" # >&2
  127.     }
  128.     mesg_n() {
  129.         echo -ne "$@" # >&2
  130.     }
  131. else
  132.     mesg() {
  133.         echo -e "$@" # >&2
  134.         echo -e "$@" | logger -t "$SCRIPTNAME"
  135.     }
  136.     mesg_n() {
  137.         echo -ne "$@"  # >&2
  138.         echo -e "$@" | logger -t "$SCRIPTNAME"
  139.     }
  140. fi
  141.  
  142. # This loop defines one *_mesg() function per loglevel, which does nothing,
  143. # writes to stderr or writes to syslog and stderr depending of the settings of
  144. # LOG_LEVEL and USE_SYSLOG.
  145. # Currently we define only err_mesg(), info_mesg() and debug_mesg(). If you need
  146. # *_mesg functions for other levels, just add the name (instead of the "#") in
  147. # the right order and set 'nl' to the number of the lowest level you use.
  148. # Syslog levels are: emerg alert crit err warning notice info debug
  149. # See what it does with:
  150. #    USE_SYSLOG=<yes|no> LOG_LEVEL=<0-7> . functions.common
  151. #    type err_mesg info_mesg debug_mesg
  152. # nl=0
  153. # for level in emerg "#" crit err warning "#" info debug; do
  154. nl=3
  155. for level in err "#" "#" info debug; do
  156.     eval ${level}_mesg\(\) \{ :\; \}
  157.     eval ${level}_mesg_n\(\) \{ :\; \}
  158.     test "$((nl))" -gt "$LOG_LEVEL" && : $((nl++)) && continue
  159.     if [ "$USE_SYSLOG" != yes ] ; then
  160.         eval ${level}_mesg\(\) \{ echo -e \"\$\@\" 1\>\&2\; \}
  161.         eval ${level}_mesg_n\(\) \{ echo -ne \"\$\@\" 1\>\&2\; \}
  162.     else
  163.         eval ${level}_mesg\(\) \{ echo -e \"\$\@\" 1\>\&2\; \
  164.             echo -e \"\$\@\" \
  165.             \| logger -p $nl -t \"$SCRIPTNAME\" \; \}
  166.         eval ${level}_mesg_n\(\) \{ echo -ne \"\$\@\" 1\>\&2\; \
  167.             echo -e \"\$\@\" \
  168.             \| logger -p $nl -t \"$SCRIPTNAME\" \; \}
  169.     fi
  170.     : $((nl++))
  171. done
  172.  
  173.