network-nat: Fix NAT scripts.

Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
This commit is contained in:
Keir Fraser committed 2008-01-24 14:37:53 +00:00
1 parent 26bf63427f
commit 9577157dc4
3 files changed
+52 -5

No files matched your search

+10 -2
View File
@@ -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 @@ evalVariables "$@"
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
+37 -3
View File
@@ -28,15 +28,22 @@
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
}
+5
View File
@@ -74,6 +74,11 @@ 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:
setup_bridge_port() {
local dev="$1"
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.