Skip to content

netlink bridgefdb - #40

Draft
plan9better wants to merge 2 commits into
masterfrom
netlink-bridgefdb
Draft

plan9better wants to merge 2 commits into
masterfrom
netlink-bridgefdb

Conversation

@plan9better

Copy link
Copy Markdown
Collaborator
  • fix(vxlandlord): add bridge fdb entry via netlink instead of shelling out to bridge
  • fix(xfrminion): use netlink directly for bridge fdb, not the bridge binary

… out to `bridge`

The iface-request init container crashes on startup with
"Error appending to bridge fdb: exec: \"bridge\": executable file not
found in $PATH" because the vxlandlord image does not install iproute2,
so the external `bridge` binary this code shells out to is never
present. Every other network operation in this file (link/addr/route
management) already goes through vishvananda/netlink directly - this
was the one exception.

Replace the `bridge fdb append` exec.Command call with an equivalent
netlink.NeighAppend (family AF_BRIDGE, NTF_SELF, NUD_PERMANENT),
removing the dependency on the external binary entirely rather than
just adding iproute2 to the image.

Verified: go build/vet/gofmt clean, and confirmed at runtime in a live
cluster - a workload pod annotated to use an IPSecConnection child now
gets its iface-request init container to Completed instead of
Init:Error, and traffic reaches the remote subnet through the tunnel.
…inary

Mirrors cmd/vxlandlord's fix for the same issue: the ko-built image has
no bridge/iproute2 binary, so shelling out to it always fails with
"exec: \"bridge\": executable file not found in $PATH". Replaces both
the add and delete paths (and the delete path's extra `bridge fdb show
| grep | xargs bridge fdb del` cleanup pipeline) with equivalent
netlink calls (NeighAppend/NeighDel/NeighList).

Verified: go build/vet/gofmt clean, and confirmed at runtime in a live
cluster - the xfrm-pod's restctl calls to add/delete FDB entries now
succeed instead of failing on a missing binary.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants