Author: bdubbs
Date: 2008-04-11 12:45:07 -0600 (Fri, 11 Apr 2008)
New Revision: 1937
Added:
trunk/dhcp/dhcp-3.0.2-client_dns-1.patch
trunk/dhcp/dhcp-3.0.6-iproute2-1.patch
Log:
Update for dhcp 3.0.6
Copied: trunk/dhcp/dhcp-3.0.2-client_dns-1.patch (from rev 1936,
trunk/dhcp/dhcp-3.0.5-client_dns-1.patch)
===================================================================
--- trunk/dhcp/dhcp-3.0.2-client_dns-1.patch (rev 0)
+++ trunk/dhcp/dhcp-3.0.2-client_dns-1.patch 2008-04-11 18:45:07 UTC (rev
1937)
@@ -0,0 +1,37 @@
+Submitted By: Dan Nicholson (dnicholson at linuxfromscratch dot org)
+Date: 2007-01-14
+Initial Package Version: 3.0.5
+Origin: Upstream
+Description: Fixes client fixes issues with always regenerating
+ /etc/resolv.conf whether the DNS server has changed or not.
+
+diff -pNur dhcp-3.0.5.orig/client/scripts/linux dhcp-3.0.5/client/scripts/linux
+--- dhcp-3.0.5.orig/client/scripts/linux 2002-11-14 17:09:09.000000000
-0800
++++ dhcp-3.0.5/client/scripts/linux 2006-12-21 09:41:31.000000000 -0800
+@@ -23,12 +23,22 @@
+ # of the $1 in its args.
+
+ make_resolv_conf() {
+- if [ "x$new_domain_name" != x ] && [ x"$new_domain_name_servers" != x ];
then
+- echo search $new_domain_name >/etc/resolv.conf
+- chmod 644 /etc/resolv.conf
++ if [ x"$new_domain_name_servers" != x ]; then
++ cat /dev/null > /etc/resolv.conf.dhclient
++ chmod 644 /etc/resolv.conf.dhclient
++ if [ x"$new_domain_search" != x ]; then
++ echo search $new_domain_search >> /etc/resolv.conf.dhclient
++ elif [ x"$new_domain_name" != x ]; then
++ # Note that the DHCP 'Domain Name Option' is really just a domain
++ # name, and that this practice of using the domain name option as
++ # a search path is both nonstandard and deprecated.
++ echo search $new_domain_name >> /etc/resolv.conf.dhclient
++ fi
+ for nameserver in $new_domain_name_servers; do
+- echo nameserver $nameserver >>/etc/resolv.conf
++ echo nameserver $nameserver >>/etc/resolv.conf.dhclient
+ done
++
++ mv /etc/resolv.conf.dhclient /etc/resolv.conf
+ fi
+ }
+
Copied: trunk/dhcp/dhcp-3.0.6-iproute2-1.patch (from rev 1936,
trunk/dhcp/dhcp-3.0.5-iproute2-1.patch)
===================================================================
--- trunk/dhcp/dhcp-3.0.6-iproute2-1.patch (rev 0)
+++ trunk/dhcp/dhcp-3.0.6-iproute2-1.patch 2008-04-11 18:45:07 UTC (rev
1937)
@@ -0,0 +1,231 @@
+Submitted By: DJ Lucas (dj at linuxfromscratch dot org)
+Date: 2005-06-18
+Initial Package Version: 3.0.2
+Origin: Jim Gifford, Bruce Dubbs, DJ Lucas
+Updated: Bruce Dubbs 2007-01-17 (Adjust offsets)
+Description: Fixes client script to use iproute2 (added flush to previous
+ unversioned patches)
+Upstream Status: Not submitted
+
+--- dhcp-3.0.2-orig/client/scripts/linux.phase1 2007-01-14
12:05:54.000000000 -0600
++++ dhcp-3.0.2/client/scripts/linux 2007-01-14 12:06:05.000000000 -0600
+@@ -1,26 +1,15 @@
+ #!/bin/bash
+ # dhclient-script for Linux. Dan Halbert, March, 1997.
+ # Updated for Linux 2.[12] by Brian J. Murrell, January 1999.
+-# No guarantees about this. I'm a novice at the details of Linux
+-# networking.
++
++# Updated to iproute2 by Jim Gifford ([EMAIL PROTECTED])
+
+ # Notes:
+
+ # 0. This script is based on the netbsd script supplied with dhcp-970306.
+-
+-# 1. ifconfig down apparently deletes all relevant routes and flushes
+-# the arp cache, so this doesn't need to be done explicitly.
+-
+-# 2. The alias address handling here has not been tested AT ALL.
+-# I'm just going by the doc of modern Linux ip aliasing, which uses
+-# notations like eth0:0, eth0:1, for each alias.
+-
+-# 3. I have to calculate the network address, and calculate the broadcast
+-# address if it is not supplied. This might be much more easily done
+-# by the dhclient C code, and passed on.
+-
+-# 4. TIMEOUT not tested. ping has a flag I don't know, and I'm suspicious
+-# of the $1 in its args.
++# 1. This script was modified to work with iproute2
++# 2. cidr_convert based on a script by Kevin Fleming ([EMAIL PROTECTED])
++# 3. Updated to delete addresses when taking an interface down ([EMAIL
PROTECTED])
+
+ make_resolv_conf() {
+ if [ x"$new_domain_name_servers" != x ]; then
+@@ -42,6 +31,30 @@
+ fi
+ }
+
++dec2binary()
++{
++ local n=$1
++ local ret=""
++ while [ $n != 0 ]; do
++ ret=$[$n%2]$ret
++ n=$[$n>>1]
++ done
++ echo $ret
++}
++
++mask_to_binary()
++{
++ echo `dec2binary $1``dec2binary $2``dec2binary $3``dec2binary $4`
++}
++
++cidr_convert()
++{
++ netmask=$1
++ local mask=`mask_to_binary ${netmask//./ }`
++ mask=${mask%%0*}
++ cidr=${#mask}
++}
++
+ # Must be used on exit. Invokes the local dhcp client exit hooks, if any.
+ exit_with_hooks() {
+ exit_status=$1
+@@ -63,11 +76,6 @@
+ fi
+ fi
+
+-release=`uname -r`
+-release=`expr $release : '\(.*\)\..*'`
+-relminor=`echo $release |sed -e 's/[0-9]*\.\([0-9][0-9]*\)\(\..*\)*$/\1/'`
+-relmajor=`echo $release |sed -e 's/\([0-9][0-9]*\)\..*$/\1/'`
+-
+ if [ x$new_broadcast_address != x ]; then
+ new_broadcast_arg="broadcast $new_broadcast_address"
+ fi
+@@ -75,13 +83,12 @@
+ old_broadcast_arg="broadcast $old_broadcast_address"
+ fi
+ if [ x$new_subnet_mask != x ]; then
+- new_subnet_arg="netmask $new_subnet_mask"
++ cidr_convert $new_subnet_mask
++ new_subnet_arg="$cidr"
+ fi
+ if [ x$old_subnet_mask != x ]; then
+- old_subnet_arg="netmask $old_subnet_mask"
+-fi
+-if [ x$alias_subnet_mask != x ]; then
+- alias_subnet_arg="netmask $alias_subnet_mask"
++ cidr_convert $old_subnet_mask
++ old_subnet_arg="$cidr"
+ fi
+
+ if [ x$reason = xMEDIUM ]; then
+@@ -92,17 +99,10 @@
+ if [ x$reason = xPREINIT ]; then
+ if [ x$alias_ip_address != x ]; then
+ # Bring down alias interface. Its routes will disappear too.
+- ifconfig $interface:0- inet 0
+- fi
+- if [ $relmajor -lt 2 ] || ( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] )
+- then
+- ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \
+- broadcast 255.255.255.255 up
+- # Add route to make broadcast work. Do not omit netmask.
+- route add default dev $interface netmask 0.0.0.0
+- else
+- ifconfig $interface 0 up
++ ip link set $interface down
++ ip addr del $alias_ip_address dev $interface
+ fi
++ ip link set $interface up
+
+ # We need to give the kernel some time to get the interface up.
+ sleep 1
+@@ -125,83 +125,51 @@
+ fi
+ fi
+
+- if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
+- [ x$alias_ip_address != x$old_ip_address ]; then
+- # Possible new alias. Remove old alias.
+- ifconfig $interface:0- inet 0
+- fi
+ if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ];
then
+- # IP address changed. Bringing down the interface will delete all routes,
++ # IP address changed. Bring down the interface, delete all routes,
+ # and clear the ARP cache.
+- ifconfig $interface inet 0 down
+-
++ ip link set $interface down
++ ip addr flush dev $interface
+ fi
+ if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
+ [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
+
+- ifconfig $interface inet $new_ip_address $new_subnet_arg \
+- $new_broadcast_arg
++ ip link set $interface up
++ ip addr add $new_ip_address/$new_subnet_arg $new_broadcast_arg \
++ label $interface dev $interface
+ # Add a network route to the computed network address.
+- if [ $relmajor -lt 2 ] || \
+- ( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] ); then
+- route add -net $new_network_number $new_subnet_arg dev $interface
+- fi
+ for router in $new_routers; do
+- route add default gw $router
++ ip route add default via $router
+ done
+ fi
+- if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x
];
+- then
+- ifconfig $interface:0- inet 0
+- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+- route add -host $alias_ip_address $interface:0
+- fi
+ make_resolv_conf
+ exit_with_hooks 0
+ fi
+
+ if [ x$reason = xEXPIRE ] || [ x$reason = xFAIL ] || [ x$reason = xRELEASE ] \
+ || [ x$reason = xSTOP ]; then
+- if [ x$alias_ip_address != x ]; then
+- # Turn off alias interface.
+- ifconfig $interface:0- inet 0
+- fi
+ if [ x$old_ip_address != x ]; then
+- # Shut down interface, which will delete routes and clear arp cache.
+- ifconfig $interface inet 0 down
+- fi
+- if [ x$alias_ip_address != x ]; then
+- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+- route add -host $alias_ip_address $interface:0
++ # Shut down interface, delete routes, and clear arp cache.
++ ip link set $interface down
++ ip addr flush dev $interface
+ fi
+ exit_with_hooks 0
+ fi
+
+ if [ x$reason = xTIMEOUT ]; then
+- if [ x$alias_ip_address != x ]; then
+- ifconfig $interface:0- inet 0
+- fi
+- ifconfig $interface inet $new_ip_address $new_subnet_arg \
+- $new_broadcast_arg
++ ip link set $interface up
++ ip addr set $new_ip_address/$new_subnet_arg $new_broadcast_arg \
++ label $interface dev $interface
+ set $new_routers
+- ############## what is -w in ping?
+- if ping -q -c 1 $1; then
+- if [ x$new_ip_address != x$alias_ip_address ] && \
+- [ x$alias_ip_address != x ]; then
+- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+- route add -host $alias_ip_address dev $interface:0
+- fi
+- if [ $relmajor -lt 2 ] || \
+- ( [ $relmajor -eq 2 ] && [ $relminor -eq 0 ] ); then
+- route add -net $new_network_number
+- fi
+- for router in $new_routers; do
+- route add default gw $router
+- done
+- make_resolv_conf
+- exit_with_hooks 0
+- fi
+- ifconfig $interface inet 0 down
++
++ for router in $new_routers; do
++ ip route add default via $router
++ done
++
++ make_resolv_conf
++ exit_with_hooks 0
++ ip link set $interface down
++ ip addr flush dev $interface
+ exit_with_hooks 1
+ fi
+
--
http://linuxfromscratch.org/mailman/listinfo/patches
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page