-
Notifications
You must be signed in to change notification settings - Fork 38
implement new address filter based on default route availability #179
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
instead of using a plain sockaddr, use the mptcpd_addr_info structure, so that we can more easily include additional metadata. Additionally change the mptcpd_addr_info layout so that this don't break existing interface->addrs users. This make address management more efficent and will simplify the next patch.
This only adds the configuration-related bits, the actual check implementation is in the next patch.
|
the failure is cause by too old libell version. the gitlab workflows install ubuntu-latest defeault, which is v 0.27, while this changeset uses some functions introduces in libell 0.29. I have no idea how to tell the gitlab workflow to use/install a more recent version. |
3a6fad7 to
d6429af
Compare
Pull Request Test Coverage Report for Build 1515662526
💛 - Coveralls |
ossama-othman
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@pabeni I still have to go through the changes in detail, but I did make a quick pass and left some comments about minor issues.
if the relevant flag is enabled, do a route lookup for a default route at address creation time and notify the new address only if such route is found. In case of failure re-schedule the check with a small timeout and exponential backoff up to 3 times. That is intended to cope with e.g. DHCP clients configuring the address and the relevant route in order. Note that route lookup is async, an racing address removal can try to delete the relevant address object before the route lookup completes. Implement a simple refcount mechanism on the mptcp address object to avoid such issue. In a similar manner, route lookup can race with interface deletion. Instead of adding another ref-count, just lookup again the interface via the known ifindex in the async operation. Finally default route lookup for ipv4 does not really work on the Linux kernel: 'ip route get 0.0.0.0 ...' always returns a loopback route. To fetch the default route, lookup for a test-only address: as no host/network should use it, it should be reachable only via the default route. The gitlab workflows is update accordingly, explicitly building and installing the minimal required libell version
The new default route availability based address filter introduced in PR #179 requires features in ELL >= 0.30. Adjust the ELL version check and documentation accordingly.
this change-set implement the functionality discussed in recent public meetings.
Depending on a newly introduced configuration flag, new address are used/notified only if a default route is available for such address/interface.
There are a few quirks due to ipv4 route resolution and libell async notification, see the 3rd patch for the details.
This should close issue #170