Closed sgourdas closed 1 month ago
I would like to do some additional checks here before reviews, if possible.
@veloman-yunkan this is ready for code review.
P.S. It would be good for testing even to have in place the fix of Server::setAddress
from kiwix/libkiwix#1147.
So I guess this is the last PR of our IPv6 effort :)
Now that ipv6 works correctly on Windows give me some additional time to catch any issues before we close this up please
It would be good to merge kiwix/libkiwix#1151 first, as noted here, before finalizing this as well.
It seems like the root cause helping the discovery of kiwix/libkiwix#1148 is the fact that the Kiwix Desktop local server uses getNetworkInterfacesIPv4Or6
which does return 169.254
prefixed IPs. These are added to the dropdown of IPs "available" for use, which as we discussed leads to issues.
@veloman-yunkan should I filter these out when adding to the list, or should we modify the getNetworkInterfacesIPv4Or6
behavior to not include them?
@sgourdas Neither seems a good option to me. Why don't we present the full list of IPs to the users and let them find out which one works best for them? We can add a note that not all of the IPs in the list may actually work. We can filter the list later after we have enough experience with problematic IPs and/or complaints from our users.
@sgourdas Neither seems a good option to me. Why don't we present the full list of IPs to the users and let them find out which one works best for them? We can add a note that not all of the IPs in the list may actually work. We can filter the list later after we have enough experience with problematic IPs and/or complaints from our users.
I can see that being best in a "text box scenario" where the input is coming from the user. IMHO if an option is given from a dropdown it should work correctly and have a reason to be presented/add clutter in our app.
On the other hand, filtering after we get more experience with problematic IPs is a good approach. But despite that, this prefix seems to get in the way and kind of obscure what works and what doesn't with how many IPs it provides.
@sgourdas If you can do some research, find out the peculiarity of 169.254.x.x
addresses and substantiate why they must be excluded from the IP addresses that we consider, then we can proceed based on that information.
@sgourdas If you can do some research, find out the peculiarity of
169.254.x.x
addresses and substantiate why they must be excluded from the IP addresses that we consider, then we can proceed based on that information.
@veloman-yunkan 169.254.0.0/16 addresses are link local addresses which IMO should be excluded in getNetworkInterfacesWin
since its already being done with the ipv6 equivalent. Their use is not destined for this purpose since they are non routable.
@sgourdas If you can do some research, find out the peculiarity of
169.254.x.x
addresses and substantiate why they must be excluded from the IP addresses that we consider, then we can proceed based on that information.@veloman-yunkan 169.254.0.0/16 addresses are link local addresses which IMO should be excluded in
getNetworkInterfacesWin
since its already being done with the ipv6 equivalent. Their use is not destined for this purpose since they are non routable.
The corresponding change should also be probably done in getNetworkInterfacesPosix
in the same logic.
Their use is not destined for this purpose since they are non routable.
@sgourdas Can you provide a reference to some document supporting your statement?
Their use is not destined for this purpose since they are non routable.
@sgourdas Can you provide a reference to some document supporting your statement?
Such addresses are not globally routable, but they should be usable within the local subnetwork, in which respect they are no different from, for example, 192.168.x.x addresses.
@veloman-yunkan is this enough info to justify such a change?
@sgourdas I am not convinced. The main argument for suppressing 169.254.x.x IPs is that they seem to become of significance only when there is a misconfiguration or some other issue with the network, however that also can be thought of as an argument for not suppressing those IPs. I'll let @kelson42 decide.
@veloman-yunkan do you happen to know what is the reason we are excluding IPv6 link locals but not doing the same for IPv4 currently?
@veloman-yunkan do you happen to know what is the reason we are excluding IPv6 link locals but not doing the same for IPv4 currently?
No, I don't.
@veloman-yunkan do you happen to know what is the reason we are excluding IPv6 link locals but not doing the same for IPv4 currently?
No, I don't.
Alright, lets continue with the main purpose of this PR maybe for the moment then.
@sgourdas I am not convinced. The main argument for suppressing 169.254.x.x IPs is that they seem to become of significance only when there is a misconfiguration or some other issue with the network, however that also can be thought of as an argument for not suppressing those IPs. I'll let @kelson42 decide.
I'm pretty much in favour of not proposing this kind of IPs - if they are not reachable by non-local users - in Kiwix Desktop. This will do more arm than good IMHO. I believe the answer is slightly different for Kiwix Server, which is used by tech-savy users. So I would just propose to mask it here in Kiwix Desktop, but keep it available in libkiwix/kiwix-serve (but never choose it per default). Hope this helps.
This adds ipv6 support to the local kiwix server of the app.
Fixes #1119