1 unstable release

0.1.0 Apr 1, 2019

#712 in Compression

MIT license

33KB
689 lines

riptables

Build Status

riptables provides bindings for iptables application in Linux. (Modified from rust-iptables)

Relative to rust-iptables, the parsing function of the call output is added, and the RIPTRule object is returned.

Usage

[dependencies]
riptables = "0.1"

Getting started

use riptables::RIPTables;
use riptables::rule::Archive;

#[test]
fn test_list() {
  let table = "nat";
  let name = "TESTNAT";
  let iptables = riptables::new(false).unwrap();

  iptables.new_chain(table, name);
  iptables.insert(table, name, "-j ACCEPT", 1);
  let rules = iptables.list_chains(table, name).unwrap();
  iptables.delete(table, name, "-j ACCEPT");
  iptables.delete_chain(table, name);

  assert_eq!(rules.len(), 2);

  for rule in rules {
    println!("{:?}", rule);

    assert_eq!(rule.table, "nat".to_string());
    assert_eq!(rule.chain, name.to_string());
    match rule.archive {
      Archive::NewChain => assert_eq!(rule.origin, "-N TESTNAT".to_string()),
      Archive::Append => assert_eq!(rule.origin, "-A TESTNAT -j ACCEPT".to_string()),
      _ => {}
    }
  }
}

For more information, please check the test file in tests folder.

Dependencies

~1.5MB
~37K SLoC