fix ipv6 showing

This commit is contained in:
Özgür Kesim 2022-01-31 17:35:56 +01:00
parent af71cc3579
commit 0de57f2e49
2 changed files with 16 additions and 4 deletions

View File

@ -5,6 +5,8 @@ use std::default::Default;
pub struct LocalIp {
pub icon: String,
pub enabled: bool,
pub show4: bool,
pub show6: bool,
pub delay: f64,
pub interface: String,
}
@ -14,6 +16,8 @@ impl Default for LocalIp {
LocalIp {
icon: String::from(""),
enabled: false,
show4: true,
show6: false,
delay: 120.0,
interface: String::from("wlan0"),
}

View File

@ -5,8 +5,8 @@ pub async fn get_local_ip() -> ThreadsData {
let addrs = nix::ifaddrs::getifaddrs().unwrap();
let mut ip = String::new();
let mut ip6 = String::new();
let mut found4 = false;
let mut found6 = false;
let mut found4 = !CONFIG.local_ip.show4;
let mut found6 = !CONFIG.local_ip.show4;
for ifaddr in addrs {
match ifaddr.address {
Some(address) => {
@ -15,12 +15,20 @@ pub async fn get_local_ip() -> ThreadsData {
match address.family() {
nix::sys::socket::AddressFamily::Inet => {
if found4 { continue; }
ip = address.to_string().split(':').next().unwrap().to_string();
ip = if CONFIG.local_ip.show4 {
address.to_string().split(':').next().unwrap().to_string()
} else {
String::from(" ")
};
found4 = true;
}
nix::sys::socket::AddressFamily::Inet6 => {
if found6 { continue; }
ip6 = address.to_string().rsplit_once(':').unwrap().0.to_string();
ip6 = if CONFIG.local_ip.show6 {
address.to_string().rsplit_once(':').unwrap().0.to_string()
} else {
String::from(" ")
};
found6 = true;
}
_ => continue,