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