setup_ipv4_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package bridge
  2. import (
  3. "net"
  4. "testing"
  5. "github.com/docker/libnetwork"
  6. "github.com/vishvananda/netlink"
  7. )
  8. func setupTestInterface(t *testing.T) *Interface {
  9. br := &Interface{
  10. Config: &Configuration{
  11. BridgeName: DefaultBridgeName,
  12. },
  13. }
  14. if err := SetupDevice(br); err != nil {
  15. t.Fatalf("Bridge creation failed: %v", err)
  16. }
  17. return br
  18. }
  19. func TestSetupBridgeIPv4Fixed(t *testing.T) {
  20. defer libnetwork.SetupTestNetNS(t)()
  21. ip, netw, err := net.ParseCIDR("192.168.1.1/24")
  22. if err != nil {
  23. t.Fatalf("Failed to parse bridge IPv4: %v", err)
  24. }
  25. br := setupTestInterface(t)
  26. br.Config.AddressIPv4 = &net.IPNet{IP: ip, Mask: netw.Mask}
  27. if err := SetupBridgeIPv4(br); err != nil {
  28. t.Fatalf("Failed to setup bridge IPv4: %v", err)
  29. }
  30. addrsv4, err := netlink.AddrList(br.Link, netlink.FAMILY_V4)
  31. if err != nil {
  32. t.Fatalf("Failed to list device IPv4 addresses: %v", err)
  33. }
  34. var found bool
  35. for _, addr := range addrsv4 {
  36. if br.Config.AddressIPv4.String() == addr.IPNet.String() {
  37. found = true
  38. break
  39. }
  40. }
  41. if !found {
  42. t.Fatalf("Bridge device does not have requested IPv4 address %v", br.Config.AddressIPv4)
  43. }
  44. }
  45. func TestSetupBridgeIPv4Auto(t *testing.T) {
  46. defer libnetwork.SetupTestNetNS(t)()
  47. br := setupTestInterface(t)
  48. if err := SetupBridgeIPv4(br); err != nil {
  49. t.Fatalf("Failed to setup bridge IPv4: %v", err)
  50. }
  51. addrsv4, err := netlink.AddrList(br.Link, netlink.FAMILY_V4)
  52. if err != nil {
  53. t.Fatalf("Failed to list device IPv4 addresses: %v", err)
  54. }
  55. var found bool
  56. for _, addr := range addrsv4 {
  57. if bridgeNetworks[0].String() == addr.IPNet.String() {
  58. found = true
  59. break
  60. }
  61. }
  62. if !found {
  63. t.Fatalf("Bridge device does not have the automatic IPv4 address %v", bridgeNetworks[0].String())
  64. }
  65. }