Skip to content

runsc/sandbox: Collect loopback routes in loopbackLink#12725

Open
p12tic wants to merge 4 commits intogoogle:masterfrom
p12tic:copy-routes
Open

runsc/sandbox: Collect loopback routes in loopbackLink#12725
p12tic wants to merge 4 commits intogoogle:masterfrom
p12tic:copy-routes

Conversation

@p12tic
Copy link
Contributor

@p12tic p12tic commented Mar 12, 2026

Update loopbackLink() to also collect routes from the loopback interface via routesForIface(), in addition to the address-derived subnet routes it already synthesizes.

Previously, only routes synthesized from addresses (e.g. 127.0.0.0/8) were included for loopback interfaces. Custom routes added to the loopback interface (e.g. via podman-network-create --route) were missed because collectLinksAndRoutes() only called routesForIface() for non-loopback interfaces.

The address-derived routes live in the kernel's local routing table, while custom routes live in the main routing table. Since routesForIface queries the main table, these two sets are distinct and both are needed.


First 3 commits of the PR are general refactoring for testability and new tests. These could go in even if the fix is deemed as out of scope for the project.

p12tic added 4 commits March 12, 2026 21:37
Update loopbackLink() to also collect routes from the loopback interface
via routesForIface(), in addition to the address-derived subnet routes
it already synthesizes.

Previously, only routes synthesized from addresses (e.g. 127.0.0.0/8)
were included for loopback interfaces. Custom routes added to the
loopback interface (e.g. via podman-network-create --route) were missed
because collectLinksAndRoutes() only called routesForIface() for
non-loopback interfaces.

The address-derived routes live in the kernel's local routing table,
while custom routes live in the main routing table. Since routesForIface
queries the main table, these two sets are distinct and both are needed.
Copy link
Contributor

@nybidari nybidari left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

copybara-service bot pushed a commit that referenced this pull request Mar 19, 2026
Update loopbackLink() to also collect routes from the loopback interface via routesForIface(), in addition to the address-derived subnet routes it already synthesizes.

Previously, only routes synthesized from addresses (e.g. 127.0.0.0/8) were included for loopback interfaces. Custom routes added to the loopback interface (e.g. via podman-network-create --route) were missed because collectLinksAndRoutes() only called routesForIface() for non-loopback interfaces.

The address-derived routes live in the kernel's local routing table, while custom routes live in the main routing table. Since routesForIface queries the main table, these two sets are distinct and both are needed.

----

First 3 commits of the PR are general refactoring for testability and new tests. These could go in even if the fix is deemed as out of scope for the project.

FUTURE_COPYBARA_INTEGRATE_REVIEW=#12725 from p12tic:copy-routes 80fa723
PiperOrigin-RevId: 886250144
copybara-service bot pushed a commit that referenced this pull request Mar 19, 2026
Update loopbackLink() to also collect routes from the loopback interface via routesForIface(), in addition to the address-derived subnet routes it already synthesizes.

Previously, only routes synthesized from addresses (e.g. 127.0.0.0/8) were included for loopback interfaces. Custom routes added to the loopback interface (e.g. via podman-network-create --route) were missed because collectLinksAndRoutes() only called routesForIface() for non-loopback interfaces.

The address-derived routes live in the kernel's local routing table, while custom routes live in the main routing table. Since routesForIface queries the main table, these two sets are distinct and both are needed.

----

First 3 commits of the PR are general refactoring for testability and new tests. These could go in even if the fix is deemed as out of scope for the project.

FUTURE_COPYBARA_INTEGRATE_REVIEW=#12725 from p12tic:copy-routes 80fa723
PiperOrigin-RevId: 886250144
copybara-service bot pushed a commit that referenced this pull request Mar 20, 2026
Update loopbackLink() to also collect routes from the loopback interface via routesForIface(), in addition to the address-derived subnet routes it already synthesizes.

Previously, only routes synthesized from addresses (e.g. 127.0.0.0/8) were included for loopback interfaces. Custom routes added to the loopback interface (e.g. via podman-network-create --route) were missed because collectLinksAndRoutes() only called routesForIface() for non-loopback interfaces.

The address-derived routes live in the kernel's local routing table, while custom routes live in the main routing table. Since routesForIface queries the main table, these two sets are distinct and both are needed.

----

First 3 commits of the PR are general refactoring for testability and new tests. These could go in even if the fix is deemed as out of scope for the project.

FUTURE_COPYBARA_INTEGRATE_REVIEW=#12725 from p12tic:copy-routes 80fa723
PiperOrigin-RevId: 886250144
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants