Boilerplate for tokio TunInterface
This commit is contained in:
parent
309db8085d
commit
12e53a4b2a
1 changed files with 80 additions and 0 deletions
|
|
@ -31,4 +31,84 @@ impl TunInterface {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn mtu(&self) -> io::Result<i32> {
|
||||||
|
loop {
|
||||||
|
let mut guard = self.inner.readable().await?;
|
||||||
|
match guard.try_io(|inner| inner.get_ref().mtu()) {
|
||||||
|
Ok(result) => return result,
|
||||||
|
Err(_would_block) => continue,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn set_mtu(&self, mtu: i32) -> io::Result<()> {
|
||||||
|
loop {
|
||||||
|
let mut guard = self.inner.readable().await?;
|
||||||
|
match guard.try_io(|inner| inner.get_ref().set_mtu(mtu)) {
|
||||||
|
Ok(result) => return result,
|
||||||
|
Err(_would_block) => continue,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn name(&self) -> io::Result<String> {
|
||||||
|
loop {
|
||||||
|
let mut guard = self.inner.readable().await?;
|
||||||
|
match guard.try_io(|inner| inner.get_ref().name()) {
|
||||||
|
Ok(result) => return result,
|
||||||
|
Err(_would_block) => continue,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn set_name(&self, name: &str) -> io::Result<()> {
|
||||||
|
loop {
|
||||||
|
let mut guard = self.inner.readable().await?;
|
||||||
|
match guard.try_io(|inner| inner.get_ref().set_name(name)) {
|
||||||
|
Ok(result) => return result,
|
||||||
|
Err(_would_block) => continue,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn netmask(&self) -> io::Result<std::net::Ipv4Addr> {
|
||||||
|
loop {
|
||||||
|
let mut guard = self.inner.readable().await?;
|
||||||
|
match guard.try_io(|inner| inner.get_ref().netmask()) {
|
||||||
|
Ok(result) => return result,
|
||||||
|
Err(_would_block) => continue,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn set_netmask(&self, netmask: std::net::Ipv4Addr) -> io::Result<()> {
|
||||||
|
loop {
|
||||||
|
let mut guard = self.inner.readable().await?;
|
||||||
|
match guard.try_io(|inner| inner.get_ref().set_netmask(netmask)) {
|
||||||
|
Ok(result) => return result,
|
||||||
|
Err(_would_block) => continue,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn ipv4_addr(&self) -> io::Result<std::net::Ipv4Addr> {
|
||||||
|
loop {
|
||||||
|
let mut guard = self.inner.readable().await?;
|
||||||
|
match guard.try_io(|inner| inner.get_ref().ipv4_addr()) {
|
||||||
|
Ok(result) => return result,
|
||||||
|
Err(_would_block) => continue,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn set_ipv4_addr(&self, addr: std::net::Ipv4Addr) -> io::Result<()> {
|
||||||
|
loop {
|
||||||
|
let mut guard = self.inner.readable().await?;
|
||||||
|
match guard.try_io(|inner| inner.get_ref().set_ipv4_addr(addr)) {
|
||||||
|
Ok(result) => return result,
|
||||||
|
Err(_would_block) => continue,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue