mirror of
https://github.com/reactos/reactos.git
synced 2024-06-23 14:31:47 +00:00
[NETSTAT] Add support for displaying UDP connections owning process
Our netstat can basically look like this now: https://twitter.com/HeisSpiter/status/1066430887208919040
This commit is contained in:
parent
fbdfe7bd40
commit
29c883e2a5
|
@ -496,23 +496,24 @@ VOID ShowTcpTable()
|
||||||
|
|
||||||
VOID ShowUdpTable()
|
VOID ShowUdpTable()
|
||||||
{
|
{
|
||||||
PMIB_UDPTABLE udpTable;
|
PMIB_UDPTABLE_OWNER_PID udpTable;
|
||||||
DWORD error, dwSize;
|
DWORD error, dwSize;
|
||||||
DWORD i;
|
DWORD i;
|
||||||
CHAR HostIp[HOSTNAMELEN], HostPort[PORTNAMELEN];
|
CHAR HostIp[HOSTNAMELEN], HostPort[PORTNAMELEN];
|
||||||
CHAR Host[ADDRESSLEN];
|
CHAR Host[ADDRESSLEN];
|
||||||
|
CHAR PID[64];
|
||||||
|
|
||||||
/* Get the table of UDP endpoints */
|
/* Get the table of UDP endpoints */
|
||||||
dwSize = 0;
|
dwSize = 0;
|
||||||
error = GetUdpTable(NULL, &dwSize, TRUE);
|
error = GetExtendedUdpTable(NULL, &dwSize, TRUE, AF_INET, UDP_TABLE_OWNER_PID, 0);
|
||||||
if (error != ERROR_INSUFFICIENT_BUFFER)
|
if (error != ERROR_INSUFFICIENT_BUFFER)
|
||||||
{
|
{
|
||||||
printf("Failed to snapshot UDP endpoints.\n");
|
printf("Failed to snapshot UDP endpoints.\n");
|
||||||
DoFormatMessage(error);
|
DoFormatMessage(error);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
udpTable = (PMIB_UDPTABLE) HeapAlloc(GetProcessHeap(), 0, dwSize);
|
udpTable = (PMIB_UDPTABLE_OWNER_PID) HeapAlloc(GetProcessHeap(), 0, dwSize);
|
||||||
error = GetUdpTable(udpTable, &dwSize, TRUE);
|
error = GetExtendedUdpTable(udpTable, &dwSize, TRUE, AF_INET, UDP_TABLE_OWNER_PID, 0);
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
printf("Failed to snapshot UDP endpoints table.\n");
|
printf("Failed to snapshot UDP endpoints table.\n");
|
||||||
|
@ -531,7 +532,16 @@ VOID ShowUdpTable()
|
||||||
|
|
||||||
sprintf(Host, "%s:%s", HostIp, HostPort);
|
sprintf(Host, "%s:%s", HostIp, HostPort);
|
||||||
|
|
||||||
_tprintf(_T(" %-6s %-22s %-22s\n"), _T("UDP"), Host, _T("*:*"));
|
if (bDoShowProcessId)
|
||||||
|
{
|
||||||
|
sprintf(PID, "%ld", udpTable->table[i].dwOwningPid);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PID[0] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
_tprintf(_T(" %-6s %-22s %-34s %s\n"), _T("UDP"), Host, _T("*:*"), PID);
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, udpTable);
|
HeapFree(GetProcessHeap(), 0, udpTable);
|
||||||
|
|
Loading…
Reference in a new issue