github.com/rawahars/moby@v24.0.4+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.Close() 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 func TestSetupGatewayIPv6(t *testing.T) { 59 defer testutils.SetupTestOSContext(t)() 60 61 _, nw, _ := net.ParseCIDR("2001:db8:ea9:9abc:ffff::/80") 62 gw := net.ParseIP("2001:db8:ea9:9abc:ffff::254") 63 64 config := &networkConfiguration{ 65 BridgeName: DefaultBridgeName, 66 AddressIPv6: nw, 67 DefaultGatewayIPv6: gw} 68 69 nh, err := netlink.NewHandle() 70 if err != nil { 71 t.Fatal(err) 72 } 73 defer nh.Close() 74 75 br := &bridgeInterface{nlh: nh} 76 77 if err := setupGatewayIPv6(config, br); err != nil { 78 t.Fatalf("Set Default Gateway failed: %v", err) 79 } 80 81 if !gw.Equal(br.gatewayIPv6) { 82 t.Fatalf("Set Default Gateway failed. Expected %v, Found %v", gw, br.gatewayIPv6) 83 } 84 }