mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
tools/hotplug: Fix dhcpd symlink removal in vif-nat
Copy temp files used to add/remove dhcpd configurations to avoid replacing potential symlinks. If dhcp.conf is a symlink pointing to dhcp.conf.real, using 'mv' creates a new file dhcp.conf where cp will actually modify dhcp.conf.real instead of replacing the symlink with a real file. Using 'cp' prevents some mistakes where the user will actually continue to modify dhcp.conf.real where it would not be the one used anymore. Signed-off-by: Diego Sueiro <diego.sueiro@arm.com> Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com> Acked-by: Wei Liu <wl@xen.org>
This commit is contained in:
1 parent
17f80e7fc1
commit
6d2f1ebccd
1 file changed
+9
-11
@@ -95,12 +95,11 @@ dhcparg_remove_entry()
|
||||
{
|
||||
local tmpfile=$(mktemp)
|
||||
sed -e "s/${dev} //" "$dhcpd_arg_file" >"$tmpfile"
|
||||
if diff "$tmpfile" "$dhcpd_arg_file" >/dev/null
|
||||
if ! diff "$tmpfile" "$dhcpd_arg_file" >/dev/null
|
||||
then
|
||||
rm "$tmpfile"
|
||||
else
|
||||
mv "$tmpfile" "$dhcpd_arg_file"
|
||||
cp "$tmpfile" "$dhcpd_arg_file"
|
||||
fi
|
||||
rm "$tmpfile"
|
||||
}
|
||||
|
||||
dhcparg_add_entry()
|
||||
@@ -109,11 +108,11 @@ dhcparg_add_entry()
|
||||
local tmpfile=$(mktemp)
|
||||
# handle Red Hat, SUSE, and Debian styles, with or without quotes
|
||||
sed -e 's/^DHCPDARGS="*\([^"]*\)"*/DHCPDARGS="\1'"${dev} "'"/' \
|
||||
"$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
|
||||
"$dhcpd_arg_file" >"$tmpfile" && cp "$tmpfile" "$dhcpd_arg_file"
|
||||
sed -e 's/^DHCPD_INTERFACE="*\([^"]*\)"*/DHCPD_INTERFACE="\1'"${dev} "'"/' \
|
||||
"$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
|
||||
"$dhcpd_arg_file" >"$tmpfile" && cp "$tmpfile" "$dhcpd_arg_file"
|
||||
sed -e 's/^INTERFACES="*\([^"]*\)"*/INTERFACES="\1'"${dev} "'"/' \
|
||||
"$dhcpd_arg_file" >"$tmpfile" && mv "$tmpfile" "$dhcpd_arg_file"
|
||||
"$dhcpd_arg_file" >"$tmpfile" && cp "$tmpfile" "$dhcpd_arg_file"
|
||||
rm -f "$tmpfile"
|
||||
}
|
||||
|
||||
@@ -121,12 +120,11 @@ dhcp_remove_entry()
|
||||
{
|
||||
local tmpfile=$(mktemp)
|
||||
grep -v "host $hostname" "$dhcpd_conf_file" >"$tmpfile"
|
||||
if diff "$tmpfile" "$dhcpd_conf_file" >/dev/null
|
||||
if ! diff "$tmpfile" "$dhcpd_conf_file" >/dev/null
|
||||
then
|
||||
rm "$tmpfile"
|
||||
else
|
||||
mv "$tmpfile" "$dhcpd_conf_file"
|
||||
cp "$tmpfile" "$dhcpd_conf_file"
|
||||
fi
|
||||
rm "$tmpfile"
|
||||
dhcparg_remove_entry
|
||||
}
|
||||
|
||||
|
||||