firewalld_test.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package iptables
  2. import (
  3. "net"
  4. "strconv"
  5. "testing"
  6. )
  7. func TestFirewalldInit(t *testing.T) {
  8. FirewalldInit()
  9. }
  10. func TestReloaded(t *testing.T) {
  11. var err error
  12. var fwdChain *Chain
  13. fwdChain, err = NewChain("FWD", "lo", Filter)
  14. if err != nil {
  15. t.Fatal(err)
  16. }
  17. defer fwdChain.Remove()
  18. // copy-pasted from iptables_test:TestLink
  19. ip1 := net.ParseIP("192.168.1.1")
  20. ip2 := net.ParseIP("192.168.1.2")
  21. port := 1234
  22. proto := "tcp"
  23. err = fwdChain.Link(Append, ip1, ip2, port, proto)
  24. if err != nil {
  25. t.Fatal(err)
  26. } else {
  27. // to be re-called again later
  28. OnReloaded(func() { fwdChain.Link(Append, ip1, ip2, port, proto) })
  29. }
  30. rule1 := []string{
  31. "-i", fwdChain.Bridge,
  32. "-o", fwdChain.Bridge,
  33. "-p", proto,
  34. "-s", ip1.String(),
  35. "-d", ip2.String(),
  36. "--dport", strconv.Itoa(port),
  37. "-j", "ACCEPT"}
  38. if !Exists(fwdChain.Table, fwdChain.Name, rule1...) {
  39. t.Fatalf("rule1 does not exist")
  40. }
  41. // flush all rules
  42. fwdChain.Remove()
  43. reloaded()
  44. // make sure the rules have been recreated
  45. if !Exists(fwdChain.Table, fwdChain.Name, rule1...) {
  46. t.Fatalf("rule1 hasn't been recreated")
  47. }
  48. }
  49. func TestPassthrough(t *testing.T) {
  50. rule1 := []string{
  51. "-i", "lo",
  52. "-p", "udp",
  53. "--dport", "123",
  54. "-j", "ACCEPT"}
  55. if firewalldRunning {
  56. _, err := Passthrough(Iptables, append([]string{"-A"}, rule1...)...)
  57. if err != nil {
  58. t.Fatal(err)
  59. }
  60. if !Exists(Filter, "INPUT", rule1...) {
  61. t.Fatalf("rule1 does not exist")
  62. }
  63. }
  64. }