[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] network-nat: Fix NAT scripts.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1201185473 0 # Node ID 86c32269ba604f968c7abe5cf7360d7c00902ff8 # Parent 1190d50ce18c5a8237fc592d59cff8396bc435c5 network-nat: Fix NAT scripts. Signed-off-by: Dan Magenheimer <dan.magenheimer@xxxxxxxxxx> --- tools/examples/network-nat | 12 ++++++++-- tools/examples/vif-nat | 40 ++++++++++++++++++++++++++++++++--- tools/examples/xen-network-common.sh | 5 ++++ 3 files changed, 52 insertions(+), 5 deletions(-) diff -r 1190d50ce18c -r 86c32269ba60 tools/examples/network-nat --- a/tools/examples/network-nat Thu Jan 24 14:35:52 2008 +0000 +++ b/tools/examples/network-nat Thu Jan 24 14:37:53 2008 +0000 @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/bash -x #============================================================================ # Default Xen network start/stop script when using NAT. # Xend calls a network script when it starts. @@ -27,7 +27,15 @@ netdev=${netdev:-eth0} netdev=${netdev:-eth0} # antispoofing not yet implemented antispoof=${antispoof:-no} -dhcp=${dhcp:-no} + +# turn on dhcp feature by default if dhcpd is installed +if [ -f /etc/dhcpd.conf ] +then + dhcp=${dhcp:-yes} +else + dhcp=${dhcp:-no} +fi + if [ "$dhcp" != 'no' ] then diff -r 1190d50ce18c -r 86c32269ba60 tools/examples/vif-nat --- a/tools/examples/vif-nat Thu Jan 24 14:35:52 2008 +0000 +++ b/tools/examples/vif-nat Thu Jan 24 14:37:53 2008 +0000 @@ -28,15 +28,22 @@ dir=$(dirname "$0") dir=$(dirname "$0") . "$dir/vif-common.sh" -dhcp=${dhcp:-no} +# turn on dhcp feature by default if dhcpd is installed +if [ -f /etc/dhcpd.conf ] +then + dhcp=${dhcp:-yes} +else + dhcp=${dhcp:-no} +fi if [ "$dhcp" != 'no' ] then dhcpd_conf_file=$(find_dhcpd_conf_file) dhcpd_init_file=$(find_dhcpd_init_file) - if [ -z "$dhcpd_conf_file" ] || [ -z "$dhcpd_init_file" ] + dhcpd_arg_file=$(find_dhcpd_arg_file) + if [ -z "$dhcpd_conf_file" ] || [ -z "$dhcpd_init_file" ] || [ -z "$dhcpd_arg_file" ] then - echo 'Failed to find dhcpd configuration or init file.' >&2 + echo 'Failed to find dhcpd configuration or init or args file.' >&2 exit 1 fi fi @@ -88,6 +95,31 @@ then hostname="$hostname-$vifid" fi +dhcparg_remove_entry() +{ + local tmpfile=$(mktemp) + sed -e "s/$vif //" "$dhcpd_arg_file" >"$tmpfile" + if diff "$tmpfile" "$dhcpd_arg_file" >/dev/null + then + rm "$tmpfile" + else + mv "$tmpfile" "$dhcpd_arg_file" + fi +} + +dhcparg_add_entry() +{ + dhcparg_remove_entry + local tmpfile=$(mktemp) + # handle Red Hat, SUSE, and Debian styles, with or without quotes + sed -e 's/^DHCPDARGS="*\([^"]*\)"*/DHCPDARGS="\1'"$vif "'"/' \ + "$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file" + sed -e 's/^DHCPD_INTERFACE="*\([^"]*\)"*/DHCPD_INTERFACE="\1'"$vif "'"/' \ + "$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file" + sed -e 's/^INTERFACES="*\([^"]*\)"*/INTERFACES="\1'"$vif "'"/' \ + "$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file" + rm -f "$tmpfile" +} dhcp_remove_entry() { @@ -99,6 +131,7 @@ dhcp_remove_entry() else mv "$tmpfile" "$dhcpd_conf_file" fi + dhcparg_remove_entry } @@ -109,6 +142,7 @@ dhcp_up() mac=$(xenstore_read "$XENBUS_PATH/mac") echo >>"$dhcpd_conf_file" \ "host $hostname { hardware ethernet $mac; fixed-address $vif_ip; option routers $router_ip; option host-name \"$hostname\"; }" + dhcparg_add_entry release_lock "vif-nat-dhcp" "$dhcpd_init_file" restart || true } diff -r 1190d50ce18c -r 86c32269ba60 tools/examples/xen-network-common.sh --- a/tools/examples/xen-network-common.sh Thu Jan 24 14:35:52 2008 +0000 +++ b/tools/examples/xen-network-common.sh Thu Jan 24 14:37:53 2008 +0000 @@ -72,6 +72,11 @@ find_dhcpd_init_file() find_dhcpd_init_file() { first_file -x /etc/init.d/{dhcp3-server,dhcp,dhcpd} +} + +find_dhcpd_arg_file() +{ + first_file -f /etc/sysconfig/dhcpd /etc/defaults/dhcp } # configure interfaces which act as pure bridge ports: _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |