netlink: use bool for condition flags

Minor improvements for netlink by using bool for condition flags.

Signed-off-by: Liu Jiang <gerry@linux.alibaba.com>
This commit is contained in:
Liu Jiang 2020-05-31 02:00:10 +08:00
parent 43db1284e9
commit 6995178903

View File

@ -44,8 +44,7 @@ macro_rules! sl {
}; };
} }
// define the struct, const, etc needed by // define the struct, const, etc needed by netlink operations
// netlink operations
pub type __s8 = libc::c_char; pub type __s8 = libc::c_char;
pub type __u8 = libc::c_uchar; pub type __u8 = libc::c_uchar;
@ -1248,7 +1247,6 @@ impl RtnlHandle {
}) })
} }
// implement update{interface,routes}, list{interface, routes}
fn send_message(&self, data: &mut [u8]) -> Result<()> { fn send_message(&self, data: &mut [u8]) -> Result<()> {
let mut sa: libc::sockaddr_nl = unsafe { mem::zeroed::<libc::sockaddr_nl>() }; let mut sa: libc::sockaddr_nl = unsafe { mem::zeroed::<libc::sockaddr_nl>() };
@ -1340,22 +1338,22 @@ impl RtnlHandle {
let mut msglen = buf.len() as u32; let mut msglen = buf.len() as u32;
let mut nlh = buf.as_ptr() as *const nlmsghdr; let mut nlh = buf.as_ptr() as *const nlmsghdr;
let mut dump_intr = 0; let mut dump_intr = false;
let mut done = 0; let mut done = false;
while NLMSG_OK!(nlh, msglen) { while NLMSG_OK!(nlh, msglen) {
// Make sure we are interested in the message first.
if (*nlh).nlmsg_pid != self.local.nl_pid || (*nlh).nlmsg_seq != self.dump { if (*nlh).nlmsg_pid != self.local.nl_pid || (*nlh).nlmsg_seq != self.dump {
nlh = NLMSG_NEXT!(nlh, msglen); nlh = NLMSG_NEXT!(nlh, msglen);
continue; continue;
} }
// got one nlmsg
if (*nlh).nlmsg_flags & NLM_F_DUMP_INTR > 0 { if (*nlh).nlmsg_flags & NLM_F_DUMP_INTR > 0 {
dump_intr = 1; dump_intr = true;
} }
if (*nlh).nlmsg_type == NLMSG_DONE { if (*nlh).nlmsg_type == NLMSG_DONE {
done = 1; done = true;
} }
if (*nlh).nlmsg_type == NLMSG_ERROR { if (*nlh).nlmsg_type == NLMSG_ERROR {
@ -1375,7 +1373,7 @@ impl RtnlHandle {
lv.push(nlh); lv.push(nlh);
if done == 1 { if done {
break; break;
} }
@ -1384,9 +1382,9 @@ impl RtnlHandle {
slv.push(buf); slv.push(buf);
if done == 1 { if done {
if dump_intr == 1 { if dump_intr {
info!(sl!(), "dump interuppted, maybe incomplete"); info!(sl!(), "dump interrupted, maybe incomplete");
} }
break; break;
@ -1412,7 +1410,7 @@ impl RtnlHandle {
let (_sav, av) = self.dump_all_addresses(0)?; let (_sav, av) = self.dump_all_addresses(0)?;
// got all the link message and address message // got all the link message and address message
// into lv and av repectively, parse attributes // into lv and av respectively, parse attributes
for link in &lv { for link in &lv {
let nlh: *const nlmsghdr = *link; let nlh: *const nlmsghdr = *link;
let ifi: *const ifinfomsg = NLMSG_DATA!(nlh) as *const ifinfomsg; let ifi: *const ifinfomsg = NLMSG_DATA!(nlh) as *const ifinfomsg;
@ -1707,7 +1705,7 @@ impl RtnlHandle {
); );
} }
// goog message // good message
if answer { if answer {
// need to copy out data // need to copy out data
@ -2474,6 +2472,7 @@ impl RtnlHandle {
Ok(rt.clone()) Ok(rt.clone())
} }
pub fn handle_localhost(&mut self) -> Result<()> { pub fn handle_localhost(&mut self) -> Result<()> {
let ifi = self.find_link_by_name("lo")?; let ifi = self.find_link_by_name("lo")?;