diff options
| author | Emīls <emils@mullvad.net> | 2021-01-08 05:41:30 +0000 |
|---|---|---|
| committer | Emīls <emils@mullvad.net> | 2021-01-12 10:24:38 +0000 |
| commit | f016f7dbec2b9feafb7e220ebcb6c203ad2b5786 (patch) | |
| tree | 77750a9c0a6927dc6d77300e71b2c13a40024c85 | |
| parent | 208d99cc9d3ddc08149c152458637a2955aec411 (diff) | |
| download | mullvadvpn-f016f7dbec2b9feafb7e220ebcb6c203ad2b5786.tar.xz mullvadvpn-f016f7dbec2b9feafb7e220ebcb6c203ad2b5786.zip | |
Add kernel, wg and nm versions
| -rw-r--r-- | CHANGELOG.md | 2 | ||||
| -rw-r--r-- | Cargo.lock | 1 | ||||
| -rw-r--r-- | mullvad-platform-metadata/Cargo.toml | 1 | ||||
| -rw-r--r-- | mullvad-platform-metadata/src/linux.rs | 28 |
4 files changed, 31 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index cda39a08d0..f9b6278deb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,8 @@ Line wrap the file at 100 chars. Th #### Linux - Improved compatiblitiy with newer versions of systemd-resolved. +- Add version data to problem reports for the following software: the kernel, NetworkManager, + WireGuard kernel module. ### Fixed #### Linux diff --git a/Cargo.lock b/Cargo.lock index 1232303077..66de6efc0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1327,6 +1327,7 @@ name = "mullvad-platform-metadata" version = "0.1.0" dependencies = [ "rs-release", + "talpid-dbus", ] [[package]] diff --git a/mullvad-platform-metadata/Cargo.toml b/mullvad-platform-metadata/Cargo.toml index d1ba2f6a14..fa33efb362 100644 --- a/mullvad-platform-metadata/Cargo.toml +++ b/mullvad-platform-metadata/Cargo.toml @@ -10,3 +10,4 @@ publish = false [target.'cfg(target_os = "linux")'.dependencies] rs-release = "0.1.7" +talpid-dbus = { path = "../talpid-dbus" } diff --git a/mullvad-platform-metadata/src/linux.rs b/mullvad-platform-metadata/src/linux.rs index 484d2eaaf8..573426104f 100644 --- a/mullvad-platform-metadata/src/linux.rs +++ b/mullvad-platform-metadata/src/linux.rs @@ -58,5 +58,31 @@ fn parse_lsb_release() -> Option<String> { } pub fn extra_metadata() -> impl Iterator<Item = (String, String)> { - std::iter::empty() + [kernel_version, nm_version, wg_version] + .iter() + .filter_map(|f| f()) +} + +/// `uname -r` outputs a single line containing only the kernel version: +/// > 5.9.15 +fn kernel_version() -> Option<(String, String)> { + let kernel = command_stdout_lossy("uname", &["-r"])?; + Some(("kernel".to_string(), kernel)) +} + +/// NetworkManager's version is returned as a numeric version string +/// > 1.26.0 +fn nm_version() -> Option<(String, String)> { + let nm = talpid_dbus::network_manager::NetworkManager::new().ok()?; + Some(("nm".to_string(), nm.version().ok()?)) +} + +/// `/sys/module/wireguard/version` contains only a numeric version string +/// > 1.0.0 +fn wg_version() -> Option<(String, String)> { + let wireguard_version = std::fs::read_to_string("/sys/module/wireguard/version") + .ok()? + .trim() + .to_string(); + Some(("wireguard".to_string(), wireguard_version)) } |
