github.com/rawahars/moby@v24.0.4+incompatible/libnetwork/drivers/bridge/setup_ipv4_test.go (about) 1 //go:build linux 2 // +build linux 3 4 package bridge 5 6 import ( 7 "net" 8 "testing" 9 10 "github.com/docker/docker/libnetwork/testutils" 11 "github.com/vishvananda/netlink" 12 ) 13 14 func setupTestInterface(t *testing.T, nh *netlink.Handle) (*networkConfiguration, *bridgeInterface) { 15 config := &networkConfiguration{ 16 BridgeName: DefaultBridgeName} 17 br := &bridgeInterface{nlh: nh} 18 19 if err := setupDevice(config, br); err != nil { 20 t.Fatalf("Bridge creation failed: %v", err) 21 } 22 return config, br 23 } 24 25 func TestSetupBridgeIPv4Fixed(t *testing.T) { 26 defer testutils.SetupTestOSContext(t)() 27 28 ip, netw, err := net.ParseCIDR("192.168.1.1/24") 29 if err != nil { 30 t.Fatalf("Failed to parse bridge IPv4: %v", err) 31 } 32 33 nh, err := netlink.NewHandle() 34 if err != nil { 35 t.Fatal(err) 36 } 37 defer nh.Close() 38 39 config, br := setupTestInterface(t, nh) 40 config.AddressIPv4 = &net.IPNet{IP: ip, Mask: netw.Mask} 41 if err := setupBridgeIPv4(config, br); err != nil { 42 t.Fatalf("Failed to setup bridge IPv4: %v", err) 43 } 44 45 addrsv4, err := nh.AddrList(br.Link, netlink.FAMILY_V4) 46 if err != nil { 47 t.Fatalf("Failed to list device IPv4 addresses: %v", err) 48 } 49 50 var found bool 51 for _, addr := range addrsv4 { 52 if config.AddressIPv4.String() == addr.IPNet.String() { 53 found = true 54 break 55 } 56 } 57 58 if !found { 59 t.Fatalf("Bridge device does not have requested IPv4 address %v", config.AddressIPv4) 60 } 61 } 62 63 func TestSetupGatewayIPv4(t *testing.T) { 64 defer testutils.SetupTestOSContext(t)() 65 66 nh, err := netlink.NewHandle() 67 if err != nil { 68 t.Fatal(err) 69 } 70 defer nh.Close() 71 72 ip, nw, _ := net.ParseCIDR("192.168.0.24/16") 73 nw.IP = ip 74 gw := net.ParseIP("192.168.2.254") 75 76 config := &networkConfiguration{ 77 BridgeName: DefaultBridgeName, 78 DefaultGatewayIPv4: gw} 79 80 br := &bridgeInterface{bridgeIPv4: nw, nlh: nh} 81 82 if err := setupGatewayIPv4(config, br); err != nil { 83 t.Fatalf("Set Default Gateway failed: %v", err) 84 } 85 86 if !gw.Equal(br.gatewayIPv4) { 87 t.Fatalf("Set Default Gateway failed. Expected %v, Found %v", gw, br.gatewayIPv4) 88 } 89 }