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  }