Skip to content

Commit 2b09158

Browse files
authored
Merge pull request #23 from sfcompute/khoa/network-ip-prefix
add ip prefix to network collection
2 parents bd6e741 + fe985a1 commit 2b09158

4 files changed

Lines changed: 16 additions & 0 deletions

File tree

src/domain/entities.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,8 @@ pub struct NetworkInterface {
268268
pub mac: String,
269269
/// IP address
270270
pub ip: String,
271+
/// IP prefix
272+
pub prefix: String,
271273
/// Interface speed
272274
pub speed: Option<String>,
273275
/// Interface type

src/domain/legacy_compat.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@ impl From<crate::NetworkInterface> for new::NetworkInterface {
428428
name: legacy.name,
429429
mac: legacy.mac,
430430
ip: legacy.ip,
431+
prefix: legacy.prefix,
431432
speed: legacy.speed,
432433
type_: legacy.type_,
433434
vendor: legacy.vendor,
@@ -444,6 +445,7 @@ impl From<new::NetworkInterface> for crate::NetworkInterface {
444445
name: new_iface.name,
445446
mac: new_iface.mac,
446447
ip: new_iface.ip,
448+
prefix: new_iface.prefix,
447449
speed: new_iface.speed,
448450
type_: new_iface.type_,
449451
vendor: new_iface.vendor,

src/domain/parsers/network.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ pub fn parse_ip_output(ip_output: &str) -> Result<Vec<NetworkInterface>, String>
2929
name: "eth0".to_string(),
3030
mac: "00:00:00:00:00:00".to_string(),
3131
ip: "192.168.1.100".to_string(),
32+
prefix: "24".to_string(),
3233
speed: Some("1000 Mbps".to_string()),
3334
type_: "Ethernet".to_string(),
3435
vendor: "Unknown".to_string(),
@@ -83,6 +84,7 @@ pub fn parse_macos_network_info(ifconfig_output: &str) -> Result<Vec<NetworkInte
8384
name: name.to_string(),
8485
mac: "Unknown".to_string(),
8586
ip: "Unknown".to_string(),
87+
prefix: "Unknown".to_string(),
8688
speed: None,
8789
type_: interface_type,
8890
vendor: vendor.to_string(),

src/lib.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,8 @@ pub struct NetworkInterface {
342342
pub mac: String,
343343
/// IP address.
344344
pub ip: String,
345+
/// IP prefix.
346+
pub prefix: String,
345347
/// Interface speed.
346348
pub speed: Option<String>,
347349
/// Interface type.
@@ -2621,6 +2623,7 @@ impl ServerInfo {
26212623
name: name.clone(),
26222624
mac: data.get("mac").cloned().unwrap_or("Unknown".to_string()),
26232625
ip: data.get("ip").cloned().unwrap_or("Unknown".to_string()),
2626+
prefix: data.get("prefix").cloned().unwrap_or("Unknown".to_string()),
26242627
speed: Self::estimate_macos_interface_speed(&name, &interface_type),
26252628
type_: interface_type,
26262629
vendor: vendor.to_string(),
@@ -2684,6 +2687,10 @@ impl ServerInfo {
26842687
.get("ip")
26852688
.cloned()
26862689
.unwrap_or("Unknown".to_string()),
2690+
prefix: ifconfig_info
2691+
.get("prefix")
2692+
.cloned()
2693+
.unwrap_or("Unknown".to_string()),
26872694
speed: Self::estimate_macos_interface_speed(name, &interface_type),
26882695
type_: interface_type,
26892696
vendor: vendor.to_string(),
@@ -2900,12 +2907,14 @@ impl ServerInfo {
29002907

29012908
let mac = iface["address"].as_str().unwrap_or("").to_string();
29022909
let mut ip = String::new();
2910+
let mut prefix: String = String::new();
29032911

29042912
// Get IP address
29052913
if let Some(addr_info) = iface["addr_info"].as_array() {
29062914
for addr in addr_info {
29072915
if addr["family"].as_str() == Some("inet") {
29082916
ip = addr["local"].as_str().unwrap_or("").to_string();
2917+
prefix = addr["prefixlen"].as_str().unwrap_or("").to_string();
29092918
break;
29102919
}
29112920
}
@@ -2950,6 +2959,7 @@ impl ServerInfo {
29502959
name: name.to_string(),
29512960
mac,
29522961
ip,
2962+
prefix,
29532963
speed,
29542964
type_: iface["link_type"].as_str().unwrap_or("").to_string(),
29552965
vendor,

0 commit comments

Comments
 (0)