use std::net::IpAddr;
use super::{
StateAllocSpiRequest, StateDeleteRequest, StateFlushRequest, StateGetDumpRequest,
StateGetRequest, StateGetSadInfoRequest, StateModifyRequest,
};
use crate::Handle;
#[non_exhaustive]
pub struct StateHandle(Handle);
impl StateHandle {
pub fn new(handle: Handle) -> Self {
StateHandle(handle)
}
pub fn add(&self, src_addr: IpAddr, dst_addr: IpAddr) -> StateModifyRequest {
StateModifyRequest::new(self.0.clone(), false, src_addr, dst_addr)
}
pub fn alloc_spi(&self, src_addr: IpAddr, dst_addr: IpAddr) -> StateAllocSpiRequest {
StateAllocSpiRequest::new(self.0.clone(), src_addr, dst_addr)
}
pub fn delete(&self, src_addr: IpAddr, dst_addr: IpAddr) -> StateDeleteRequest {
StateDeleteRequest::new(self.0.clone(), src_addr, dst_addr)
}
pub fn flush(&self) -> StateFlushRequest {
StateFlushRequest::new(self.0.clone())
}
pub fn get(&self, src_addr: IpAddr, dst_addr: IpAddr) -> StateGetRequest {
StateGetRequest::new(self.0.clone(), src_addr, dst_addr)
}
pub fn get_dump(&self) -> StateGetDumpRequest {
StateGetDumpRequest::new(self.0.clone())
}
pub fn get_sadinfo(&self) -> StateGetSadInfoRequest {
StateGetSadInfoRequest::new(self.0.clone())
}
pub fn update(&self, src_addr: IpAddr, dst_addr: IpAddr) -> StateModifyRequest {
StateModifyRequest::new(self.0.clone(), true, src_addr, dst_addr)
}
}