38 lines
		
	
	
		
			933 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			933 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| # run dhclient.d scripts in an emulated environment
 | |
| 
 | |
| PATH=/bin:/usr/bin:/sbin
 | |
| SAVEDIR=/var/lib/dhclient
 | |
| ETCDIR=/etc/dhcp
 | |
| interface=$1
 | |
| 
 | |
| eval "$(
 | |
| declare | LC_ALL=C grep '^DHCP4_[A-Z_]*=' | while read opt; do
 | |
|     optname=${opt%%=*}
 | |
|     optname=${optname,,}
 | |
|     optname=new_${optname#dhcp4_}
 | |
|     optvalue=${opt#*=}
 | |
|     echo "export $optname=$optvalue"
 | |
| done
 | |
| )"
 | |
| 
 | |
| [ -f /etc/sysconfig/network ] && . /etc/sysconfig/network
 | |
| 
 | |
| [ -f /etc/sysconfig/network-scripts/ifcfg-$interface ] && \
 | |
|     . /etc/sysconfig/network-scripts/ifcfg-$interface
 | |
| 
 | |
| if [ -d $ETCDIR/dhclient.d ]; then
 | |
|     for f in $ETCDIR/dhclient.d/*.sh; do
 | |
|         if [ -x $f ]; then
 | |
|             subsystem="${f%.sh}"
 | |
|             subsystem="${subsystem##*/}"
 | |
|             . ${f}
 | |
|             if [ "$2" = "up" ]; then
 | |
|                 "${subsystem}_config"
 | |
|             elif [ "$2" = "down" ]; then
 | |
|                 "${subsystem}_restore"
 | |
|             fi
 | |
|         fi
 | |
|     done
 | |
| fi
 |