setup_ipv6_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package bridge
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io/ioutil"
  6. "net"
  7. "testing"
  8. "github.com/docker/libnetwork/testutils"
  9. "github.com/vishvananda/netlink"
  10. )
  11. func TestSetupIPv6(t *testing.T) {
  12. defer testutils.SetupTestOSContext(t)()
  13. config, br := setupTestInterface(t)
  14. if err := setupBridgeIPv6(config, br); err != nil {
  15. t.Fatalf("Failed to setup bridge IPv6: %v", err)
  16. }
  17. procSetting, err := ioutil.ReadFile(fmt.Sprintf("/proc/sys/net/ipv6/conf/%s/disable_ipv6", config.BridgeName))
  18. if err != nil {
  19. t.Fatalf("Failed to read disable_ipv6 kernel setting: %v", err)
  20. }
  21. if expected := []byte("0\n"); bytes.Compare(expected, procSetting) != 0 {
  22. t.Fatalf("Invalid kernel setting disable_ipv6: expected %q, got %q", string(expected), string(procSetting))
  23. }
  24. addrsv6, err := netlink.AddrList(br.Link, netlink.FAMILY_V6)
  25. if err != nil {
  26. t.Fatalf("Failed to list device IPv6 addresses: %v", err)
  27. }
  28. var found bool
  29. for _, addr := range addrsv6 {
  30. if bridgeIPv6Str == addr.IPNet.String() {
  31. found = true
  32. break
  33. }
  34. }
  35. if !found {
  36. t.Fatalf("Bridge device does not have requested IPv6 address %v", bridgeIPv6Str)
  37. }
  38. }
  39. func TestSetupGatewayIPv6(t *testing.T) {
  40. defer testutils.SetupTestOSContext(t)()
  41. _, nw, _ := net.ParseCIDR("2001:db8:ea9:9abc:ffff::/80")
  42. gw := net.ParseIP("2001:db8:ea9:9abc:ffff::254")
  43. config := &networkConfiguration{
  44. BridgeName: DefaultBridgeName,
  45. AddressIPv6: nw,
  46. DefaultGatewayIPv6: gw}
  47. br := &bridgeInterface{}
  48. if err := setupGatewayIPv6(config, br); err != nil {
  49. t.Fatalf("Set Default Gateway failed: %v", err)
  50. }
  51. if !gw.Equal(br.gatewayIPv6) {
  52. t.Fatalf("Set Default Gateway failed. Expected %v, Found %v", gw, br.gatewayIPv6)
  53. }
  54. }