1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
//! A library wrapper for `libipset`.
//! Support the following commands:
//! * add
//! * del
//! * test
//! * create
//! * list
//! * destroy
//! * flush
//! * save
//! * restore
//!
//! Support the following type:
//! * BitmapIp
//! * BitmapIpMac
//! * BitmapPort
//! * HashIp
//! * HashIpMac
//! * HashIpMark
//! * HashIpPort
//! * HashIpPortIp
//! * HashIpPortNet
//! * HashMac
//! * HashNet
//! * HashNetIface
//! * HashNetNet
//! * HashNetPort
//! * HashNetPortNet
//! * ListSet
//!
//! # Example
//! ```rust,no_run
//!use std::net::IpAddr;
//!
//!use ipset::types::{AddOption, BitmapIp, EnvOption, Error, HashIp, IpDataType, ListResult};
//!use ipset::{IPSet, Session};
//!
//!fn test() -> Result<(), Error> {
//! let mut session: Session<HashIp> = Session::<HashIp>::new("test".to_string());
//! let ip: IpAddr = "192.168.3.1".parse()?;
//! session.create(|builder| builder.with_ipv6(false)?.build())?;
//!
//! let ret = session.add(ip, &[])?;
//! println!("add {}", ret);
//!
//! let exists = session.test(ip)?;
//! println!("test {}", exists);
//!
//! let ips = session.list()?;
//! match ips {
//! ListResult::Normal(ret) => {
//! println!("name:{}, type:{}, revision:{}, size_in_memory:{}, references:{}, entry_size:{}, header:{:?}",
//! ret.name, ret.typ, ret.revision, ret.size_in_memory, ret.references, ret.entry_size, ret.header)
//! }
//! ListResult::Terse(names) => {
//! println!("{:?}", names);
//! }
//! }
//! session.set_option(EnvOption::ListSetName);
//! let ips = session.list()?;
//! session.unset_option(EnvOption::ListSetName);
//! match ips {
//! ListResult::Normal(ret) => {
//! println!("name:{}, type:{}, revision:{}, size_in_memory:{}, references:{}, entry_size:{}, header:{:?}",
//! ret.name, ret.typ, ret.revision, ret.size_in_memory, ret.references, ret.entry_size, ret.header)
//! }
//! ListResult::Terse(names) => {
//! println!("{:?}", names);
//! }
//! }
//!
//! let ret = session.save("test.ipset".into())?;
//! println!("save {}", ret);
//!
//! let ret = session.del(ip)?;
//! println!("del {}", ret);
//!
//! let ret = session.flush()?;
//! println!("flush {}", ret);
//!
//! let ret = session.destroy()?;
//! println!("destroy {}", ret);
//!
//! Ok(())
//!}
//!
//! fn main() {
//!
//! if let Err(err) = test() {
//! println!("{:?}", err);
//! }
//!
//! let set = IPSet::new();
//! set.restore("test.ipset".to_string()).unwrap();
//! }
//! ```
pub use ;
pub use IPSet;