14 releases (7 breaking)
0.8.0 | Oct 8, 2024 |
---|---|
0.7.1 | May 8, 2024 |
0.6.0 | Dec 7, 2023 |
0.5.0 | Oct 13, 2023 |
0.3.0 | Jan 30, 2023 |
#525 in Network programming
56KB
1K
SLoC
IPSet
A library wrapper for libipset
.
Support the following options:
- sorted ->
EnvOption::Sorted
- exist ->
EnvOption::Exist
- quiet ->
EnvOption::Quiet
- resolve ->
EnvOption::Resolve
- name ->
EnvOption::ListSetName
- terse ->
EnvOption::ListHeader
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
use std::net::IpAddr;
use ipset::{Error, HashIp, IPSet, Session};
fn main() -> Result<(), Error> {
let mut session: Session<HashIp> = Session::<HashIp>::new("test".to_string());
let ip: IpAddr = "192.168.3.1".parse().unwrap();
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()?;
for ip in ips {
println!("list {}", ip);
}
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);
let set = IPSet::new();
set.restore("test.ipset")?;
Ok(())
}
Dependencies
~0.4–3MB
~62K SLoC