github.com/pwn-term/docker@v0.0.0-20210616085119-6e977cce2565/libnetwork/drivers/bridge/setup_ipv6_test.go (about) 1 package bridge 2 3 import ( 4 "bytes" 5 "fmt" 6 "io/ioutil" 7 "net" 8 "testing" 9 10 "github.com/docker/libnetwork/testutils" 11 "github.com/vishvananda/netlink" 12 ) 13 14 func TestSetupIPv6(t *testing.T) { 15 defer testutils.SetupTestOSContext(t)() 16 17 nh, err := netlink.NewHandle() 18 if err != nil { 19 t.Fatal(err) 20 } 21 defer nh.Delete() 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 := ioutil.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.Compare(expected, procSetting) != 0 { 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 bridgeIPv6Str == 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", bridgeIPv6Str) 52 } 53 54 } 55 56 func TestSetupGatewayIPv6(t *testing.T) { 57 defer testutils.SetupTestOSContext(t)() 58 59 _, nw, _ := net.ParseCIDR("2001:db8:ea9:9abc:ffff::/80") 60 gw := net.ParseIP("2001:db8:ea9:9abc:ffff::254") 61 62 config := &networkConfiguration{ 63 BridgeName: DefaultBridgeName, 64 AddressIPv6: nw, 65 DefaultGatewayIPv6: gw} 66 67 nh, err := netlink.NewHandle() 68 if err != nil { 69 t.Fatal(err) 70 } 71 defer nh.Delete() 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 }