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 / dhcpcd-hook < prev    next >
Text File  |  2006-11-29  |  4KB  |  134 lines

  1. #!/bin/bash
  2. #
  3. # Copyright (c) 2002-2003 SuSE Linux AG Nuernberg, Germany.
  4. # All rights reserved.
  5. #
  6. # This program is free software; you can redistribute it and/or modify it under
  7. # the terms of the GNU General Public License as published by the Free Software
  8. # Foundation; either version 2 of the License, or (at your option) any later
  9. # version.
  10. #
  11. # This program is distributed in the hope that it will be useful, but WITHOUT
  12. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  13. # FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
  14. # details.
  15. #
  16. # You should have received a copy of the GNU General Public License along with
  17. # this program; if not, write to the Free Software Foundation, Inc., 59 Temple
  18. # Place, Suite 330, Boston, MA 02111-1307 USA
  19. #
  20. # Author: Peter Poeml <poeml@suse.de>
  21. #
  22. # $Id: dhcpcd-hook 1484 2006-05-22 16:00:56Z poeml $
  23.  
  24.  
  25. #
  26. # Hook script for dhcpcd (the DHCP client)
  27. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  28. #
  29. # It is called when an interface is brought "up", "down", or the IP address has
  30. # changed ("new").
  31. #
  32. # It calls "ifup <interface> -o dhcp", which does the following:
  33. #
  34. #  - set up routing according to /etc/sysconfig/network/ifroute-* 
  35. #    (where you can configure routes per interface)
  36. #
  37. #  - execute /etc/sysconfig/network/if-{up,down}.d/*
  38. #    (where you can place your own scripts)
  39. #
  40. #  - execute POST_UP scripts defined in /etc/sysconfig/network/ifcfg-* 
  41. #    (see "man 8 ifup")
  42. #
  43. # Thus, those are the hooks where you can add stuff.
  44.  
  45.  
  46. #  The following parameters are passed to this script by dhcpcd:
  47. #  $1 = HostInfoFilePath, e.g  "/var/lib/dhcpcd/dhcpcd-eth0.info"
  48. #  $2 = "up" if interface has been configured with the same
  49. #       IP address as before reboot;
  50. #  $2 = "down" if interface has been shut down;
  51. #  $2 = "new" if interface has been configured with new IP address;
  52. #  $3 (optional) = "-d" debug flag passed if dhcpcd daemon has been
  53. #       invoked with "-d" flag
  54.  
  55.  
  56.  
  57. my_name=${0##*/}
  58.  
  59. # log_err="logger -s -t $my_name -p daemon.err"
  60. # log_dbg="logger -s -t $my_name -p daemon.debug"
  61. log_err="logger -t $my_name -p daemon.err"
  62. log_dbg="logger -t $my_name -p daemon.debug"
  63.  
  64. if [ $# -lt 2 ]; then
  65.     $log_err "wrong usage"
  66.     exit 1
  67. fi
  68.  
  69. leaseinfo="$1"
  70. state="$2"
  71. debug="$3"
  72.  
  73. if [ -n "$debug" ]; then
  74.     $log_dbg "State: $state. Leaseinfo: ${leaseinfo:-<none given>}"
  75.     debug=true
  76. else
  77.     debug=false
  78. fi
  79.  
  80. # it is possible that the leaseinfo file does not exist:
  81. #  - when it has never been written (since a lease was never acquired)
  82. #  - when deleted manually
  83. # in this case, we don't even know which interface is concerned, and
  84. # there's nothing to do about it.
  85. # (in the 'leaseinfo does not exist case' the interface can still be 
  86. # guessed from the name, but I doubt it's useful to run ifdown then)
  87. if test -z $leaseinfo; then
  88.         $log_dbg "Skipping 'ifdown \$INTERFACE -o dhcp' call"
  89.         exit 0
  90. fi
  91. if ! test -e $leaseinfo; then
  92.         $log_dbg "$leaseinfo does not exist. Skipping 'ifdown \$INTERFACE -o dhcp' call"
  93.         exit 0
  94. fi
  95.  
  96.  
  97.  
  98. while read line; do
  99.     case "$line" in
  100.         INTERFACE*|IPADDR*) eval $line;;
  101.     esac
  102. done < $leaseinfo
  103.  
  104.  
  105. case $state in
  106. up)
  107.     $debug && $log_dbg "Running ifup $INTERFACE -o dhcp"
  108.     ifup $INTERFACE -o dhcp
  109.  
  110.     # reload syslog so it knows the new hostname
  111.     /etc/init.d/syslog reload
  112.     ;;
  113. down)
  114.     # We now call PRE_DOWN_SCRIPT directly from ifdown, because it was called
  115.     # POST from here (after IP address was removed). Thus we don't need this
  116.     # $debug && $log_dbg "Running ifdown $INTERFACE -o dhcp"
  117.     # ifdown $INTERFACE -o dhcp
  118.     ;;
  119. new)
  120.     $debug && $log_dbg "new IP address: $IPADDR"
  121.  
  122.     # reload syslog so it knows the new hostname
  123.     /etc/init.d/syslog reload
  124.  
  125.     $debug && $log_dbg "Running ifdown $INTERFACE -o dhcp"
  126.     ifdown $INTERFACE -o dhcp
  127.     $debug && $log_dbg "Running ifup $INTERFACE -o dhcp"
  128.     ifup $INTERFACE -o dhcp
  129.     ;;
  130. esac
  131.  
  132.  
  133. exit 0
  134.