[OE-core] [PATCH] connman: get the correct network interface name from dmesg during NFS booting
Jagadeesh Krishnanjanappa
jkrishnanjanappa at mvista.com
Thu Oct 13 02:01:37 UTC 2016
On Wed, Oct 12, 2016 at 12:30 PM, Andreas Oberritter <obi at opendreambox.org>
wrote:
> Hi Jagadeesh,
>
> On 11.10.2016 14:11, Jagadeesh Krishnanjanappa wrote:
> > Hi Andreas,
> >
> > Thanks for reviewing the patch.
> >
> >
> > I think this is too fragile to land in OE-Core. What happens if a
> > network driver prints "device=eth0"? Or if other kernel messages make
> > the string disappear from dmesg and connman gets restarted later?
> >
> >
> > True. If device=eth0 gets disappeared/corrupted, then we may have
> problem.
> >
> >
> > FWIW, I'm attaching my current wrapper script for connmand. I don't
> > think it's perfect, but at least it doesn't depend on any init
> manager
> > and works across restarts.
> >
> > The wrapper script attached by you, takes care of the missing scenarios.
> > Seems to be more complete.
> >
> >
> >
> > Add these lines to connman's do_install, in case you'd like to test
> > and/or submit it:
> >
> > mv ${D}${sbindir}/connmand ${D}${sbindir}/connmand.real
> > install -m 755 ${WORKDIR}/connmand-nfsroot.in
> > <http://connmand-nfsroot.in> ${D}${sbindir}/connmand
> > sed -e 's, at sbindir@,${sbindir},g' -i ${D}${sbindir}/connmand
> >
> > I think it would be good idea to integrate your changes into the already
> > existing OE-core's connman script, instead of a calling original connman
> > script from the wrapper script.
>
> please keep in mind that you'd need to implement the same logic for
> systemd.
>
> Considering that the execution of connman on nfsroots without
> appropriate parameters immediately hangs the system, a wrapper script
> offers an additional level of protection compared to an init script or
> systemd unit, especially for people debugging connman.
>
> The intention of integrating your changes into init script was to avoid an
extra file being added to the layer. But yes, to help debugging and to
support systemd; wrapper script can be helpful.
Thanks,
Jagadeesh
Regards,
> Andreas
>
> >
> > Regards,
> > Jagadeesh
> >
> > >
> > > Signed-off-by: Jagadeesh Krishnanjanappa
> > <jkrishnanjanappa at mvista.com <mailto:jkrishnanjanappa at 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
> > >
> >
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at lists.openembedded.org
> > <mailto:Openembedded-core at lists.openembedded.org>
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
> > <http://lists.openembedded.org/mailman/listinfo/openembedded-core>
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20161013/c4bec1ac/attachment-0002.html>
More information about the Openembedded-core
mailing list