1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
use libc; use std::io; #[repr(C)] pub union ifr_ifru { pub ifr_addr: libc::sockaddr, pub ifr_dstaddr: libc::sockaddr, pub ifr_broadaddr: libc::sockaddr, pub ifr_netmask: libc::sockaddr, pub ifr_hwaddr: libc::sockaddr, pub ifr_flags: libc::c_short, pub ifr_ifindex: libc::c_int, pub ifr_metric: libc::c_int, pub ifr_mtu: libc::c_int, pub ifr_map: ::ifmap, pub ifr_slave: [libc::c_char; libc::IFNAMSIZ], pub ifr_newname: [libc::c_char; libc::IFNAMSIZ], pub ifr_data: *mut libc::c_char, } #[repr(C)] pub struct ifreq { pub ifr_name: [u8; libc::IFNAMSIZ], pub ifr_ifru: ifr_ifru, } impl ::ifreq { pub fn set_name(&mut self, name: &str) -> io::Result<()> { set_name!(self.ifr_name, name) } pub fn get_name(&self) -> io::Result<String> { get_name!(self.ifr_name) } pub fn get_flags(&self) -> libc::c_short { unsafe { self.ifr_ifru.ifr_flags } } pub fn set_flags(&mut self, flags: libc::c_short) { self.ifr_ifru.ifr_flags = flags; } }