WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] network-nat: Fix NAT scripts.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] network-nat: Fix NAT scripts.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 24 Jan 2008 07:10:18 -0800
Delivery-date: Thu, 24 Jan 2008 07:11:47 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# 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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] network-nat: Fix NAT scripts., Xen patchbot-unstable <=