setup_ipv4_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package bridge
  2. import (
  3. "net"
  4. "testing"
  5. "github.com/docker/docker/libnetwork/testutils"
  6. "github.com/vishvananda/netlink"
  7. )
  8. func setupTestInterface(t *testing.T, nh *netlink.Handle) (*networkConfiguration, *bridgeInterface) {
  9. config := &networkConfiguration{
  10. BridgeName: DefaultBridgeName}
  11. br := &bridgeInterface{nlh: nh}
  12. if err := setupDevice(config, br); err != nil {
  13. t.Fatalf("Bridge creation failed: %v", err)
  14. }
  15. return config, br
  16. }
  17. func TestSetupBridgeIPv4Fixed(t *testing.T) {
  18. defer testutils.SetupTestOSContext(t)()
  19. ip, netw, err := net.ParseCIDR("192.168.1.1/24")
  20. if err != nil {
  21. t.Fatalf("Failed to parse bridge IPv4: %v", err)
  22. }
  23. nh, err := netlink.NewHandle()
  24. if err != nil {
  25. t.Fatal(err)
  26. }
  27. defer nh.Delete()
  28. config, br := setupTestInterface(t, nh)
  29. config.AddressIPv4 = &net.IPNet{IP: ip, Mask: netw.Mask}
  30. if err := setupBridgeIPv4(config, br); err != nil {
  31. t.Fatalf("Failed to setup bridge IPv4: %v", err)
  32. }
  33. addrsv4, err := nh.AddrList(br.Link, netlink.FAMILY_V4)
  34. if err != nil {
  35. t.Fatalf("Failed to list device IPv4 addresses: %v", err)
  36. }
  37. var found bool
  38. for _, addr := range addrsv4 {
  39. if config.AddressIPv4.String() == addr.IPNet.String() {
  40. found = true
  41. break
  42. }
  43. }
  44. if !found {
  45. t.Fatalf("Bridge device does not have requested IPv4 address %v", config.AddressIPv4)
  46. }
  47. }
  48. func TestSetupGatewayIPv4(t *testing.T) {
  49. defer testutils.SetupTestOSContext(t)()
  50. nh, err := netlink.NewHandle()
  51. if err != nil {
  52. t.Fatal(err)
  53. }
  54. defer nh.Delete()
  55. ip, nw, _ := net.ParseCIDR("192.168.0.24/16")
  56. nw.IP = ip
  57. gw := net.ParseIP("192.168.2.254")
  58. config := &networkConfiguration{
  59. BridgeName: DefaultBridgeName,
  60. DefaultGatewayIPv4: gw}
  61. br := &bridgeInterface{bridgeIPv4: nw, nlh: nh}
  62. if err := setupGatewayIPv4(config, br); err != nil {
  63. t.Fatalf("Set Default Gateway failed: %v", err)
  64. }
  65. if !gw.Equal(br.gatewayIPv4) {
  66. t.Fatalf("Set Default Gateway failed. Expected %v, Found %v", gw, br.gatewayIPv4)
  67. }
  68. }