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