aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Vas Dias <jvdias@redhat.com>2004-07-30 20:21:41 +0000
committerJason Vas Dias <jvdias@redhat.com>2004-07-30 20:21:41 +0000
commit9c17ad3d1c05a2b1503493e4fd2ec59b6681911a (patch)
tree11e7339ca82562634cad361a0c515af7f09a4cea
parent136df71101699b74b33cb02f42cb26a299a03df1 (diff)
downloadinitscripts-9c17ad3d1c05a2b1503493e4fd2ec59b6681911a.tar
initscripts-9c17ad3d1c05a2b1503493e4fd2ec59b6681911a.tar.gz
initscripts-9c17ad3d1c05a2b1503493e4fd2ec59b6681911a.tar.bz2
initscripts-9c17ad3d1c05a2b1503493e4fd2ec59b6681911a.tar.xz
initscripts-9c17ad3d1c05a2b1503493e4fd2ec59b6681911a.zip
fix for bug 125712: added change_resolv_conf function to network-functions; made ipup-post and ipdown-post invoke it
-rw-r--r--initscripts.spec7
-rwxr-xr-xsysconfig/network-scripts/ifdown-post2
-rwxr-xr-xsysconfig/network-scripts/ifup-post2
-rw-r--r--sysconfig/network-scripts/network-functions36
4 files changed, 43 insertions, 4 deletions
diff --git a/initscripts.spec b/initscripts.spec
index 1d78d719..64ef3442 100644
--- a/initscripts.spec
+++ b/initscripts.spec
@@ -1,6 +1,6 @@
Summary: The inittab file and the /etc/init.d scripts.
Name: initscripts
-Version: 7.59
+Version: 7.60
License: GPL
Group: System Environment/Base
Release: 1
@@ -249,6 +249,11 @@ rm -rf $RPM_BUILD_ROOT
%ghost %attr(0664,root,utmp) /var/run/utmp
%changelog
+* Fri Jul 30 2004 Jason Vas Dias <jvdias@redhat.com> 7.60-1
+- for bug 125712:
+- added 'change_resolv_conf' function to network-functions ;
+- made ifup-post and if-down post invoke it to change resolv.conf
+
* Fri Jul 2 2004 Bill Nottingham <notting@redhat.com> 7.59-1
- set context on ICE directory after making it (#127099, <concert@europe.com>)
- don't mount GFS filesystems in rc.sysinit
diff --git a/sysconfig/network-scripts/ifdown-post b/sysconfig/network-scripts/ifdown-post
index 6c244ca1..b88e5e3b 100755
--- a/sysconfig/network-scripts/ifdown-post
+++ b/sysconfig/network-scripts/ifdown-post
@@ -10,7 +10,7 @@ source_config
if [ "${DEVICETYPE}" = "ppp" -o "${DEVICETYPE}" = "ippp" ]; then
if [ -f /etc/resolv.conf.save ]; then
- cat /etc/resolv.conf.save > /etc/resolv.conf
+ change_resolv_conf /etc/resolv.conf.save
rm -f /etc/resolv.conf.save
fi
if [ -f /etc/ppp/peers/$DEVICE ] ; then
diff --git a/sysconfig/network-scripts/ifup-post b/sysconfig/network-scripts/ifup-post
index 401d1e8c..fc91b55c 100755
--- a/sysconfig/network-scripts/ifup-post
+++ b/sysconfig/network-scripts/ifup-post
@@ -67,7 +67,7 @@ if [ "$PEERDNS" != "no" -o -n "$RESOLV_MODS" -a "$RESOLV_MODS" != "no" ]; then
# but set umask in case it doesn't exist!
oldumask=`umask`
umask 022
- cat $tr > /etc/resolv.conf
+ change_resolv_conf $tr
rm -f $tr
umask $oldumask
fi
diff --git a/sysconfig/network-scripts/network-functions b/sysconfig/network-scripts/network-functions
index 7c34370c..9b495b9a 100644
--- a/sysconfig/network-scripts/network-functions
+++ b/sysconfig/network-scripts/network-functions
@@ -219,7 +219,10 @@ 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
+ /bin/cp -fp /etc/resolv.conf /tmp/set_hostname_resolv.conf
+ echo "search $domain" >> /tmp/set_hostname_resolv.conf
+ change_resolv_conf /tmp/set_hostname_resolv.conf
+ /bin/rm -f /tmp/set_hostname_resolv.conf
fi
}
@@ -352,3 +355,34 @@ 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;
+ /bin/chmod +w /etc/resolv.conf
+ (echo -e "$s" > /etc/resolv.conf;) >/dev/null 2>&1;
+ /bin/chmod a-w /etc/resolv.conf
+ r=$?
+ if [ $r -eq 0 ]; then
+ /usr/bin/logger -p local0.notice -t NET "$0 : updated /etc/resolv.conf";
+ /sbin/service nscd condrestart >/dev/null 2>&1;
+ return $?;
+ fi;
+ return $r;
+}