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