feature/conn25: add on-remove hook for flows in FlowTable
The hook fires when a flow is removed for any reason (LRU capacity eviction, tuple-collision displacement, or idle-time expiry). The hook is invoked exactly once per flow, after the flow table mutex is released, so callbacks may safely acquire other locks. We rename the IPMapper interface to Conn25Datapath, and add ClientFlowCreated/ClientFlowRemoved methods so *Conn25 can keep client-side address assignments alive while traffic is in flight. Those methods are currently stubbed for future work. Connector flows do not currently call these methods. Updates tailscale/corp#38630 Updates tailscale/corp#43180 Signed-off-by: Michael Ben-Ami <mzb@tailscale.com>
This commit is contained in:
committed by
mzbenami
parent
2a0eafc20f
commit
6f281ccbcd
@@ -33,6 +33,9 @@ func (tc *testConn25) ConnectorRealIPForTransitIPConnection(srcIP netip.Addr, tr
|
||||
return tc.connectorRealIPForTransitIPConnectionFn(srcIP, transitIP)
|
||||
}
|
||||
|
||||
func (tc *testConn25) ClientFlowCreated(transitIP netip.Addr) {}
|
||||
func (tc *testConn25) ClientFlowRemoved(transitIP netip.Addr) {}
|
||||
|
||||
func TestHandlePacketFromTunDevice(t *testing.T) {
|
||||
clientSrcIP := netip.MustParseAddr("100.70.0.1")
|
||||
magicIP := netip.MustParseAddr("10.64.0.1")
|
||||
|
||||
Reference in New Issue
Block a user