• Kubernetes Submit Queue's avatar
    Merge pull request #46138 from pmichali/issue44848b · 15919758
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue (batch tested with PRs 48196, 42783, 48507, 47719, 46138)
    
    IPv6 support for getting IP from default route
    
    This is another part of the effort to update ChoseHostInterface() to support
    IPv6. In particular, this focuses on the call path, starting from
    chooseHostInterfaceFromRoute(), which attempts to find the node IP by
    using default route information.
    
    In the original code, routes are collected, and examined to find default
    routes. For a default route, the IPs for the associated interface are
    checked to see if there is one that is a V4 address, and is not a
    loopback, link local, or multicast address. If found, that IP will be
    used for the node IP.
    
    With this PR, there are some slight changes to prepare for allowing IPs
    from IPv6 default routes. The routes (IPv4 at this time - a subsequent
    PR will handle IPv6) are collected as before. If the route is a default
    route AND it's GW address is a global unicast address, then the IPs
    for the associated interface are checked. This time though, we just pick
    the IP that is on the same subnet as the gateway IP.
    
    This ensures it is not a link local, loopback, or multicast address. It
    saves time, by nt checking IPs for interfaces that don't have a "global"
    default route. It also will ensure the right IP is used, when using both
    IPv4 and IPv6 addresses.
    
    For example, if we have eth0 with global IPv4 and IPv6 addresses, and
    an IPv6 default route, we want to select the IPv6 address, as it is
    associated with the default route.
    
    Another case is that same interface, along with eth1 containing an IPv4
    address with a default route. We want to select eth1's IPv4 address,
    and not the IPv4 on eth0.
    
    This change adds more UT coverage to several methods, and removes UTs
    that are redundantly testing at a higher level. Coverage is slightly
    improved.
    
    
    
    **What this PR does / why we need it**:
    
    **Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: xref #44848
    
    **Special notes for your reviewer**:
    This goes along with PR 46044, and will have another PR to the next part.
    
    **Release note**:
    
    ```release-noteNONE
    ```
    15919758
Name
Last commit
Last update
.github Loading commit data...
Godeps Loading commit data...
api Loading commit data...
build Loading commit data...
cluster Loading commit data...
cmd Loading commit data...
docs Loading commit data...
examples Loading commit data...
federation Loading commit data...
hack Loading commit data...
logo Loading commit data...
pkg Loading commit data...
plugin Loading commit data...
staging Loading commit data...
test Loading commit data...
third_party Loading commit data...
translations Loading commit data...
vendor Loading commit data...
.bazelrc Loading commit data...
.gazelcfg.json Loading commit data...
.generated_files Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
BUILD.bazel Loading commit data...
CHANGELOG.md Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
Makefile.generated_files Loading commit data...
OWNERS Loading commit data...
OWNERS_ALIASES Loading commit data...
README.md Loading commit data...
Vagrantfile Loading commit data...
WORKSPACE Loading commit data...
code-of-conduct.md Loading commit data...
labels.yaml Loading commit data...