src/tools/procfs.rs: refactor read_proc_net_route() and read_proc_net_ipv6_route()
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
This commit is contained in:
parent
eb46c3d1ec
commit
ec8db837fb
@ -302,7 +302,6 @@ pub struct ProcFsNetRoute {
|
|||||||
pub fn read_proc_net_route() -> Result<Vec<ProcFsNetRoute>, Error> {
|
pub fn read_proc_net_route() -> Result<Vec<ProcFsNetRoute>, Error> {
|
||||||
let path = "/proc/net/route";
|
let path = "/proc/net/route";
|
||||||
let file = OpenOptions::new().read(true).open(&path)?;
|
let file = OpenOptions::new().read(true).open(&path)?;
|
||||||
let err = "Error while parsing '/proc/net/route";
|
|
||||||
|
|
||||||
let mut result = Vec::new();
|
let mut result = Vec::new();
|
||||||
for line in BufReader::new(&file).lines().skip(1) {
|
for line in BufReader::new(&file).lines().skip(1) {
|
||||||
@ -310,13 +309,12 @@ pub fn read_proc_net_route() -> Result<Vec<ProcFsNetRoute>, Error> {
|
|||||||
if content.is_empty() { continue; }
|
if content.is_empty() { continue; }
|
||||||
let mut iter = content.split_whitespace();
|
let mut iter = content.split_whitespace();
|
||||||
|
|
||||||
let iface = iter.next().ok_or(format_err!("{}", err))?;
|
let mut next = || iter.next()
|
||||||
let dest = iter.next().ok_or(format_err!("{}", err))?;
|
.ok_or(format_err!("Error while parsing '{}'", path));
|
||||||
let gateway = iter.next().ok_or(format_err!("{}", err))?;
|
|
||||||
for _ in 0..3 { iter.next(); }
|
let (iface, dest, gateway) = (next()?, next()?, next()?);
|
||||||
let metric = iter.next().ok_or(format_err!("{}", err))?;
|
for _ in 0..3 { next()?; }
|
||||||
let mask = iter.next().ok_or(format_err!("{}", err))?;
|
let (metric, mask, mtu) = (next()?, next()?, next()?);
|
||||||
let mtu = iter.next().ok_or(format_err!("{}", err))?;
|
|
||||||
|
|
||||||
result.push(ProcFsNetRoute {
|
result.push(ProcFsNetRoute {
|
||||||
dest: hexstr_to_ipv4addr(dest)?,
|
dest: hexstr_to_ipv4addr(dest)?,
|
||||||
@ -380,7 +378,6 @@ pub struct ProcFsNetIPv6Route {
|
|||||||
pub fn read_proc_net_ipv6_route() -> Result<Vec<ProcFsNetIPv6Route>, Error> {
|
pub fn read_proc_net_ipv6_route() -> Result<Vec<ProcFsNetIPv6Route>, Error> {
|
||||||
let path = "/proc/net/ipv6_route";
|
let path = "/proc/net/ipv6_route";
|
||||||
let file = OpenOptions::new().read(true).open(&path)?;
|
let file = OpenOptions::new().read(true).open(&path)?;
|
||||||
let err = "Error while parsing '/proc/net/ipv6_route";
|
|
||||||
|
|
||||||
let mut result = Vec::new();
|
let mut result = Vec::new();
|
||||||
for line in BufReader::new(&file).lines() {
|
for line in BufReader::new(&file).lines() {
|
||||||
@ -388,17 +385,18 @@ pub fn read_proc_net_ipv6_route() -> Result<Vec<ProcFsNetIPv6Route>, Error> {
|
|||||||
if content.is_empty() { continue; }
|
if content.is_empty() { continue; }
|
||||||
let mut iter = content.split_whitespace();
|
let mut iter = content.split_whitespace();
|
||||||
|
|
||||||
let dest = iter.next().ok_or(format_err!("{}", err))?;
|
let mut next = || iter.next()
|
||||||
let dest_prefix_len = iter.next().ok_or(format_err!("{}", err))?;
|
.ok_or(format_err!("Error while parsing '{}'", path));
|
||||||
for _ in 0..2 { iter.next(); }
|
|
||||||
let nexthop = iter.next().ok_or(format_err!("{}", err))?;
|
let (dest, prefix) = (next()?, next()?);
|
||||||
let metric = iter.next().ok_or(format_err!("{}", err))?;
|
for _ in 0..2 { next()?; }
|
||||||
for _ in 0..3 { iter.next(); }
|
let (nexthop, metric) = (next()?, next()?);
|
||||||
let iface = iter.next().ok_or(format_err!("{}", err))?;
|
for _ in 0..3 { next()?; }
|
||||||
|
let iface = next()?;
|
||||||
|
|
||||||
result.push(ProcFsNetIPv6Route {
|
result.push(ProcFsNetIPv6Route {
|
||||||
dest: hexstr_to_ipv6addr(dest)?,
|
dest: hexstr_to_ipv6addr(dest)?,
|
||||||
prefix: hexstr_to_u8(dest_prefix_len)?,
|
prefix: hexstr_to_u8(prefix)?,
|
||||||
gateway: hexstr_to_ipv6addr(nexthop)?,
|
gateway: hexstr_to_ipv6addr(nexthop)?,
|
||||||
metric: hexstr_to_u32(metric)?,
|
metric: hexstr_to_u32(metric)?,
|
||||||
iface: iface.to_string(),
|
iface: iface.to_string(),
|
||||||
|
Loading…
Reference in New Issue
Block a user