netstat: Parse command line arguments.
This commit is contained in:
parent
7357b65d62
commit
c25c7f8049
|
@ -24,7 +24,15 @@
|
|||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(netstat);
|
||||
|
||||
static const WCHAR ipW[] = {'I', 'P', 0};
|
||||
static const WCHAR ipv6W[] = {'I', 'P', 'v', '6', 0};
|
||||
static const WCHAR icmpW[] = {'I', 'C', 'M', 'P', 0};
|
||||
static const WCHAR icmpv6W[] = {'I', 'C', 'M', 'P', 'v', '6', 0};
|
||||
static const WCHAR tcpW[] = {'T', 'C', 'P', 0};
|
||||
static const WCHAR tcpv6W[] = {'T', 'C', 'P', 'v', '6', 0};
|
||||
static const WCHAR udpW[] = {'U', 'D', 'P', 0};
|
||||
static const WCHAR udpv6W[] = {'U', 'D', 'P', 'v', '6', 0};
|
||||
|
||||
static const WCHAR fmtport[] = {'%', 'd', 0};
|
||||
static const WCHAR fmtip[] = {'%', 'd', '.', '%', 'd', '.', '%', 'd', '.', '%', 'd', 0};
|
||||
static const WCHAR fmtn[] = {'\n', 0};
|
||||
|
@ -181,26 +189,58 @@ static void NETSTAT_tcp_table(void)
|
|||
HeapFree(GetProcessHeap(), 0, table);
|
||||
}
|
||||
|
||||
static NETSTATPROTOCOLS NETSTAT_get_protocol(WCHAR name[])
|
||||
{
|
||||
if (!strcmpiW(name, ipW)) return PROT_IP;
|
||||
if (!strcmpiW(name, ipv6W)) return PROT_IPV6;
|
||||
if (!strcmpiW(name, icmpW)) return PROT_ICMP;
|
||||
if (!strcmpiW(name, icmpv6W)) return PROT_ICMPV6;
|
||||
if (!strcmpiW(name, tcpW)) return PROT_TCP;
|
||||
if (!strcmpiW(name, tcpv6W)) return PROT_TCPV6;
|
||||
if (!strcmpiW(name, udpW)) return PROT_UDP;
|
||||
if (!strcmpiW(name, udpv6W)) return PROT_UDPV6;
|
||||
return PROT_UNKNOWN;
|
||||
}
|
||||
|
||||
int wmain(int argc, WCHAR *argv[])
|
||||
{
|
||||
WSADATA wsa_data;
|
||||
|
||||
if (argc > 1)
|
||||
{
|
||||
int i;
|
||||
WINE_FIXME("stub:");
|
||||
for (i = 0; i < argc; i++)
|
||||
WINE_FIXME(" %s", wine_dbgstr_w(argv[i]));
|
||||
WINE_FIXME("\n");
|
||||
}
|
||||
|
||||
if (WSAStartup(MAKEWORD(2, 2), &wsa_data))
|
||||
{
|
||||
WINE_ERR("WSAStartup failed: %d\n", WSAGetLastError());
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (argc == 1)
|
||||
{
|
||||
/* No options */
|
||||
NETSTAT_tcp_table();
|
||||
return 0;
|
||||
}
|
||||
|
||||
while (argv[1] && argv[1][0] == '-')
|
||||
{
|
||||
switch (argv[1][1])
|
||||
{
|
||||
case 'p':
|
||||
argv++; argc--;
|
||||
if (argc == 1) return 1;
|
||||
switch (NETSTAT_get_protocol(argv[1]))
|
||||
{
|
||||
case PROT_TCP:
|
||||
NETSTAT_tcp_table();
|
||||
break;
|
||||
default:
|
||||
WINE_FIXME("Protocol not yet implemented: %s\n", debugstr_w(argv[1]));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
WINE_FIXME("Unknown option: %s\n", debugstr_w(argv[1]));
|
||||
return 1;
|
||||
}
|
||||
argv++; argc--;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -18,6 +18,18 @@
|
|||
|
||||
#include <windows.h>
|
||||
|
||||
typedef enum _NETSTATPROTOCOLS {
|
||||
PROT_UNKNOWN,
|
||||
PROT_IP,
|
||||
PROT_IPV6,
|
||||
PROT_ICMP,
|
||||
PROT_ICMPV6,
|
||||
PROT_TCP,
|
||||
PROT_TCPV6,
|
||||
PROT_UDP,
|
||||
PROT_UDPV6,
|
||||
} NETSTATPROTOCOLS;
|
||||
|
||||
#define IDS_TCP_CLOSED 1
|
||||
#define IDS_TCP_LISTENING 2
|
||||
#define IDS_TCP_SYN_SENT 3
|
||||
|
|
Loading…
Reference in New Issue