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