aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sysconfig/network-scripts/network-functions35
1 files changed, 34 insertions, 1 deletions
diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions
index 7c34370c..1e883221 100644
--- a/sysconfig/network-scripts/network-functions
+++ b/sysconfig/network-scripts/network-functions
@@ -219,7 +219,11 @@ set_hostname ()
hostname $1
if ! grep search /etc/resolv.conf >/dev/null 2>&1; then
domain=`echo $1 | sed 's/^[^\.]*\.//'`
- echo "search $domain" >> /etc/resolv.conf
+ rsctmp=`mktemp /tmp/XXXXXX`;
+ /bin/cp -fp /etc/resolv.conf /tmp/$rsctmp
+ echo "search $domain" >> /tmp/$rsctmp
+ change_resolv_conf /tmp/$rsctmp
+ /bin/rm -f /tmp/$rsctmp
fi
}
@@ -352,3 +356,32 @@ configure_ccwgroup_device ()
echo "$PORTNAME" > $SYSDIR/portname
[ -e $SYSDIR/online ] && echo 1 > $SYSDIR/online
}
+
+# Invoke this when /etc/resolv.conf has changed:
+# (see bugzilla #125712)
+change_resolv_conf ()
+{
+ s='';
+ if [ $# -gt 1 ]; then
+ let n_args=$#;
+ while [ $n_args -gt 0 ];
+ do
+ s="$s$1";
+ shift;
+ if [ $# -gt 0 ]; then
+ s="$s\n";
+ fi;
+ let n_args=n_args-1;
+ done;
+ elif [ $# -eq 1 ]; then
+ s=`/bin/cat $1`;
+ fi;
+ (echo -e "$s" > /etc/resolv.conf;) >/dev/null 2>&1;
+ r=$?
+ if [ $r -eq 0 ]; then
+ /usr/bin/logger -p local7.notice -t NET "$0 : updated /etc/resolv.conf";
+ /sbin/service nscd condrestart >/dev/null 2>&1;
+ return $?;
+ fi;
+ return $r;
+}