All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH] connman: get the correct network interface name from dmesg during NFS booting
Date: Mon, 10 Oct 2016 23:05:25 +0530	[thread overview]
Message-ID: <1476120925-26574-1-git-send-email-jkrishnanjanappa@mvista.com> (raw)

Following are the drawbacks with the current logic:
1. If ip=dhcp in the boot command line, then the
current code makes connman to ignore "eth0" network interface
from managing internet connections. This can cause NFS boot
failure, if the network interface used for NFS booting 
is other than "eth0".

2. If ip=bootp in the boot command line, then none of the
network interfaces are ignored. This makes connman to manage
internet connections on every active network interfaces
(including the network interface used for NFS booting), resulting
hang during NFS boot.

This patch finds the network interface used for NFS booting via dmesg.
It searches for "device=" string from dmesg output and finds
name of network interface used for NFS. The "device=" string
is printed from dmesg, if IPCONFIG_SILENT macro is disabled
in the kernel, and this macro is disabled by default.

If "device=" string is not found, then falls back to earlier logic.
The earlier logic of detecting NFS network interface is retained, as
we cannot determine the exact network interface name used during
NFS bootup.

Signed-off-by: Jagadeesh Krishnanjanappa <jkrishnanjanappa@mvista.com>
---
 meta/recipes-connectivity/connman/connman/connman | 35 +++++++++++++----------
 1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/meta/recipes-connectivity/connman/connman/connman b/meta/recipes-connectivity/connman/connman/connman
index c64fa0d..aae2ca6 100644
--- a/meta/recipes-connectivity/connman/connman/connman
+++ b/meta/recipes-connectivity/connman/connman/connman
@@ -29,23 +29,28 @@ done
 do_start() {
 	EXTRA_PARAM=""
 	if test $nfsroot -eq 1 ; then
-	    NET_DEVS=`cat /proc/net/dev | sed -ne 's/^\([a-zA-Z0-9 ]*\):.*$/\1/p'`
-	    NET_ADDR=`cat /proc/cmdline | sed -ne 's/^.*ip=\([^ :]*\).*$/\1/p'`
+	    ethn_from_dmesg=`dmesg | grep "device="| sed "s|\(.*\)device=\(.*\), hwaddr=\(.*\)|\2|g"`
+	    if [ ! -z "$ethn_from_dmesg" ]; then
+		EXTRA_PARAM="-I $ethn_from_dmesg"
+	    else
+		NET_DEVS=`cat /proc/net/dev | sed -ne 's/^\([a-zA-Z0-9 ]*\):.*$/\1/p'`
+		NET_ADDR=`cat /proc/cmdline | sed -ne 's/^.*ip=\([^ :]*\).*$/\1/p'`
 
-	    if [ ! -z "$NET_ADDR" ]; then
-		if [ "$NET_ADDR" = dhcp ]; then
-		    ethn=`ifconfig | grep "^eth" | sed -e "s/\(eth[0-9]\)\(.*\)/\1/"`
-		    if [ ! -z "$ethn" ]; then
-			EXTRA_PARAM="-I $ethn"
-		    fi
-		else
-		    for i in $NET_DEVS; do
-			ADDR=`ifconfig $i | sed 's/addr://g' | sed -ne 's/^.*inet \([0-9.]*\) .*$/\1/p'`
-			if [ "$NET_ADDR" = "$ADDR" ]; then
-			    EXTRA_PARAM="-I $i"
-			    break
+		if [ ! -z "$NET_ADDR" ]; then
+		    if [ "$NET_ADDR" = dhcp ]; then
+			ethn=`ifconfig | grep "^eth" | sed -e "s/\(eth[0-9]\)\(.*\)/\1/"`
+			if [ ! -z "$ethn" ]; then
+			    EXTRA_PARAM="-I $ethn"
 			fi
-		    done
+		    else
+			for i in $NET_DEVS; do
+			    ADDR=`ifconfig $i | sed 's/addr://g' | sed -ne 's/^.*inet \([0-9.]*\) .*$/\1/p'`
+			    if [ "$NET_ADDR" = "$ADDR" ]; then
+				EXTRA_PARAM="-I $i"
+				break
+			    fi
+			done
+		    fi
 		fi
 	    fi
 	fi
-- 
2.7.4



             reply	other threads:[~2016-10-10 17:35 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-10 17:35 Jagadeesh Krishnanjanappa [this message]
2016-10-11  7:41 ` [PATCH] connman: get the correct network interface name from dmesg during NFS booting Andreas Oberritter
2016-10-11 12:11   ` Jagadeesh Krishnanjanappa
2016-10-11 15:36     ` Christopher Larson
2016-10-11 19:03       ` Jagadeesh Krishnanjanappa
2016-10-11 19:34         ` Christopher Larson
2016-10-12  7:30           ` Andreas Oberritter
2016-10-12 17:49             ` Christopher Larson
2016-10-12 19:08               ` Andreas Oberritter
2016-10-12  7:00     ` Andreas Oberritter
2016-10-13  2:01       ` Jagadeesh Krishnanjanappa
2016-10-19 18:52         ` Jagadeesh Krishnanjanappa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1476120925-26574-1-git-send-email-jkrishnanjanappa@mvista.com \
    --to=jkrishnanjanappa@mvista.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.