Bug 85841 - ifup-post removes 'search' domains from /etc/resolv.conf
Summary: ifup-post removes 'search' domains from /etc/resolv.conf
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: initscripts
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Bill Nottingham
QA Contact: Brock Organ
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2003-03-09 03:37 UTC by Enrique Perez-Terron
Modified: 2014-03-17 02:35 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2005-04-28 19:03:41 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Enrique Perez-Terron 2003-03-09 03:37:17 UTC
Description of problem:
ifup-post does not keep "search" values if DOMAIN is set

Version-Release number of selected component (if applicable):
7.10-1

How reproducible:
Follow the steps below

Steps to Reproduce:
1.Add the following lines to /etc/resolv.conf (save a copy first, to restore)
search tomato.place
search juicy.fruit
2. Add the following lines to /etc/sysconfig/netowrk-scripts/ifcfg-eth0
DOMAIN=mydomain.lan
DNS1=1.1.1.1
DNS2=2.2.2.2
3. Execute the following commands as root
cd /etc/sysconfig/network-scripts
./ifdown eth0
./ifup eth0
cat /etc/resolv.conf
    
Actual results:
...
search mydomain.lan

Expected results:
...
search mydomain.lan tomato.place juicy.fruit

Additional info:
The reason is the construct echo blah | while read var; do GETLOST=$var; done
where the variable GETLOST is set only in the subshell at the end of the pipe.
In the parent process, the variable is not changed. Notice that there are
two nested levels of this construct.

Comment 1 Enrique Perez-Terron 2003-03-09 03:48:07 UTC
I suggest the following patch. The inner level of "echo | while read" is
removed. The outer is kept, but the use of the variable is moved inside 
the subshell by adding a pair of parentheses, i.e.

   echo | (while read...done; echo $VARIALBE >> file)

--- /etc/sysconfig/network-scripts/ifup-post    2003-03-09 04:09:09.000000000 +0100
+++ /usr/src/redhat/BUILD/initscripts-7.10/sysconfig/network-scripts/ifup-post 
2003-02-20 18:14:53.000000000 +0100
@@ -34,7 +34,7 @@
     current_replacement="$DNS1"
     next_replacement="$DNS2"
     search=
-    (cat /etc/resolv.conf ; echo EOF ; echo EOF) | (while read answer ; do
+    (cat /etc/resolv.conf ; echo EOF ; echo EOF) | while read answer ; do
        case $answer in
            nameserver*|EOF)
                if [ -n "$current_replacement" ] ; then
@@ -53,7 +53,9 @@
                ;;
            domain*|search*)
                if [ -n "$DOMAIN" ]; then
-                   search=`set $answer; shift; echo "$search $*"`
+                   echo "$answer" | while read key value ; do
+                       search="$search $value"
+                   done
                else
                    echo "$answer" >> $tr
                fi
@@ -65,7 +67,7 @@
     done
     if [ -n "$DOMAIN" ]; then
         echo "search $DOMAIN $search" >> $tr
-    fi)
+    fi

     # backup resolv.conf
     cp -af /etc/resolv.conf /etc/resolv.conf.save


Comment 2 Bill Nottingham 2005-04-28 19:03:41 UTC
This is fixed in current initscripts.


Note You need to log in before you can comment on or make changes to this bug.