SVN: rc-scripts/trunk: doc/net-scripts.txt sysconfig/network sysconfig/network-scripts/functions.net...

jajcus jajcus at pld-linux.org
Sun May 2 14:16:33 CEST 2010


Author: jajcus
Date: Sun May  2 14:16:32 2010
New Revision: 11364

Modified:
   rc-scripts/trunk/doc/net-scripts.txt
   rc-scripts/trunk/sysconfig/network
   rc-scripts/trunk/sysconfig/network-scripts/functions.network
   rc-scripts/trunk/sysconfig/network-scripts/ifdown
   rc-scripts/trunk/sysconfig/network-scripts/ifup
   rc-scripts/trunk/sysconfig/network-scripts/ifup-routes
Log:
- support for zeroconf networking (based on information from
  http://avahi.org/wiki/AvahiAutoipd#Routes)


Modified: rc-scripts/trunk/doc/net-scripts.txt
==============================================================================
--- rc-scripts/trunk/doc/net-scripts.txt	(original)
+++ rc-scripts/trunk/doc/net-scripts.txt	Sun May  2 14:16:32 2010
@@ -81,7 +81,7 @@
     GATEWAY=
     ONBOOT=yes|no
     USERCTL=yes|no
-    BOOTPROTO=none|bootp|dhcp|pump
+    BOOTPROTO=none|bootp|dhcp|pump|zeroconf|auto
 
   If BOOTPROTO is not "none", then the only other item that
   must be set is the DEVICE item; all the rest will be determined

Modified: rc-scripts/trunk/sysconfig/network
==============================================================================
--- rc-scripts/trunk/sysconfig/network	(original)
+++ rc-scripts/trunk/sysconfig/network	Sun May  2 14:16:32 2010
@@ -62,3 +62,8 @@
 # enable globally for all network interfaces.
 # bring up from hotplug (udev for example) (default to no)
 #HOTPLUG=yes
+
+# set up Zeroconf routes for communication via/with IPv4ALL link-local
+# addresses
+ZEROCONF=yes
+

Modified: rc-scripts/trunk/sysconfig/network-scripts/functions.network
==============================================================================
--- rc-scripts/trunk/sysconfig/network-scripts/functions.network	(original)
+++ rc-scripts/trunk/sysconfig/network-scripts/functions.network	Sun May  2 14:16:32 2010
@@ -89,7 +89,9 @@
 	fi
 
 	if [ -z "$DHCP_CLIENT" ]; then
-		if [ -x /sbin/dhcpcd ]; then
+		if [ "$BOOTPROTO" = "zeroconf" -a -x /usr/sbin/avahi-autoipd ]; then
+			DHCP_CLIENT=/usr/sbin/avahi-autoipd
+		elif [ -x /sbin/dhcpcd ]; then
 			DHCP_CLIENT=/sbin/dhcpcd
 		elif [ -x /sbin/dhclient ]; then
 			DHCP_CLIENT=/sbin/dhclient
@@ -97,6 +99,8 @@
 			DHCP_CLIENT=/sbin/dhcpxd
 		elif [ -x /sbin/pump ]; then
 			DHCP_CLIENT=/sbin/pump
+		elif [ "$BOOTPROTO" = "auto" -a -x /usr/sbin/avahi-autoipd ]; then
+			DHCP_CLIENT=/usr/sbin/avahi-autoipd
 		else
 			nls "Can't find a DHCP client."
 			exit 1

Modified: rc-scripts/trunk/sysconfig/network-scripts/ifdown
==============================================================================
--- rc-scripts/trunk/sysconfig/network-scripts/ifdown	(original)
+++ rc-scripts/trunk/sysconfig/network-scripts/ifdown	Sun May  2 14:16:32 2010
@@ -95,6 +95,10 @@
 				fi
 			fi
 			;;
+		  avahi-autoipd)
+			$DHCP_CLIENT -k ${DEVICE}
+			RESULT=$?
+			;;
 		esac
 	fi
 fi

Modified: rc-scripts/trunk/sysconfig/network-scripts/ifup
==============================================================================
--- rc-scripts/trunk/sysconfig/network-scripts/ifup	(original)
+++ rc-scripts/trunk/sysconfig/network-scripts/ifup	Sun May  2 14:16:32 2010
@@ -156,6 +156,9 @@
 				# Can't specify a host with dhclient ?
 				DHCP_ARGS="$DEVICE"
 				;;
+			  avahi-autoipd)
+				DHCP_ARGS="-D $DEVICE"
+				;;
 			esac
 		fi
 		DHCP_ARGS="$DHCP_OPTIONS $DHCP_ARGS"

Modified: rc-scripts/trunk/sysconfig/network-scripts/ifup-routes
==============================================================================
--- rc-scripts/trunk/sysconfig/network-scripts/ifup-routes	(original)
+++ rc-scripts/trunk/sysconfig/network-scripts/ifup-routes	Sun May  2 14:16:32 2010
@@ -22,3 +22,29 @@
 	fi
 	/sbin/ip route add $args dev $REALDEVICE
 done
+
+
+# based on information from http://avahi.org/wiki/AvahiAutoipd#Routes
+if is_yes "$ZEROCONF" && ! /sbin/ip link show dev $REALDEVICE | grep -q POINTOPOINT ; then
+	# metric based on device ifindex, so the same route may be added to
+	# multiple devices. Big, so it won't conflict with anything else.
+	if [ -f /sys/class/net/$REALDEVICE/ifindex ] ; then
+		metric="$(cat /sys/class/net/$REALDEVICE/ifindex)"
+		metric=$(($metric + 1000))
+	else
+		metric=1000
+	fi
+
+	# default route in default table, so it won't override default
+	# route set by other means
+	/sbin/ip route add default metric $metric dev $REALDEVICE table default
+
+	# add 169.254.0.0/16 route if not already present on the device
+	current=$(/sbin/ip route show 169.254.0.0/16 dev $REALDEVICE)
+	if [ -z "$current" ] ; then
+		/sbin/ip route add 169.254.0.0/16 metric $metric dev $REALDEVICE
+	fi
+
+	unset metric
+	unset current
+fi


More information about the pld-cvs-commit mailing list