]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
network: dhcp before parsing specified dns through cmdline
authorHarald Hoyer <harald@redhat.com>
Wed, 29 Jun 2016 15:26:17 +0000 (17:26 +0200)
committerHarald Hoyer <harald@redhat.com>
Wed, 29 Jun 2016 15:26:17 +0000 (17:26 +0200)
I met a problem when passing kdump dns to dracut via "nameserver=x.x.x.x",
the dns I provided didn't appear in the "/etc/resolv.conf".

After some debugging, found that when setup dhcp DNS, in setup_interface()
and setup_interface6(), it has:
    echo "search $search $domain" > /tmp/net.$netif.resolv.conf

So if "$search $domain" isn't NULL(this is ture in my kdump environment),
the dns contents(that is, dns1, dns2, nameserver) in "ifup" before dhcp
will be discarded.

This patch addresses it by handling dhcp first. In fact this is also the
way the NetworkManager in 1st kernel works.

Signed-off-by: Xunlei Pang <xlpang@redhat.com>
cherry-pick of commit cf376023e6d0d4abd9816fa954bb917fc2557713

modules.d/40network/ifup.sh

index 37f51b9d2f956065419168486c9668cc53e7d4e5..19b7bbdc519e5a09d1cdb9fcd63db59ccd432763 100755 (executable)
@@ -350,16 +350,15 @@ fi
 ip=$(getarg ip)
 
 if [ -z "$ip" ]; then
-    for s in $(getargs nameserver); do
-        [ -n "$s" ] || continue
-        echo nameserver $s >> /tmp/net.$netif.resolv.conf
-    done
-
     if [ "$netroot" = "dhcp6" ]; then
         do_dhcp -6
     else
         do_dhcp -4
     fi
+    for s in $(getargs nameserver); do
+        [ -n "$s" ] || continue
+        echo nameserver $s >> /tmp/net.$netif.resolv.conf
+    done
 fi
 
 
@@ -386,17 +385,6 @@ for p in $(getargs ip=); do
     [ "$use_bridge" != 'true' ] && \
     [ "$use_vlan" != 'true' ] && continue
 
-    # setup nameserver
-    for s in "$dns1" "$dns2" $(getargs nameserver); do
-        [ -n "$s" ] || continue
-        echo nameserver $s >> /tmp/net.$netif.resolv.conf
-    done
-
-    # Store config for later use
-    for i in ip srv gw mask hostname macaddr dns1 dns2 mtu; do
-        eval '[ "$'$i'" ] && echo '$i'="$'$i'"'
-    done > /tmp/net.$netif.override
-
     for autoopt in $(str_replace "$autoconf" "," " "); do
         case $autoopt in
             dhcp|on|any)
@@ -412,6 +400,17 @@ for p in $(getargs ip=); do
     done
     ret=$?
 
+    # setup nameserver
+    for s in "$dns1" "$dns2" $(getargs nameserver); do
+        [ -n "$s" ] || continue
+        echo nameserver $s >> /tmp/net.$netif.resolv.conf
+    done
+
+    # Store config for later use
+    for i in ip srv gw mask hostname macaddr dns1 dns2 mtu; do
+        eval '[ "$'$i'" ] && echo '$i'="$'$i'"'
+    done > /tmp/net.$netif.override
+
     if [ $ret -eq 0 ]; then
         > /tmp/net.${netif}.up