1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- //go:build linux
- // +build linux
- package iptables
- import (
- "net"
- "strconv"
- "testing"
- )
- func TestFirewalldInit(t *testing.T) {
- if !checkRunning() {
- t.Skip("firewalld is not running")
- }
- if err := FirewalldInit(); err != nil {
- t.Fatal(err)
- }
- }
- func TestReloaded(t *testing.T) {
- var err error
- var fwdChain *ChainInfo
- iptable := GetIptable(IPv4)
- fwdChain, err = iptable.NewChain("FWD", Filter, false)
- if err != nil {
- t.Fatal(err)
- }
- bridgeName := "lo"
- err = iptable.ProgramChain(fwdChain, bridgeName, false, true)
- if err != nil {
- t.Fatal(err)
- }
- defer fwdChain.Remove()
- // copy-pasted from iptables_test:TestLink
- ip1 := net.ParseIP("192.168.1.1")
- ip2 := net.ParseIP("192.168.1.2")
- port := 1234
- proto := "tcp"
- err = fwdChain.Link(Append, ip1, ip2, port, proto, bridgeName)
- if err != nil {
- t.Fatal(err)
- } else {
- // to be re-called again later
- OnReloaded(func() { fwdChain.Link(Append, ip1, ip2, port, proto, bridgeName) })
- }
- rule1 := []string{
- "-i", bridgeName,
- "-o", bridgeName,
- "-p", proto,
- "-s", ip1.String(),
- "-d", ip2.String(),
- "--dport", strconv.Itoa(port),
- "-j", "ACCEPT",
- }
- if !iptable.Exists(fwdChain.Table, fwdChain.Name, rule1...) {
- t.Fatal("rule1 does not exist")
- }
- // flush all rules
- fwdChain.Remove()
- reloaded()
- // make sure the rules have been recreated
- if !iptable.Exists(fwdChain.Table, fwdChain.Name, rule1...) {
- t.Fatal("rule1 hasn't been recreated")
- }
- }
- func TestPassthrough(t *testing.T) {
- rule1 := []string{
- "-i", "lo",
- "-p", "udp",
- "--dport", "123",
- "-j", "ACCEPT",
- }
- iptable := GetIptable(IPv4)
- if firewalldRunning {
- _, err := Passthrough(Iptables, append([]string{"-A"}, rule1...)...)
- if err != nil {
- t.Fatal(err)
- }
- if !iptable.Exists(Filter, "INPUT", rule1...) {
- t.Fatal("rule1 does not exist")
- }
- }
- }
|