feat(connect): network interface binding with bind_local_device #2823
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds interface/device binding just like in curl:
$ curl --interface wlan0 'https://api.ipify.org' 1.2.3.4
It's needed, because sometimes binding to local IP just doesn't work (for example raspberry pi wlan0).
Also, when DHCP IP changes, the program would have to update local IPv4 and IPv6.
Solution to that is binding to an interface name, which does not change.
Also, I've added a small fix for IPv6 which was I've found a few months ago - it was kinda annoying to debug on an IPv6 machine.
Unfortunatelly, 536b3a8 wasn't tested. As I remember there's something wrong with IP v4/v6 handling... not sure if that's IPv6 -> IPv4.