github.com/guilhermebr/docker@v1.4.2-0.20150428121140-67da055cebca/pkg/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  	FirewalldInit()
    11  }
    12  
    13  func TestReloaded(t *testing.T) {
    14  	var err error
    15  	var fwdChain *Chain
    16  
    17  	fwdChain, err = NewChain("FWD", "lo", Filter)
    18  	if err != nil {
    19  		t.Fatal(err)
    20  	}
    21  	defer fwdChain.Remove()
    22  
    23  	// copy-pasted from iptables_test:TestLink
    24  	ip1 := net.ParseIP("192.168.1.1")
    25  	ip2 := net.ParseIP("192.168.1.2")
    26  	port := 1234
    27  	proto := "tcp"
    28  
    29  	err = fwdChain.Link(Append, ip1, ip2, port, proto)
    30  	if err != nil {
    31  		t.Fatal(err)
    32  	} else {
    33  		// to be re-called again later
    34  		OnReloaded(func() { fwdChain.Link(Append, ip1, ip2, port, proto) })
    35  	}
    36  
    37  	rule1 := []string{
    38  		"-i", fwdChain.Bridge,
    39  		"-o", fwdChain.Bridge,
    40  		"-p", proto,
    41  		"-s", ip1.String(),
    42  		"-d", ip2.String(),
    43  		"--dport", strconv.Itoa(port),
    44  		"-j", "ACCEPT"}
    45  
    46  	if !Exists(fwdChain.Table, fwdChain.Name, rule1...) {
    47  		t.Fatalf("rule1 does not exist")
    48  	}
    49  
    50  	// flush all rules
    51  	fwdChain.Remove()
    52  
    53  	reloaded()
    54  
    55  	// make sure the rules have been recreated
    56  	if !Exists(fwdChain.Table, fwdChain.Name, rule1...) {
    57  		t.Fatalf("rule1 hasn't been recreated")
    58  	}
    59  }
    60  
    61  func TestPassthrough(t *testing.T) {
    62  	rule1 := []string{
    63  		"-i", "lo",
    64  		"-p", "udp",
    65  		"--dport", "123",
    66  		"-j", "ACCEPT"}
    67  
    68  	if firewalldRunning {
    69  		_, err := Passthrough(Iptables, append([]string{"-A"}, rule1...)...)
    70  		if err != nil {
    71  			t.Fatal(err)
    72  		}
    73  		if !Exists(Filter, "INPUT", rule1...) {
    74  			t.Fatalf("rule1 does not exist")
    75  		}
    76  	}
    77  
    78  }