| 185 | } |
| 186 | |
| 187 | std::string socket_state(const SocketInfo& s) { |
| 188 | switch (s.state) { |
| 189 | case SocketInfo::S_ESTABLISHED: return "ESTABLISHED"; |
| 190 | case SocketInfo::S_SYN_SENT: return "SYN_SENT"; |
| 191 | case SocketInfo::S_SYN_RECV: return "SYN_RECV"; |
| 192 | case SocketInfo::S_FIN_WAIT1: return "FIN_WAIT1"; |
| 193 | case SocketInfo::S_FIN_WAIT2: return "FIN_WAIT2"; |
| 194 | case SocketInfo::S_TIME_WAIT: return "TIME_WAIT"; |
| 195 | case SocketInfo::S_CLOSE: return "CLOSE"; |
| 196 | case SocketInfo::S_CLOSE_WAIT: return "CLOSE_WAIT"; |
| 197 | case SocketInfo::S_LAST_ACK: return "LAST_ACK"; |
| 198 | case SocketInfo::S_LISTEN: return "LISTEN"; |
| 199 | case SocketInfo::S_CLOSING: return "CLOSING"; |
| 200 | case SocketInfo::S_NEW_SYN_RECV: return "NEW_SYN_RECV"; |
| 201 | default: return "UNKNOWN"; |
| 202 | } |
| 203 | } |
| 204 | |
| 205 | std::string ipv4(const std::array<u8, 16>& a) { |
| 206 | return fmt::format("{}.{}.{}.{}", a[0], a[1], a[2], a[3]); |