MCPcopy Index your code
hub / github.com/coder/coder / createFakeInternet

Function createFakeInternet

tailnet/test/integration/network.go:255–389  ·  view source on GitHub ↗

createFakeInternet creates multiple namespaces with veth pairs between them with the following topology: . veth ┌────────┐ veth . ┌─────────────────┤ Bridge ├───────────────────┐ . │ └───┬────┘ │ . │

(t *testing.T)

Source from the content-addressed store, hash-verified

253// box. Default routes are created from the edge namespaces (client1, client2)
254// to their respective routers, but no NAT rules are created.
255func createFakeInternet(t *testing.T) fakeInternet {
256 t.Helper()
257 const (
258 bridgePrefix = "10.0.0."
259 serverIP = bridgePrefix + "1"
260 client1Prefix = "10.0.2."
261 client2Prefix = "10.0.3."
262 )
263 var (
264 namePrefix = uniqNetName(t) + "_"
265 router = fakeInternet{
266 NamePrefix: namePrefix,
267 BridgeName: namePrefix + "b",
268 }
269 )
270
271 // Create bridge namespace and bridge interface.
272 router.BridgeNetNS = createNetNS(t, router.BridgeName)
273 err := createBridge(router.BridgeNetNS, router.BridgeName)
274 require.NoError(t, err, "create bridge in netns")
275
276 // Create server namespace and veth pair between bridge and server.
277 router.ServerNetNS = createNetNS(t, namePrefix+"s")
278 router.ServerVethPair = vethPair{
279 Outer: namePrefix + "b-s",
280 Inner: namePrefix + "s-b",
281 }
282 err = joinBridge(joinBridgeOpts{
283 bridgeNetNS: router.BridgeNetNS,
284 netNS: router.ServerNetNS,
285 bridgeName: router.BridgeName,
286 vethPair: router.ServerVethPair,
287 ip: serverIP,
288 })
289 require.NoError(t, err, "join bridge with server")
290
291 leaves := []struct {
292 leaf *fakeRouterLeaf
293 routerName string
294 clientName string
295 routerBridgeIP string
296 routerClientIP string
297 clientIP string
298 }{
299 {
300 leaf: &router.Client1,
301 routerName: "c1r",
302 clientName: "c1",
303 routerBridgeIP: bridgePrefix + "2",
304 routerClientIP: client1Prefix + "1",
305 clientIP: client1Prefix + "2",
306 },
307 {
308 leaf: &router.Client2,
309 routerName: "c2r",
310 clientName: "c2",
311 routerBridgeIP: bridgePrefix + "3",
312 routerClientIP: client2Prefix + "1",

Callers 1

SetupNetworkingMethod · 0.85

Calls 10

uniqNetNameFunction · 0.85
createNetNSFunction · 0.85
createBridgeFunction · 0.85
joinBridgeFunction · 0.85
createVethPairFunction · 0.85
setVethNetNSFunction · 0.85
setInterfaceIPFunction · 0.85
setInterfaceUpFunction · 0.85
addRouteInNetNSFunction · 0.85
HelperMethod · 0.65

Tested by

no test coverage detected