[arch-projects] [PATCH 7/7] Use iproute2 tools instead of net-tools

Dave Reisner d at falconindy.com
Sat Mar 26 16:32:03 EDT 2011


At this point, coreutils should be providing /bin/hostname instead of
net-tools. If users wish to set an NIS/YS domain name, they should use
core/yptools.

Signed-off-by: Dave Reisner <d at falconindy.com>
---
 PKGBUILD   |    2 +-
 network    |   45 ++++++++++++++++-----------------------------
 rc.conf    |   17 ++++++++++-------
 rc.sysinit |   10 ++--------
 4 files changed, 29 insertions(+), 45 deletions(-)

diff --git a/PKGBUILD b/PKGBUILD
index 6f862e8..206f41b 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -10,7 +10,7 @@ conflicts=('initscripts')
 provides=('initscripts=9999')
 backup=(etc/inittab etc/rc.conf etc/rc.local etc/rc.local.shutdown)
 depends=('glibc' 'bash' 'grep' 'coreutils' 'udev>=139-1'
-         'net-tools' 'ncurses' 'kbd' 'findutils' 'sysvinit')
+         'iproute2' 'ncurses' 'kbd' 'findutils' 'sysvinit')
 optdepends=('bridge-utils: Network bridging support'
             'dhcpcd: DHCP network configuration'
             'ifenslave: Networking bonding support'
diff --git a/network b/network
index 27df68a..aeddef2 100755
--- a/network
+++ b/network
@@ -8,31 +8,25 @@ for s in wireless bonding bridges dhcpcd; do
 done
 
 ifup() {
-	local ifcfg=${!1}
+	local ifname ifcfg=${!1}
 
 	if [[ ! $1 ]]; then
 		echo "usage: $0 ifup <interface_name>"
 		return 1
 	fi
 
-	# Get the name of the interface from the first token in the string
-	if [[ $ifcfg = dhcp ]]; then
-		ifname=$1
-	else
-		ifname=${ifcfg%% *}
-	fi
-
-	/sbin/ifconfig $ifname up
+	# Split the config string into interface name and config
+	read -r ifname ifcfg <<< "$ifcfg"
 
+	/usr/sbin/ip link set up dev $ifname || return 1
 	wi_up $1 || return 1
 
-	if [[ $ifcfg = dhcp ]]; then
+	if [[ "$ifcfg" = dhcp ]]; then
 		# remove the .pid file if it exists
-		/bin/rm -f /var/run/dhcpcd-${1}.pid >/dev/null 2>&1
-		/bin/rm -f /var/run/dhcpcd-${1}.cache >/dev/null 2>&1
-		/sbin/dhcpcd $DHCPCD_ARGS ${1}
+		/bin/rm -f /var/run/dhcpcd-$ifname.{pid,cache} >/dev/null 2>&1
+		/sbin/dhcpcd $DHCPCD_ARGS $ifname
 	else
-		/sbin/ifconfig $ifcfg
+		/usr/sbin/ip addr add $ifcfg dev $ifname
 	fi
 }
 
@@ -42,8 +36,7 @@ wi_up() {
 	[[ ${!iwcfg} ]] || return 0
 
 	/usr/sbin/iwconfig ${!iwcfg}
-	[[ $WIRELESS_TIMEOUT ]] || WIRELESS_TIMEOUT=2
-	sleep $WIRELESS_TIMEOUT
+	sleep ${WIRELESS_TIMEOUT:-2}
 
 	bssid=$(iwgetid $1 -ra)
 	if [[ $bssid = 00:00:00:00:00:00 ]]; then
@@ -64,8 +57,10 @@ ifdown() {
 	if [[ $ifcfg = dhcp && -f /var/run/dhcpcd-${1}.pid ]]; then
 		/sbin/dhcpcd -k ${1} >/dev/null 2>&1 
 	fi
+
 	# Always bring the interface itself down
-	/sbin/ifconfig ${1} down >/dev/null 2>&1
+	/usr/sbin/ip addr flush dev $1
+	/usr/sbin/ip link set down dev $1
 }
 
 iflist() {
@@ -87,11 +82,7 @@ rtup() {
 		return 1
 	fi
 
-	if [[ $routecfg =~ :: ]]; then
-		/sbin/route -A inet6 add $routecfg
-	else
-		/sbin/route add $routecfg
-	fi
+	/usr/sbin/ip route add $routecfg
 }
 
 rtdown() {
@@ -102,11 +93,7 @@ rtdown() {
 		return 1
 	fi
 
-	if [[ $routecfg =~ :: ]]; then
-		/sbin/route -A inet6 del $routecfg
-	else
-		/sbin/route del $routecfg
-	fi
+	/usr/sbin/ip route del $routecfg
 }
 
 rtlist() {
@@ -144,8 +131,8 @@ bridge_up() {
 	for br in "${BRIDGE_INTERFACES[@]}"; do
 		if [[ "$br" = ${br#!} ]]; then
 			# if the bridge already exists, remove it
-			if [[ $(/sbin/ifconfig $br 2>/dev/null) ]]; then
-				/sbin/ifconfig $br down
+			if [[ -d /sys/class/net/$br ]]; then
+				ifdown $br
 				/usr/sbin/brctl delbr $br
 			fi
 			/usr/sbin/brctl addbr $br
diff --git a/rc.conf b/rc.conf
index d2b0517..d96bea6 100644
--- a/rc.conf
+++ b/rc.conf
@@ -59,29 +59,32 @@ USELVM="no"
 #
 HOSTNAME="myhost"
 
-# Use 'ifconfig -a' or 'ls /sys/class/net/' to see all available interfaces.
+# Use 'ip addr' or 'ls /sys/class/net/' to see all available interfaces.
 #
 # Interfaces to start at boot-up (in this order)
 # Declare each interface then list in INTERFACES
 #   - prefix an entry in INTERFACES with a ! to disable it
 #   - no hyphens in your interface names - Bash doesn't like it
-# 
+#
 # DHCP:     Set your interface to "dhcp" (eth0="dhcp")
 # Wireless: See network profiles below
 #
 
-#Static IP example
-#eth0="eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255"
-eth0="dhcp"
+# Static IP example
+#eth0="eth0 192.168.0.2/24"
+
+# Dynamic IP example
+eth0="eth0 dhcp"
+
 INTERFACES=(eth0)
 
 # Routes to start at boot-up (in this order)
 # Declare each route then list in ROUTES
 #   - prefix an entry in ROUTES with a ! to disable it
 #
-gateway="default gw 192.168.0.1"
+gateway="default via 192.168.0.1"
 ROUTES=(!gateway)
- 
+
 # Setting this to "yes" will skip network shutdown.
 # This is required if your root device is on NFS.
 NETWORK_PERSIST="no"
diff --git a/rc.sysinit b/rc.sysinit
index bf2f83e..08a0768 100755
--- a/rc.sysinit
+++ b/rc.sysinit
@@ -111,8 +111,8 @@ fi
 run_hook sysinit_udevsettled
 
 # bring up the loopback interface
-[[ -d /sys/class/net/lo ]] && \
-    status "Bringing up loopback interface" /sbin/ifconfig lo 127.0.0.1 up
+[[ -d /sys/class/net/lo ]] &&
+		status "Bringing up loopback interface" /usr/sbin/ip link set up dev lo
 
 # SoftRAID devices detection
 if [[ "$USEMDADM" = yes && -x /sbin/mdadm ]]; then
@@ -351,12 +351,6 @@ if [[ $HOSTNAME ]]; then
 	status "Setting Hostname: $HOSTNAME" /bin/hostname "$HOSTNAME"
 fi
 
-# Set the NIS domain name, if necessary
-[[ -f /etc/conf.d/nisdomainname ]] && . /etc/conf.d/nisdomainname
-if [[ $NISDOMAINNAME ]]; then
-	status "Setting NIS Domain Name: $NISDOMAINNAME" /bin/nisdomainname "$NISDOMAINNAME"
-fi
-
 status "Updating Module Dependencies" /sbin/depmod -A
 
 # Flush old locale settings
-- 
1.7.4.1



More information about the arch-projects mailing list