additional ifupdown problems

David Henderson dhenderson at digital-pipe.com
Fri Sep 23 12:56:01 UTC 2016


Good morning Martin.  I have actually be a part of that thread - still
waiting for a reply from Denys on it actually.  I'll apply the patch
at some point to resolve the ifdown issue, however, I'm still trying
to figure out what is going on with bringing up the interfaces without
an /etc/network/interfaces file.  How am I supposed to do this
properly Denys?  You've been vocal about this, but aren't supplying
additional info.

Thanks for your help though Martin!

Dave


On 9/22/16, Martin Townsend <mtownsend1973 at gmail.com> wrote:
> Hi Dave,
>
> I think you will need my recent patch that I submitted to get ifdown
> working, check the archived mailing list for about a week ago.  I was
> getting the same problem with an aliased/virtual IP address.
>
> Very strange why this works though, rules out sudoer problems.  I'm
> afraid this one has me stumped.
>
> - Martin.
>
> On Thu, Sep 22, 2016 at 7:53 PM, David Henderson
> <dhenderson at digital-pipe.com> wrote:
>> So to add more confusion to the mix, I've been able to successfully
>> add 'virtual' adapter (e.g. eth0:1) configuration with everything
>> working correctly - both 'ifup' and the modification of the
>> /var/run/ifstate file!  Also, the test script in if-up.d ran
>> flawlessly.  I do still get an error on 'ifdown' though:
>>
>> # sudo ifdown -v eth0:1
>> run-parts /etc/network/if-down.d
>> ip addr flush dev eth0:1
>> ip link set eth0:1 down
>> ip: SIOCSIFFLAGS: Cannot assign requested address
>>
>> The adapter does indeed go down, but is failing to complete the job
>> successfully.  Attempts with 'eth0' is still having the same
>> problems...
>>
>> Dave
>>
>>
>> On 9/22/16, David Henderson <dhenderson at digital-pipe.com> wrote:
>>> 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