diff options
Diffstat (limited to 'src/os/macos.rs')
-rw-r--r-- | src/os/macos.rs | 19 |
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, + } } |