github.com/docker/engine@v22.0.0-20211208180946-d456264580cf+incompatible/libnetwork/drivers/bridge/setup_ipv6_test.go (about) 1 //go:build linux 2 // +build linux 3 4 package bridge 5 6 import ( 7 "bytes" 8 "fmt" 9 "net" 10 "os" 11 "testing" 12 13 "github.com/docker/docker/libnetwork/testutils" 14 "github.com/vishvananda/netlink" 15 ) 16 17 func TestSetupIPv6(t *testing.T) { 18 defer testutils.SetupTestOSContext(t)() 19 20 nh, err := netlink.NewHandle() 21 if err != nil { 22 t.Fatal(err) 23 } 24 defer nh.Delete() 25 26 config, br := setupTestInterface(t, nh) 27 if err := setupBridgeIPv6(config, br); err != nil { 28 t.Fatalf("Failed to setup bridge IPv6: %v", err) 29 } 30 31 procSetting, err := os.ReadFile(fmt.Sprintf("/proc/sys/net/ipv6/conf/%s/disable_ipv6", config.BridgeName)) 32 if err != nil { 33 t.Fatalf("Failed to read disable_ipv6 kernel setting: %v", err) 34 } 35 36 if expected := []byte("0\n"); !bytes.Equal(expected, procSetting) { 37 t.Fatalf("Invalid kernel setting disable_ipv6: expected %q, got %q", string(expected), string(procSetting)) 38 } 39 40 addrsv6, err := nh.AddrList(br.Link, netlink.FAMILY_V6) 41 if err != nil { 42 t.Fatalf("Failed to list device IPv6 addresses: %v", err) 43 } 44 45 var found bool 46 for _, addr := range addrsv6 { 47 if bridgeIPv6.String() == addr.IPNet.String() { 48 found = true 49 break 50 } 51 } 52 53 if !found { 54 t.Fatalf("Bridge device does not have requested IPv6 address %v", bridgeIPv6) 55 } 56 57 } 58 59 func TestSetupGatewayIPv6(t *testing.T) { 60 defer testutils.SetupTestOSContext(t)() 61 62 _, nw, _ := net.ParseCIDR("2001:db8:ea9:9abc:ffff::/80") 63 gw := net.ParseIP("2001:db8:ea9:9abc:ffff::254") 64 65 config := &networkConfiguration{ 66 BridgeName: DefaultBridgeName, 67 AddressIPv6: nw, 68 DefaultGatewayIPv6: gw} 69 70 nh, err := netlink.NewHandle() 71 if err != nil { 72 t.Fatal(err) 73 } 74 defer nh.Delete() 75 76 br := &bridgeInterface{nlh: nh} 77 78 if err := setupGatewayIPv6(config, br); err != nil { 79 t.Fatalf("Set Default Gateway failed: %v", err) 80 } 81 82 if !gw.Equal(br.gatewayIPv6) { 83 t.Fatalf("Set Default Gateway failed. Expected %v, Found %v", gw, br.gatewayIPv6) 84 } 85 }