github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/mergeCode/libnetwork/iptables/firewalld_test.go (about) 1 package iptables 2 3 import ( 4 "net" 5 "strconv" 6 "testing" 7 ) 8 9 func TestFirewalldInit(t *testing.T) { 10 if !checkRunning() { 11 t.Skip("firewalld is not running") 12 } 13 if err := FirewalldInit(); err != nil { 14 t.Fatal(err) 15 } 16 } 17 18 func TestReloaded(t *testing.T) { 19 var err error 20 var fwdChain *ChainInfo 21 22 fwdChain, err = NewChain("FWD", Filter, false) 23 bridgeName := "lo" 24 25 err = ProgramChain(fwdChain, bridgeName, false, true) 26 if err != nil { 27 t.Fatal(err) 28 } 29 defer fwdChain.Remove() 30 31 // copy-pasted from iptables_test:TestLink 32 ip1 := net.ParseIP("192.168.1.1") 33 ip2 := net.ParseIP("192.168.1.2") 34 port := 1234 35 proto := "tcp" 36 37 err = fwdChain.Link(Append, ip1, ip2, port, proto, bridgeName) 38 if err != nil { 39 t.Fatal(err) 40 } else { 41 // to be re-called again later 42 OnReloaded(func() { fwdChain.Link(Append, ip1, ip2, port, proto, bridgeName) }) 43 } 44 45 rule1 := []string{ 46 "-i", bridgeName, 47 "-o", bridgeName, 48 "-p", proto, 49 "-s", ip1.String(), 50 "-d", ip2.String(), 51 "--dport", strconv.Itoa(port), 52 "-j", "ACCEPT"} 53 54 if !Exists(fwdChain.Table, fwdChain.Name, rule1...) { 55 t.Fatalf("rule1 does not exist") 56 } 57 58 // flush all rules 59 fwdChain.Remove() 60 61 reloaded() 62 63 // make sure the rules have been recreated 64 if !Exists(fwdChain.Table, fwdChain.Name, rule1...) { 65 t.Fatalf("rule1 hasn't been recreated") 66 } 67 } 68 69 func TestPassthrough(t *testing.T) { 70 rule1 := []string{ 71 "-i", "lo", 72 "-p", "udp", 73 "--dport", "123", 74 "-j", "ACCEPT"} 75 76 if firewalldRunning { 77 _, err := Passthrough(Iptables, append([]string{"-A"}, rule1...)...) 78 if err != nil { 79 t.Fatal(err) 80 } 81 if !Exists(Filter, "INPUT", rule1...) { 82 t.Fatalf("rule1 does not exist") 83 } 84 } 85 86 }