ReactOS 0.4.15-dev-6047-gb29e82d
netstat.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  MIB_TCPEXROW
 
struct  MIB_TCPEXTABLE
 
struct  MIB_UDPEXROW
 
struct  MIB_UDPEXTABLE
 

Macros

#define HOSTNAMELEN   256
 
#define PORTNAMELEN   256
 
#define ADDRESSLEN   HOSTNAMELEN+PORTNAMELEN
 

Typedefs

typedef struct MIB_TCPEXROWPMIB_TCPEXROW
 
typedef struct MIB_TCPEXTABLEPMIB_TCPEXTABLE
 
typedef struct MIB_UDPEXROWPMIB_UDPEXROW
 
typedef struct MIB_UDPEXTABLEPMIB_UDPEXTABLE
 

Functions

VOID ShowIpStatistics (VOID)
 
VOID ShowIcmpStatistics (VOID)
 
VOID ShowTcpStatistics (VOID)
 
VOID ShowUdpStatistics (VOID)
 
VOID ShowEthernetStatistics (VOID)
 
BOOL ShowTcpTable (VOID)
 
BOOL ShowUdpTable (VOID)
 
PCHAR GetPortName (UINT Port, PCSTR Proto, CHAR Name[], INT NameLen)
 
PCHAR GetIpHostName (BOOL Local, UINT IpAddr, CHAR Name[], INT NameLen)
 

Variables

BOOL bNoOptions = FALSE
 
BOOL bDoShowAllCons = FALSE
 
BOOL bDoShowProcName = FALSE
 
BOOL bDoShowEthStats = FALSE
 
BOOL bDoShowNumbers = FALSE
 
BOOL bDoShowProtoCons = FALSE
 
BOOL bDoShowRouteTable = FALSE
 
BOOL bDoShowProtoStats = FALSE
 
BOOL bDoShowProcessId = FALSE
 
BOOL bDoDispSeqComp = FALSE
 
BOOL bLoopOutput = FALSE
 

Macro Definition Documentation

◆ ADDRESSLEN

#define ADDRESSLEN   HOSTNAMELEN+PORTNAMELEN

Definition at line 5 of file netstat.h.

◆ HOSTNAMELEN

#define HOSTNAMELEN   256

Definition at line 3 of file netstat.h.

◆ PORTNAMELEN

#define PORTNAMELEN   256

Definition at line 4 of file netstat.h.

Typedef Documentation

◆ PMIB_TCPEXROW

◆ PMIB_TCPEXTABLE

◆ PMIB_UDPEXROW

◆ PMIB_UDPEXTABLE

Function Documentation

◆ GetIpHostName()

PCHAR GetIpHostName ( BOOL  Local,
UINT  IpAddr,
CHAR  Name[],
INT  NameLen 
)

Definition at line 562 of file netstat.c.

563{
564// struct hostent *phostent;
565 UINT nIpAddr;
566
567 /* display dotted decimal */
568 nIpAddr = htonl(IpAddr);
569 if (bDoShowNumbers) {
570 sprintf(Name, "%d.%d.%d.%d",
571 (nIpAddr >> 24) & 0xFF,
572 (nIpAddr >> 16) & 0xFF,
573 (nIpAddr >> 8) & 0xFF,
574 (nIpAddr) & 0xFF);
575 return Name;
576 }
577
578 Name[0] = '\0';
579
580 /* try to resolve the name */
581 if (!IpAddr) {
582 if (!Local) {
583 sprintf(Name, "%d.%d.%d.%d",
584 (nIpAddr >> 24) & 0xFF,
585 (nIpAddr >> 16) & 0xFF,
586 (nIpAddr >> 8) & 0xFF,
587 (nIpAddr) & 0xFF);
588 } else {
589 if (gethostname(Name, NameLen) != 0)
591 }
592 } else if (IpAddr == 0x0100007f) {
593 if (Local) {
594 if (gethostname(Name, NameLen) != 0)
596 } else {
597 strncpy(Name, "localhost", 10);
598 }
599// } else if (phostent = gethostbyaddr((char*)&ipaddr, sizeof(nipaddr), PF_INET)) {
600// strcpy(name, phostent->h_name);
601 } else {
602 sprintf(Name, "%d.%d.%d.%d",
603 ((nIpAddr >> 24) & 0x000000FF),
604 ((nIpAddr >> 16) & 0x000000FF),
605 ((nIpAddr >> 8) & 0x000000FF),
606 ((nIpAddr) & 0x000000FF));
607 }
608 return Name;
609}
char * strncpy(char *DstString, const char *SrcString, ACPI_SIZE Count)
Definition: utclib.c:427
struct NameRec_ * Name
Definition: cdprocs.h:460
INT WSAAPI gethostname(OUT char FAR *name, IN INT namelen)
Definition: getxbyxx.c:397
#define htonl(x)
Definition: module.h:214
#define sprintf(buf, format,...)
Definition: sprintf.c:55
unsigned int UINT
Definition: ndis.h:50
VOID DoFormatMessage(DWORD ErrorCode)
Definition: netstat.c:55
BOOL bDoShowNumbers
Definition: netstat.h:12
int PASCAL FAR WSAGetLastError(void)
Definition: dllmain.c:112

Referenced by ShowTcpTable(), and ShowUdpTable().

◆ GetPortName()

PCHAR GetPortName ( UINT  Port,
PCSTR  Proto,
CHAR  Name[],
INT  NameLen 
)

Definition at line 541 of file netstat.c.

542{
543 struct servent *pServent;
544
545 if (bDoShowNumbers)
546 {
547 sprintf(Name, "%d", htons((WORD)Port));
548 return Name;
549 }
550 /* Try to translate to a name */
551 if ((pServent = getservbyport(Port, Proto)))
552 strcpy(Name, pServent->s_name );
553 else
554 sprintf(Name, "%d", htons((WORD)Port));
555 return Name;
556}
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
unsigned short WORD
Definition: ntddk_ex.h:93
PSERVENT WSAAPI getservbyport(IN int port, IN const char FAR *proto)
Definition: getxbyxx.c:431
CPPORT Port[4]
Definition: headless.c:35
#define htons(x)
Definition: module.h:215
char * s_name
Definition: winsock.h:159

Referenced by ShowTcpTable(), and ShowUdpTable().

◆ ShowEthernetStatistics()

VOID ShowEthernetStatistics ( VOID  )

Definition at line 371 of file netstat.c.

372{
373 PMIB_IFTABLE pIfTable;
374 DWORD dwSize = 0;
375 DWORD dwRetVal = 0;
376
377 pIfTable = (MIB_IFTABLE*) HeapAlloc(GetProcessHeap(), 0, sizeof(MIB_IFTABLE));
378
379 if (GetIfTable(pIfTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER)
380 {
381 HeapFree(GetProcessHeap(), 0, pIfTable);
382 pIfTable = (MIB_IFTABLE*) HeapAlloc(GetProcessHeap(), 0, dwSize);
383
384 if ((dwRetVal = GetIfTable(pIfTable, &dwSize, 0)) == NO_ERROR)
385 {
389 pIfTable->table[0].dwInOctets, pIfTable->table[0].dwOutOctets);
391 pIfTable->table[0].dwInUcastPkts, pIfTable->table[0].dwOutUcastPkts);
393 pIfTable->table[0].dwInNUcastPkts, pIfTable->table[0].dwOutNUcastPkts);
395 pIfTable->table[0].dwInDiscards, pIfTable->table[0].dwOutDiscards);
397 pIfTable->table[0].dwInErrors, pIfTable->table[0].dwOutErrors);
399 pIfTable->table[0].dwInUnknownProtos);
400 }
401 else
402 {
403 DoFormatMessage(dwRetVal);
404 }
405 }
406 HeapFree(GetProcessHeap(), 0, pIfTable);
407}
#define StdOut
Definition: fc.c:14
void ConResPrintf(FILE *fp, UINT nID,...)
Definition: fc.c:33
void ConResPuts(FILE *fp, UINT nID)
Definition: fc.c:27
#define IDS_ETHERNET_NON_UNICAST_PACKET
Definition: resource.h:69
#define IDS_ETHERNET_BYTES
Definition: resource.h:67
#define IDS_ETHERNET_DISCARD
Definition: resource.h:70
#define IDS_ETHERNET_INTERFACE_STAT
Definition: resource.h:65
#define IDS_ETHERNET_UNKNOWN
Definition: resource.h:72
#define IDS_ETHERNET_THEADER
Definition: resource.h:66
#define IDS_ETHERNET_UNICAST_PACKET
Definition: resource.h:68
#define IDS_ETHERNET_ERROR
Definition: resource.h:71
#define NO_ERROR
Definition: dderror.h:5
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
unsigned long DWORD
Definition: ntddk_ex.h:95
struct _MIB_IFTABLE MIB_IFTABLE
DWORD WINAPI GetIfTable(PMIB_IFTABLE pIfTable, PULONG pdwSize, BOOL bOrder)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
DWORD dwOutErrors
Definition: ifmib.h:57
DWORD dwOutNUcastPkts
Definition: ifmib.h:55
DWORD dwInOctets
Definition: ifmib.h:47
DWORD dwInDiscards
Definition: ifmib.h:50
DWORD dwInUcastPkts
Definition: ifmib.h:48
DWORD dwInErrors
Definition: ifmib.h:51
DWORD dwInUnknownProtos
Definition: ifmib.h:52
DWORD dwOutOctets
Definition: ifmib.h:53
DWORD dwOutDiscards
Definition: ifmib.h:56
DWORD dwOutUcastPkts
Definition: ifmib.h:54
DWORD dwInNUcastPkts
Definition: ifmib.h:49
MIB_IFROW table[1]
Definition: ifmib.h:66

Referenced by DisplayOutput().

◆ ShowIcmpStatistics()

VOID ShowIcmpStatistics ( VOID  )

Definition at line 282 of file netstat.c.

283{
284 PMIB_ICMP pIcmpStats;
285 DWORD dwRetVal;
286
287 pIcmpStats = (MIB_ICMP*) HeapAlloc(GetProcessHeap(), 0, sizeof(MIB_ICMP));
288
289 if ((dwRetVal = GetIcmpStatistics(pIcmpStats)) == NO_ERROR)
290 {
294 pIcmpStats->stats.icmpInStats.dwMsgs, pIcmpStats->stats.icmpOutStats.dwMsgs);
296 pIcmpStats->stats.icmpInStats.dwErrors, pIcmpStats->stats.icmpOutStats.dwErrors);
300 pIcmpStats->stats.icmpInStats.dwTimeExcds, pIcmpStats->stats.icmpOutStats.dwTimeExcds);
302 pIcmpStats->stats.icmpInStats.dwParmProbs, pIcmpStats->stats.icmpOutStats.dwParmProbs);
306 pIcmpStats->stats.icmpInStats.dwRedirects, pIcmpStats->stats.icmpOutStats.dwRedirects);
308 pIcmpStats->stats.icmpInStats.dwEchos, pIcmpStats->stats.icmpOutStats.dwEchos);
310 pIcmpStats->stats.icmpInStats.dwEchoReps, pIcmpStats->stats.icmpOutStats.dwEchoReps);
316 pIcmpStats->stats.icmpInStats.dwAddrMasks, pIcmpStats->stats.icmpOutStats.dwAddrMasks);
319 }
320 else
321 {
322 DoFormatMessage(dwRetVal);
323 }
324
325 HeapFree(GetProcessHeap(), 0, pIcmpStats);
326
327}
#define IDS_ICMP_MSG
Definition: resource.h:36
#define IDS_ICMP_DEST_UNREACH
Definition: resource.h:38
#define IDS_ICMP_ECHO_REPLY
Definition: resource.h:44
#define IDS_ICMP_ADDRESSS_MASK
Definition: resource.h:47
#define IDS_ICMP_SRC_QUENCHES
Definition: resource.h:41
#define IDS_ICMP_ADDRESSS_MASK_REPLY
Definition: resource.h:48
#define IDS_ICMP_TIMESTAMP
Definition: resource.h:45
#define IDS_ICMP_ECHO
Definition: resource.h:43
#define IDS_ICMP_TIMESTAMP_REPLY
Definition: resource.h:46
#define IDS_ICMP4_STAT_HEADER
Definition: resource.h:8
#define IDS_ICMP_ERROR
Definition: resource.h:37
#define IDS_ICMP_THEADER
Definition: resource.h:9
#define IDS_ICMP_PARAM_PROBLEM
Definition: resource.h:40
#define IDS_ICMP_TIME_EXCEED
Definition: resource.h:39
#define IDS_ICMP_REDIRECT
Definition: resource.h:42
DWORD WINAPI GetIcmpStatistics(PMIB_ICMP pStats)
struct _MIB_ICMP MIB_ICMP
MIBICMPSTATS icmpOutStats
Definition: ipmib.h:194
MIBICMPSTATS icmpInStats
Definition: ipmib.h:193
DWORD dwTimeExcds
Definition: ipmib.h:179
DWORD dwAddrMasks
Definition: ipmib.h:187
DWORD dwEchoReps
Definition: ipmib.h:184
DWORD dwParmProbs
Definition: ipmib.h:180
DWORD dwAddrMaskReps
Definition: ipmib.h:188
DWORD dwSrcQuenchs
Definition: ipmib.h:181
DWORD dwTimestamps
Definition: ipmib.h:185
DWORD dwRedirects
Definition: ipmib.h:182
DWORD dwMsgs
Definition: ipmib.h:176
DWORD dwErrors
Definition: ipmib.h:177
DWORD dwEchos
Definition: ipmib.h:183
DWORD dwTimestampReps
Definition: ipmib.h:186
DWORD dwDestUnreachs
Definition: ipmib.h:178
MIBICMPINFO stats
Definition: ipmib.h:199

Referenced by DisplayOutput().

◆ ShowIpStatistics()

VOID ShowIpStatistics ( VOID  )

Definition at line 246 of file netstat.c.

247{
248 PMIB_IPSTATS pIpStats;
249 DWORD dwRetVal;
250
251 pIpStats = (MIB_IPSTATS*) HeapAlloc(GetProcessHeap(), 0, sizeof(MIB_IPSTATS));
252
253 if ((dwRetVal = GetIpStatistics(pIpStats)) == NO_ERROR)
254 {
273 }
274 else
275 {
276 DoFormatMessage(dwRetVal);
277 }
278
279 HeapFree(GetProcessHeap(), 0, pIpStats);
280}
#define IDS_IP_DATAG_FRAG_CREATE
Definition: resource.h:34
#define IDS_IP_OUT_REQUEST
Definition: resource.h:25
#define IDS_IP_DATAG_FRAG_SUCCESS
Definition: resource.h:32
#define IDS_IP_REC_PACK_DISCARD
Definition: resource.h:23
#define IDS_IP_DISCARD_OUT_PACK
Definition: resource.h:27
#define IDS_IP_DATAG_FWD
Definition: resource.h:21
#define IDS_IP_UNKNOWN_PRO_REC
Definition: resource.h:22
#define IDS_IP_REASSEMBLE_FAILURE
Definition: resource.h:31
#define IDS_IP_ADDR_REC_ERROR
Definition: resource.h:20
#define IDS_IP_REASSEMBLE_REQUIRED
Definition: resource.h:29
#define IDS_IP_HEAD_REC_ERROR
Definition: resource.h:19
#define IDS_IP_REASSEMBLE_SUCCESS
Definition: resource.h:30
#define IDS_IP_ROUTE_DISCARD
Definition: resource.h:26
#define IDS_IP_OUT_PACKET_NO_ROUTE
Definition: resource.h:28
#define IDS_IP_REC_PACK_DELIVER
Definition: resource.h:24
#define IDS_IP4_STAT_HEADER
Definition: resource.h:7
#define IDS_IP_PACK_REC
Definition: resource.h:18
#define IDS_IP_DATAG_FRAG_FAILURE
Definition: resource.h:33
DWORD WINAPI GetIpStatistics(PMIB_IPSTATS pStats)
struct _MIB_IPSTATS MIB_IPSTATS
DWORD dwInReceives
Definition: ipmib.h:148
DWORD dwInAddrErrors
Definition: ipmib.h:150
DWORD dwFragOks
Definition: ipmib.h:163
DWORD dwReasmOks
Definition: ipmib.h:161
DWORD dwOutNoRoutes
Definition: ipmib.h:158
DWORD dwInDelivers
Definition: ipmib.h:154
DWORD dwRoutingDiscards
Definition: ipmib.h:156
DWORD dwReasmReqds
Definition: ipmib.h:160
DWORD dwOutDiscards
Definition: ipmib.h:157
DWORD dwInHdrErrors
Definition: ipmib.h:149
DWORD dwForwDatagrams
Definition: ipmib.h:151
DWORD dwInDiscards
Definition: ipmib.h:153
DWORD dwOutRequests
Definition: ipmib.h:155
DWORD dwFragCreates
Definition: ipmib.h:165
DWORD dwInUnknownProtos
Definition: ipmib.h:152
DWORD dwReasmFails
Definition: ipmib.h:162
DWORD dwFragFails
Definition: ipmib.h:164

Referenced by DisplayOutput().

◆ ShowTcpStatistics()

VOID ShowTcpStatistics ( VOID  )

Definition at line 329 of file netstat.c.

330{
332 DWORD dwRetVal;
333
334 if ((dwRetVal = GetTcpStatistics(&tcpStats)) == NO_ERROR)
335 {
345 }
346 else
347 {
348 DoFormatMessage(dwRetVal);
349 }
350}
#define IDS_TCP_RESET_CONNECT
Definition: resource.h:53
#define IDS_TCP_CURRENT_CONNECT
Definition: resource.h:54
#define IDS_TCP_SEG_SENT
Definition: resource.h:56
#define IDS_TCP_SEG_RETRANSMIT
Definition: resource.h:57
#define IDS_TCP_ACTIVE_OPEN
Definition: resource.h:50
#define IDS_TCP_PASS_OPEN
Definition: resource.h:51
#define IDS_TCP_FAIL_CONNECT
Definition: resource.h:52
#define IDS_TCP_SEG_RECEIVE
Definition: resource.h:55
#define IDS_TCP4_HEADER
Definition: resource.h:10
static MIB_TCPSTATS tcpStats
Definition: main.c:1076
DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS pStats)
DWORD dwPassiveOpens
Definition: tcpmib.h:180
DWORD dwActiveOpens
Definition: tcpmib.h:179
DWORD dwRetransSegs
Definition: tcpmib.h:186
DWORD dwInSegs
Definition: tcpmib.h:184
DWORD dwOutSegs
Definition: tcpmib.h:185
DWORD dwEstabResets
Definition: tcpmib.h:182
DWORD dwCurrEstab
Definition: tcpmib.h:183
DWORD dwAttemptFails
Definition: tcpmib.h:181

Referenced by DisplayOutput().

◆ ShowTcpTable()

BOOL ShowTcpTable ( VOID  )

Definition at line 409 of file netstat.c.

410{
413 DWORD i;
414 CHAR HostIp[HOSTNAMELEN], HostPort[PORTNAMELEN];
415 CHAR RemoteIp[HOSTNAMELEN], RemotePort[PORTNAMELEN];
416 CHAR Host[ADDRESSLEN];
418 CHAR PID[64];
419
420 /* Get the table of TCP endpoints */
422 /* Should also work when we get new connections between 2 GetTcpTable()
423 * calls: */
424 do
425 {
428 if ( error != NO_ERROR )
429 HeapFree(GetProcessHeap(), 0, tcpTable);
430 }
431 while ( error == ERROR_INSUFFICIENT_BUFFER );
432
433 if (error != NO_ERROR)
434 {
437 return FALSE;
438 }
439
440 /* Dump the TCP table */
441 for (i = 0; i < tcpTable->dwNumEntries; i++)
442 {
443 /* If we aren't showing all connections, only display established, close wait
444 * and time wait. This is the default output for netstat */
445 if (bDoShowAllCons || (tcpTable->table[i].dwState == MIB_TCP_STATE_ESTAB)
446 || (tcpTable->table[i].dwState == MIB_TCP_STATE_CLOSE_WAIT)
447 || (tcpTable->table[i].dwState == MIB_TCP_STATE_TIME_WAIT))
448 {
449 /* I've split this up so it's easier to follow */
450 GetIpHostName(TRUE, tcpTable->table[i].dwLocalAddr, HostIp, sizeof(HostIp));
451 GetPortName(tcpTable->table[i].dwLocalPort, "tcp", HostPort, sizeof(HostPort));
452 sprintf(Host, "%s:%s", HostIp, HostPort);
453
454 if (tcpTable->table[i].dwState == MIB_TCP_STATE_LISTEN)
455 {
456 sprintf(Remote, "%s:0", HostIp);
457 }
458 else
459 {
460 GetIpHostName(FALSE, tcpTable->table[i].dwRemoteAddr, RemoteIp, sizeof(RemoteIp));
461 GetPortName(tcpTable->table[i].dwRemotePort, "tcp", RemotePort, sizeof(RemotePort));
462 sprintf(Remote, "%s:%s", RemoteIp, RemotePort);
463 }
464
466 {
467 sprintf(PID, "%ld", tcpTable->table[i].dwOwningPid);
468 }
469 else
470 {
471 PID[0] = 0;
472 }
473
474 ConPrintf(StdOut, L" %-6s %-22S %-22S %-11s %S\n", L"TCP",
475 Host, Remote, TcpState[tcpTable->table[i].dwState], PID);
476 }
477 }
478
479 HeapFree(GetProcessHeap(), 0, tcpTable);
480 return TRUE;
481}
void ConPrintf(FILE *fp, LPCWSTR psz,...)
Definition: fc.c:20
#define StdErr
Definition: fc.c:15
#define IDS_ERROR_TCP_SNAPSHOT
Definition: resource.h:14
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define AF_INET
Definition: tcpip.h:117
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
DWORD WINAPI GetExtendedTcpTable(PVOID pTcpTable, PDWORD pdwSize, BOOL bOrder, ULONG ulAf, TCP_TABLE_CLASS TableClass, ULONG Reserved)
@ TCP_TABLE_OWNER_PID_ALL
Definition: iprtrmib.h:35
#define error(str)
Definition: mkdosfs.c:1605
@ Remote
Definition: scrrun.idl:92
PCWSTR TcpState[]
Definition: netstat.c:36
PCHAR GetPortName(UINT Port, PCSTR Proto, CHAR Name[], INT NameLen)
Definition: netstat.c:541
PCHAR GetIpHostName(BOOL Local, UINT IpAddr, CHAR Name[], INT NameLen)
Definition: netstat.c:562
BOOL bDoShowAllCons
Definition: netstat.h:9
#define HOSTNAMELEN
Definition: netstat.h:3
BOOL bDoShowProcessId
Definition: netstat.h:16
#define PORTNAMELEN
Definition: netstat.h:4
#define ADDRESSLEN
Definition: netstat.h:5
#define L(x)
Definition: ntvdm.h:50
MIB_TCPROW_OWNER_PID table[1]
Definition: tcpmib.h:115
struct _MIB_TCPTABLE_OWNER_PID * PMIB_TCPTABLE_OWNER_PID
@ MIB_TCP_STATE_TIME_WAIT
Definition: tcpmib.h:38
@ MIB_TCP_STATE_ESTAB
Definition: tcpmib.h:32
@ MIB_TCP_STATE_LISTEN
Definition: tcpmib.h:29
@ MIB_TCP_STATE_CLOSE_WAIT
Definition: tcpmib.h:35
struct _MIB_TCPTABLE_OWNER_PID MIB_TCPTABLE_OWNER_PID
char CHAR
Definition: xmlstorage.h:175

Referenced by DisplayOutput().

◆ ShowUdpStatistics()

VOID ShowUdpStatistics ( VOID  )

Definition at line 352 of file netstat.c.

353{
355 DWORD dwRetVal;
356
357 if ((dwRetVal = GetUdpStatistics(&udpStats)) == NO_ERROR)
358 {
364 }
365 else
366 {
367 DoFormatMessage(dwRetVal);
368 }
369}
#define IDS_UDP_IP4_HEADER
Definition: resource.h:59
#define IDS_UDP_RECEIVE_ERROR
Definition: resource.h:62
#define IDS_UDP_DATAG_RECEIVE
Definition: resource.h:60
#define IDS_UDP_DATAG_SEND
Definition: resource.h:63
#define IDS_UDP_NO_PORT
Definition: resource.h:61
static MIB_UDPSTATS udpStats
Definition: main.c:1137
DWORD WINAPI GetUdpStatistics(PMIB_UDPSTATS pStats)
DWORD dwOutDatagrams
Definition: udpmib.h:81
DWORD dwInDatagrams
Definition: udpmib.h:78
DWORD dwNoPorts
Definition: udpmib.h:79
DWORD dwInErrors
Definition: udpmib.h:80

Referenced by DisplayOutput().

◆ ShowUdpTable()

BOOL ShowUdpTable ( VOID  )

Definition at line 483 of file netstat.c.

484{
487 DWORD i;
488 CHAR HostIp[HOSTNAMELEN], HostPort[PORTNAMELEN];
489 CHAR Host[ADDRESSLEN];
490 CHAR PID[64];
491
492 /* Get the table of UDP endpoints */
493 dwSize = 0;
496 {
499 return FALSE;
500 }
503 if (error)
504 {
508 return FALSE;
509 }
510
511 /* Dump the UDP table */
512 for (i = 0; i < udpTable->dwNumEntries; i++)
513 {
514
515 /* I've split this up so it's easier to follow */
516 GetIpHostName(TRUE, udpTable->table[i].dwLocalAddr, HostIp, sizeof(HostIp));
517 GetPortName(udpTable->table[i].dwLocalPort, "udp", HostPort, sizeof(HostPort));
518
519 sprintf(Host, "%s:%s", HostIp, HostPort);
520
522 {
523 sprintf(PID, "%ld", udpTable->table[i].dwOwningPid);
524 }
525 else
526 {
527 PID[0] = 0;
528 }
529
530 ConPrintf(StdOut, L" %-6s %-22S %-34s %S\n", L"UDP", Host, L"*:*", PID);
531 }
532
534 return TRUE;
535}
#define IDS_ERROR_UDP_ENDPOINT
Definition: resource.h:15
#define IDS_ERROR_UDP_ENDPOINT_TABLE
Definition: resource.h:16
#define NULL
Definition: types.h:112
static PMIB_UDPTABLE udpTable
Definition: main.c:1187
DWORD WINAPI GetExtendedUdpTable(PVOID pUdpTable, PDWORD pdwSize, BOOL bOrder, ULONG ulAf, UDP_TABLE_CLASS TableClass, ULONG Reserved)
@ UDP_TABLE_OWNER_PID
Definition: iprtrmib.h:44
DWORD dwLocalAddr
Definition: udpmib.h:28
DWORD dwLocalPort
Definition: udpmib.h:29
DWORD dwNumEntries
Definition: udpmib.h:34
MIB_UDPROW table[1]
Definition: udpmib.h:35
struct _MIB_UDPTABLE_OWNER_PID * PMIB_UDPTABLE_OWNER_PID

Referenced by DisplayOutput().

Variable Documentation

◆ bDoDispSeqComp

BOOL bDoDispSeqComp = FALSE

Definition at line 17 of file netstat.h.

Referenced by ParseCmdline().

◆ bDoShowAllCons

BOOL bDoShowAllCons = FALSE

Definition at line 9 of file netstat.h.

Referenced by DisplayOutput(), ParseCmdline(), and ShowTcpTable().

◆ bDoShowEthStats

BOOL bDoShowEthStats = FALSE

Definition at line 11 of file netstat.h.

Referenced by DisplayOutput(), and ParseCmdline().

◆ bDoShowNumbers

BOOL bDoShowNumbers = FALSE

Definition at line 12 of file netstat.h.

Referenced by GetIpHostName(), GetPortName(), and ParseCmdline().

◆ bDoShowProcessId

BOOL bDoShowProcessId = FALSE

Definition at line 16 of file netstat.h.

Referenced by DisplayTableHeader(), ParseCmdline(), ShowTcpTable(), and ShowUdpTable().

◆ bDoShowProcName

BOOL bDoShowProcName = FALSE

Definition at line 10 of file netstat.h.

Referenced by ParseCmdline().

◆ bDoShowProtoCons

BOOL bDoShowProtoCons = FALSE

Definition at line 13 of file netstat.h.

Referenced by DisplayOutput(), and ParseCmdline().

◆ bDoShowProtoStats

BOOL bDoShowProtoStats = FALSE

Definition at line 15 of file netstat.h.

Referenced by DisplayOutput(), and ParseCmdline().

◆ bDoShowRouteTable

BOOL bDoShowRouteTable = FALSE

Definition at line 14 of file netstat.h.

Referenced by DisplayOutput(), and ParseCmdline().

◆ bLoopOutput

BOOL bLoopOutput = FALSE

Definition at line 18 of file netstat.h.

Referenced by ParseCmdline(), and wmain().

◆ bNoOptions

BOOL bNoOptions = FALSE

Definition at line 8 of file netstat.h.

Referenced by DisplayOutput(), and ParseCmdline().