summaryrefslogtreecommitdiffstats
path: root/src/os/macos.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/macos.rs')
-rw-r--r--src/os/macos.rs19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/os/macos.rs b/src/os/macos.rs
index cf68d04..68b4bad 100644
--- a/src/os/macos.rs
+++ b/src/os/macos.rs
@@ -1,6 +1,7 @@
use ::std::collections::HashMap;
use crate::network::Connection;
+use crate::OpenSockets;
use super::lsof_utils;
use std::net::SocketAddr;
@@ -14,22 +15,28 @@ struct RawConnection {
process_name: String,
}
-pub(crate) fn get_open_sockets() -> HashMap<Connection, String> {
+pub(crate) fn get_open_sockets() -> OpenSockets {
let mut open_sockets = HashMap::new();
+ let mut connections_vec = std::vec::Vec::new();
let connections = lsof_utils::get_connections();
for raw_connection in connections {
let protocol = raw_connection.get_protocol();
- let ip_address = raw_connection.get_ip_address();
+ let remote_ip = raw_connection.get_remote_ip();
+ let local_ip = raw_connection.get_local_ip();
let remote_port = raw_connection.get_remote_port();
let local_port = raw_connection.get_local_port();
- let socket_addr = SocketAddr::new(ip_address, remote_port);
- let connection = Connection::new(socket_addr, local_port, protocol).unwrap();
+ let socket_addr = SocketAddr::new(remote_ip, remote_port);
+ let connection = Connection::new(socket_addr, local_ip, local_port, protocol).unwrap();
- open_sockets.insert(connection, raw_connection.process_name.clone());
+ open_sockets.insert(connection.local_socket, raw_connection.process_name.clone());
+ connections_vec.push(connection);
}
- return open_sockets;
+ OpenSockets {
+ sockets_to_procs: open_sockets,
+ connections: connections_vec,
+ }
}