iiod: Make sure network is alive before poking avahi#1080
iiod: Make sure network is alive before poking avahi#1080pcercuei merged 1 commit intoanalogdevicesinc:mainfrom
Conversation
|
Since this fixes a problem on Pluto/M2k - I assume it should be applied to the 0.25 branch, and so that when Michael makes new firmware images - it gets picked up... -Robin |
Let's apply such fixes also to the https://github.com/analogdevicesinc/libiio/tree/libiio-v0 branch. |
pcercuei
left a comment
There was a problem hiding this comment.
Just some tiny comments, looks OK otherwise.
8c4b80c to
0c49703
Compare
0c49703 to
2021546
Compare
|
Ok - as soon as this builds on CI, it should be good to go. |
|
The CI failure is fixed with this: 2d92d14 and has nothing to do with this patch. |
2021546 to
920b0c7
Compare
|
fixed issue pointed out by Codacy |
|
Yeah don't worry. I don't require all CIs to succeed to merge a PR, when the errors are obviously unrelated. |
In the past, we were only checking hostname, as a way to see if the network was ready, but unfortunately - that doesn't work. The kernel really only needs to have a hostname set for uname() to work, which is what glibc and uclibc implement in gethostname(). So - now we check there is a working, configured ethernet card, that supports mdns (ie. multicast) that is up before moving on to making sure there is a hostname. We also don't allow "none" or "(none)" to be the hostname until after things time out (3 min). This fixes analogdevicesinc#1072 and turns: 192.168.2.1:5353 : answer _iio._tcp.local. PTR "iiod on (none)._iio._tcp.local." rclass 0x1 ttl 10 length 17 into: 192.168.2.1:5353 : answer _iio._tcp.local. PTR "iiod on pluto._iio._tcp.local." rclass 0x1 ttl 10 length 16 and when you have multiple on network (with same name): 192.168.1.110:5353 : answer _iio._tcp.local. PTR "iiod on pluto._iio._tcp.local." rclass 0x1 ttl 10 length 16 192.168.1.110:5353 : answer pluto.local. A 192.168.1.110 192.168.1.115:5353 : answer _iio._tcp.local. PTR "iiod on pluto analogdevicesinc#2._iio._tcp.local." rclass 0x1 ttl 10 length 19 192.168.1.115:5353 : answer pluto-2.local. A 192.168.1.115 Signed-off-by: Robin Getz <rgetz@mathworks.com>
920b0c7 to
7cabf6a
Compare
In the past, we were only checking hostname, as a way to see if the network was ready, but unfortantely - that doesn't work. The kernel really only needs to have a hostname set for uname() to work, which is what glibc and uclibc actaully do in gethostname().
So - now we actualyl check there is a working, configured ethernet card, that supports mdns (ie multicast) that is up before moving on to making sure there is a hostname.
We also don't allow "none" or "(none)" to be the hostname until after things time out (3 min).
This fixes #1072 and turns:
192.168.2.1:5353 : answer _iio._tcp.local. PTR "iiod on (none)._iio._tcp.local." rclass 0x1 ttl 10 length 17 into:
192.168.2.1:5353 : answer _iio._tcp.local. PTR "iiod on pluto._iio._tcp.local." rclass 0x1 ttl 10 length 16