additional ifupdown problems

David Henderson dhenderson at digital-pipe.com
Thu Sep 22 18:27:13 UTC 2016


Hey Martin, it does not appear that a /proc/config.gz is present.  I
guess that option wasn't added in the kernel config itself.  What was
the option to check btw?

I also checked the full dmesg output, but it doesn't appear that
anything was in that log.

Let me ask this question.  I have to run 'ifup' using sudo - which has
a direct entry in /etc/sudoers.  I would assume this is true, but the
commands that are run using 'ifup' are also run as the elevated
account and do not require a specific entry in the /etc/sudoers
account for 'ip' as well right?

Thanks,
Dave


On 9/22/16, Martin Townsend <mtownsend1973 at gmail.com> wrote:
> Don't suppose there's a /proc/config.gz file on your board? this would
> be the kernel configuration but the kernel would have to be built with
> this feature enabled.
> zcat /proc/config.gz would give you the configuration.
> Can't remember if I've already asked but is there anything useful in dmesg?
>
> -Martin.
>
> On Thu, Sep 22, 2016 at 2:26 PM, David Henderson
> <dhenderson at digital-pipe.com> wrote:
>> Thanks for your continued efforts Martin!  I can try the full blown
>> iproute2 later today and let you know.  Not sure about the kernel
>> config as I'm working with a fork of TC linux - they maintain that
>> portion.  And I don't think it's a firewall issue because the routing
>> does get setup during boot, it's just that the ifstate file doesn't
>> get written to for some reason (and I don't think firewalls will
>> prevent writing to local files :).
>>
>> Thanks,
>> Dave
>>
>>
>> On 9/21/16, Martin Townsend <mtownsend1973 at gmail.com> wrote:
>>> Hi Dave,
>>>
>>> On Wed, Sep 21, 2016 at 4:51 PM, David Henderson
>>> <dhenderson at digital-pipe.com> wrote:
>>>> On 9/21/16, Martin Townsend <mtownsend1973 at gmail.com> wrote:
>>>>> Hi Dave,
>>>>>
>>>>> On Wed, Sep 21, 2016 at 3:41 PM, David Henderson
>>>>> <dhenderson at digital-pipe.com> wrote:
>>>>>> Hey Martin,
>>>>>>
>>>>>> On 9/21/16, Martin Townsend <mtownsend1973 at gmail.com> wrote:
>>>>>>> Hi Dave,
>>>>>>>
>>>>>>> On Wed, Sep 21, 2016 at 2:06 PM, David Henderson
>>>>>>> <dhenderson at digital-pipe.com> wrote:
>>>>>>>> Good morning everyone!  I'll add each question with the answer
>>>>>>>> below:
>>>>>>>>
>>>>>>>> Q: maybe because something in if-pre-up.d fails?
>>>>>>>> A: there is only that one test script in if-up.d, no others so
>>>>>>>> nothing
>>>>>>>> there to fail.  And judging by the output from 'ifup', it doesn't
>>>>>>>> even
>>>>>>>> appear that the parsing of the if-up.d directory is happening, only
>>>>>>>> if-pre-up.d.
>>>>>>> You misread the question, maybe something in if-pre-up.d fails which
>>>>>>> means it doesn't even attempt if-up.d, I don't know the
>>>>>>> implementation
>>>>>>> that well so I don't know if this would happen.
>>>>>>
>>>>>> I think you misread the answer :)  There are no files in any of the
>>>>>> if-*.d directories except the if-up.d directory, and there is only
>>>>>> that one test script that was shown in another thread (which only
>>>>>> uses
>>>>>> one 'echo' call and one 'env' call).  There is nothing in any of
>>>>>> these
>>>>>> directories to fail.
>>>>>>
>>>>>>>> Q: maybe something is overwriting it (do you have inotfiy-watch)?
>>>>>>>> A: I do not have inotify-watch running.  Unless something in BB is
>>>>>>>> happening I have nothing else regarding networking running (e.g.
>>>>>>>> ifplugd, pppd, openvpn, etc).
>>>>>>> inotify-watch is a utility that you could run to determine if the
>>>>>>> file
>>>>>>> is being overwritten but maybe hard to use during boot anyway.
>>>>>>
>>>>>> Got it!  No I don't have that running.  However, as specified, unless
>>>>>> there is something in BB that also interacts with that file, there is
>>>>>> no other services running that would even care about the
>>>>>> /var/run/ifstate file.  Only 'ifup -a' is called during bootup that
>>>>>> is
>>>>>> regarding networking.  The only other software that is installed that
>>>>>> interacts with networking is the wpa suite, but afaik, it doesn't
>>>>>> bother with that file.  Also, wpa currently isn't even being executed
>>>>>> because interaction has been with the wired side.  Would the absence
>>>>>> of a physical connection cause any issues?  It doesn't seem to bother
>>>>>> whether the network adapter is configured or not in the software
>>>>>> (using a static IP address as shown below).
>>>>>>
>>>>>>>> Q: permissions?
>>>>>>>> A: file has been adjusted during the boot process (before 'ifup -a'
>>>>>>>> is
>>>>>>>> called) to become: root:staff 664.  Additionally I have tried
>>>>>>>> changing
>>>>>>>> to my own user account with the 'staff' group and 777 - no
>>>>>>>> difference.
>>>>>>>>
>>>>>>> I had a quick look through the code and as ifup is failing it is not
>>>>>>> writing out the new interface to ifstate so you need to find out why
>>>>>>> ifup is not working.
>>>>>>>
>>>>>>> As a test you could move all scripts out of if-pre-up.d and see if
>>>>>>> your test script gets called this will confirm whether something in
>>>>>>> if-pre-up.d is the problem.  If so move them back in one at a time
>>>>>>> until it breaks again.  Otherwise I'm out of ideas I'm afraid.
>>>>>>
>>>>>> Again, there are no other scripts in any of those directories to fail
>>>>>> and the one that is in there isn't even getting processed based on
>>>>>> the
>>>>>> 'ifup' output - it's in 'if-up.d', not 'if-pre-up.d'.
>>>>>>
>>>>>>>> Q: Out of interest what is your /etc/network/interfaces file if it
>>>>>>>> can
>>>>>>>> be shared?
>>>>>>>> A: Shown below:
>>>>>>>>
>>>>>>>> auto eth0
>>>>>>>> iface eth0 inet static
>>>>>>>> address 192.168.0.23
>>>>>>>> netmask 255.255.255.0
>>>>>>>> gateway 192.168.0.1
>>>>>>>> dns-nameservers 8.8.8.8 8.8.4.4
>>>>>>>> dns-search whatever.local
>>>>>>>>
>>>>>>> Looks pretty good to me.
>>>>>>>
>>>>>>>> Thanks,
>>>>>>>> Dave
>>>>>>>>
>>>>>>>>
>>>>>>>> On 9/20/16, Martin Townsend <mtownsend1973 at gmail.com> wrote:
>>>>>>>>> Hi Dave,
>>>>>>>>>
>>>>>>>>> On Tue, Sep 20, 2016 at 4:40 PM, David Henderson
>>>>>>>>> <dhenderson at digital-pipe.com> wrote:
>>>>>>>>>> That's what my research has yielded as well, however, it doesn't
>>>>>>>>>> appear that /var/run/ifstate is getting written to.  I check the
>>>>>>>>>> ownership/permissions of the file:
>>>>>>>>>>
>>>>>>>>>> root:root 644
>>>>>>>>>>
>>>>>>>>>> I since changed it to mimic yours and attempted an 'ifup' again -
>>>>>>>>>> no
>>>>>>>>>> luck, same message.  I then tried adding the 'eth0=eth0' to the
>>>>>>>>>> file
>>>>>>>>>> and calling 'ifdown eth0' which worked like a charm.  So it
>>>>>>>>>> appears
>>>>>>>>>> that the problem lies with 'ifup'?  Also, the 'ifstate' file is
>>>>>>>>>> dynamically being created during the boot cycle (most likely by
>>>>>>>>>> the
>>>>>>>>>> 'ifup -a' call during boot), so I'm assuming the file ownership
>>>>>>>>>> and
>>>>>>>>>> permissions are getting set there.
>>>>>>>>>>
>>>>>>>>>> Thanks,
>>>>>>>>>> Dave
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 9/20/16, Martin Townsend <mtownsend1973 at gmail.com> wrote:
>>>>>>>>>>> Hi David,
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Sep 20, 2016 at 4:03 PM, David Henderson
>>>>>>>>>>> <dhenderson at digital-pipe.com> wrote:
>>>>>>>>>>>> Good morning everyone!  During the boot of the OS, an 'ifup -a'
>>>>>>>>>>>> is
>>>>>>>>>>>> called to bring all the configured adapters online via the
>>>>>>>>>>>> /etc/network/interfaces file.  Once the device is up and
>>>>>>>>>>>> running,
>>>>>>>>>>>> I
>>>>>>>>>>>> can see the proper configurations via an 'ifconfig' call.
>>>>>>>>>>>> However,
>>>>>>>>>>>> when I issue an 'ifdown eth0' call, I get the following error:
>>>>>>>>>>>>
>>>>>>>>>>>> ifdown: interface eth0 not configured
>>>>>>>>>>>>
>>>>>>>>>>>> Checking with the 'ifconfig' confirms that no action was taken
>>>>>>>>>>>> and
>>>>>>>>>>>> that the adapter is still up and running.  Running an 'ifdown
>>>>>>>>>>>> -f
>>>>>>>>>>>> eth0'
>>>>>>>>>>>> achieves the desired goals, but why do I need to force this?
>>>>>>>>>>>> Checking
>>>>>>>>>>>> the /var/run/ifstate file shows that it is 0 bytes at all times
>>>>>>>>>>>> (e.g.
>>>>>>>>>>>> right after a reboot, after tinkering with ifup/down, etc).
>>>>>>>>>>>> Also,
>>>>>>>>>>>> once the configuration is removed and an 'ifup -v eth0' is
>>>>>>>>>>>> called,
>>>>>>>>>>>> here's what I get:
>>>>>>>>>>>>
>>>>>>>>>>>> run-parts /etc/network/if-pre-up.d
>>>>>>>>>>>> ip addr add 192.168.0.25/22 dev eth0 label eth0
>>>>>>>>>>>> ip link setup eth0 up
>>>>>>>>>>>> ip route add default via 192.168.0.1 dev eth0
>>>>>>>>>>>> ip: RTNETLINK answers: File exists
>>>>>>>>>>>>
>>>>>>>>>>>> I've tried calling a "ip addr flush dev eth0" to see if that
>>>>>>>>>>>> would
>>>>>>>>>>>> resolve the problem, but didn't work.  Also keep in mind that I
>>>>>>>>>>>> can
>>>>>>>>>>>> not run an 'strace' since the machine I'm working on (or more
>>>>>>>>>>>> precisely developing on) does NOT have a current Internet
>>>>>>>>>>>> connection.
>>>>>>>>>>>>
>>>>>>>>>>>> As a side note to one of my other posts, it doesn't appear that
>>>>>>>>>>>> any
>>>>>>>>>>>> other if-*.d directories are getting processed (which would
>>>>>>>>>>>> explain
>>>>>>>>>>>> why my test script isn't being called).  Is this due to the
>>>>>>>>>>>> error
>>>>>>>>>>>> preventing further processing, or are the other directories
>>>>>>>>>>>> getting
>>>>>>>>>>>> skipped for some other reason?
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Dave
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> busybox mailing list
>>>>>>>>>>>> busybox at busybox.net
>>>>>>>>>>>> http://lists.busybox.net/mailman/listinfo/busybox
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> I'm sure that /var/run/ifstate must contain the name of the
>>>>>>>>>>> currently
>>>>>>>>>>> configured network interfaces otherwise ifdown will not work so
>>>>>>>>>>> I
>>>>>>>>>>> would start there.   On my system /var/run is in tmpfs and is a
>>>>>>>>>>> link
>>>>>>>>>>> to /run as should have 777 permissions.
>>>>>>>>>>>  df -h /var/run
>>>>>>>>>>> Filesystem      Size  Used Avail Use% Mounted on
>>>>>>>>>>> tmpfs           503M  8.5M  495M   2% /run
>>>>>>>>>>> ls -al /var/run
>>>>>>>>>>> lrwxrwxrwx 1 root root 6 Sep 19 17:28 /var/run -> ../run
>>>>>>>>>>>
>>>>>>>>>>> Is there anything in dmesg about ifstate?  can you write to
>>>>>>>>>>> ifstate
>>>>>>>>>>>
>>>>>>>>>>> echo "eth0=eth0" > /var/run/ifstate
>>>>>>>>>>> if so does ifdown now work?
>>>>>>>>>>>
>>>>>>>>>>> -Martin
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hmm.  So ifup/down is not writing to the ifstate file like it
>>>>>>>>> should,
>>>>>>>>> maybe because something in if-pre-up.d fails? or maybe something
>>>>>>>>> is
>>>>>>>>> overwriting it (do you have inotfiy-watch) ? Permissions? Out of
>>>>>>>>> interest what is your /etc/network/interfaces file if it can be
>>>>>>>>> shared? errors in here can give " ip: RTNETLINK answers: File
>>>>>>>>> exists"
>>>>>>>>>
>>>>>>>>> - Martin.
>>>>>>>>>
>>>>>>>
>>>>>
>>>>> hmm, I'm out of ideas I'm afraid.
>>>>>
>>>>> I tried with no cable on my setup and it works fine
>>>>>
>>>>> ifup -v eth0
>>>>> run-parts /etc/network/if-pre-up.d
>>>>> ip addr add 192.168.0.50/24 dev eth0 label eth0
>>>>> ip link set eth0 up
>>>>> ip route add default via 192.168.0.1 dev eth0
>>>>> run-parts /etc/network/if-up.d
>>>>>
>>>>> and down works fine to.
>>>>>
>>>>> So looking at this the reason that if-up.d is not getting called is
>>>>> because the ip route add default command failing on your setup.  I
>>>>> tried running your ip commands from ifup manually on my setup and it
>>>>> failed on ip link setup as this must have changed to ip link set.  But
>>>>> if correct this it all works fine.  What version of iproute2 are you
>>>>> using?
>>>>> I get the following:
>>>>> ip -V
>>>>> ip utility, iproute2-ss160111
>>>>>
>>>>> - Martin.
>>>>
>>>> So I ended up removing everything with routing via 'ip route delete
>>>> ...' so that the table was completely empty.  I then ran the
>>>> following:
>>>>
>>>> ip route
>>>> 127.0.0.1 dev lo
>>>>
>>>> ifup -v eth0
>>>> run-parts /etc/network/if-pre-up.d
>>>> ip addr add 192.168.0.23/24 dev eth0 label eth0
>>>> ip: RTNETLINK answers: File exists
>>>> ip link set eth0 up
>>>> ip route add default via 192.168.0.1 dev eth0
>>>> ip: RTNETLINK answers: Network is unreachable
>>>>
>>>> ip route
>>>> 127.0.0.1 dev lo
>>>>
>>>> So it appears that anytime the 'ip' command is called, I get an error.
>>>> I'm not sure what file it is referring to, but it is also important to
>>>> note that nothing is getting added to the routing table.  Does BB
>>>> write to a file with the 'ip' command?  Here is the version I'm using:
>>>>
>>>> ip -V
>>>> BusyBox v1.24.1 (2016-09-16 11:08:49 UTC) multi-call binary.
>>>>
>>>> Sorry about the 'ip link setup', it was a typo - remember the dev
>>>> computer doesn't have a network connection so I have to transpose...
>>>>
>>>> Thanks,
>>>> Dave
>>>
>>> All I can suggest is trying the full blown ip from iproute2 to see if
>>> this fixes things I'm afraid.  Maybe the kernel configuration?
>>> Firewall?
>>>
>>> - Martin.
>>>
>


More information about the busybox mailing list