Documentation ¶
Overview ¶
Package iptables provides an interface and implementations for running iptables commands.
Index ¶
- Constants
- func GetChainLines(table Table, save []byte) map[Chain]string
- func IsNotFoundError(err error) bool
- func MakeChainLine(chain Chain) string
- func ReadLine(readIndex int, byteArray []byte) (string, int)
- type Chain
- type FlushFlag
- type Interface
- type Protocol
- type RestoreCountersFlag
- type RulePosition
- type Table
Constants ¶
const MinCheckVersion = "1.4.11"
Versions of iptables less than this do not support the -C / --check flag (test whether a rule exists).
const MinWait2Version = "1.4.22"
const MinWaitVersion = "1.4.20"
Minimum iptables versions supporting the -w and -w2 flags
Variables ¶
This section is empty.
Functions ¶
func GetChainLines ¶
GetChainLines parses a table's iptables-save data to find chains in the table. It returns a map of iptables.Chain to string where the string is the chain line from the save (with counters etc).
func IsNotFoundError ¶
IsNotFoundError returns true if the error indicates "not found". It parses the error string looking for known values, which is imperfect but works in practice.
func MakeChainLine ¶
MakeChainLine return an iptables-save/restore formatted chain line given a Chain
Types ¶
type Interface ¶
type Interface interface { // GetVersion returns the "X.Y.Z" semver string for iptables. GetVersion() (string, error) // EnsureChain checks if the specified chain exists and, if not, creates it. If the chain existed, return true. EnsureChain(table Table, chain Chain) (bool, error) // FlushChain clears the specified chain. If the chain did not exist, return error. FlushChain(table Table, chain Chain) error // DeleteChain deletes the specified chain. If the chain did not exist, return error. DeleteChain(table Table, chain Chain) error // EnsureRule checks if the specified rule is present and, if not, creates it. If the rule existed, return true. EnsureRule(position RulePosition, table Table, chain Chain, args ...string) (bool, error) // DeleteRule checks if the specified rule is present and, if so, deletes it. DeleteRule(table Table, chain Chain, args ...string) error // IsIpv6 returns true if this is managing ipv6 tables IsIpv6() bool // TODO: (BenTheElder) Unit-Test Save/SaveAll, Restore/RestoreAll // Save calls `iptables-save` for table. Save(table Table) ([]byte, error) // SaveAll calls `iptables-save`. SaveAll() ([]byte, error) // Restore runs `iptables-restore` passing data through a temporary file. // table is the Table to restore // data should be formatted like the output of Save() // flush sets the presence of the "--noflush" flag. see: FlushFlag // counters sets the "--counters" flag. see: RestoreCountersFlag Restore(table Table, data []byte, flush FlushFlag, counters RestoreCountersFlag) error // RestoreAll is the same as Restore except that no table is specified. RestoreAll(data []byte, flush FlushFlag, counters RestoreCountersFlag) error // AddReloadFunc adds a function to call on iptables reload AddReloadFunc(reloadFunc func()) // Destroy cleans up resources used by the Interface Destroy() }
An injectable interface for running iptables commands. Implementations must be goroutine-safe.
type RestoreCountersFlag ¶
type RestoreCountersFlag bool
Option flag for Restore
const NoRestoreCounters RestoreCountersFlag = false
const RestoreCounters RestoreCountersFlag = true
type RulePosition ¶
type RulePosition string
const ( Prepend RulePosition = "-I" Append RulePosition = "-A" )