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