From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- private/inc/icmp.h | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 private/inc/icmp.h (limited to 'private/inc/icmp.h') diff --git a/private/inc/icmp.h b/private/inc/icmp.h new file mode 100644 index 000000000..92fbb8450 --- /dev/null +++ b/private/inc/icmp.h @@ -0,0 +1,135 @@ + +/*++ + +Copyright (c) 1991 Microsoft Corporation + +Module Name: + + icmp.h + +Abstract: + + This module declares the ICMP APIs that are provided for use + primarily by the NT tcp/ip utilities. + +Author: + + John Ballard (jballard) April 1, 1993 + +Revision History: + + + +--*/ + +#ifndef _ICMP_ +#define _ICMP_ + + +#if (_MSC_VER >= 800) +#define STRMAPI __stdcall +#else +#define _cdecl +#define STRMAPI +#endif + +/* + * + * register_icmp returns a handle to an open stream to icmp or + * ICMP_ERROR if an error occurs. + * + */ + +extern HANDLE STRMAPI register_icmp(void); + +#define ICMP_ERROR ((HANDLE) -3) + +/* + * + * If an error occurs a GetLastError() will return the reason for the error. + * + */ + +#define ICMP_OPEN_ERROR 1 +#define ICMP_PUTMSG_ERROR 2 +#define ICMP_GETMSG_ERROR 3 +#define ICMP_IN_USE 4 +#define ICMP_INVALID_PROT 5 + +/* + * + * do_echo_req generates an icmp echo request packet + * + * parameters are: + * + * fd - handle of stream to icmp (returned by register_icmp call) + * addr - ip address of host to ping in form returned by inet_addr() + * data - buffer containing data for ping packet + * datalen - length of data buffer + * optptr - buffer containing ip options to use for this packet + * optlen - option buffer length + * df - don't fragment flag + * ttl - time to live value + * tos - type of service value + * preced - precedence value + * + * returns: + * + * 0 if no error occured or + * standard unix error values ENOMEM, ERANGE, etc. + * + */ + +extern int STRMAPI +do_echo_req( HANDLE fd, long addr, char * data, int datalen, + char *optptr, int optlen, int df, int ttl, int tos, int preced); + + +/* + * + * do_echo_rep receives the reply to an icmp echo request packet + * + * parameters are: + * + * fd - handle of stream to icmp (returned by register_icmp call) + * rdata - buffer containing data for ping packet + * rdatalen - length of data buffer + * rtype - type of packet returned (see + * rttl - time to live value + * rtos - type of service value + * rpreced - precedence value + * rdf - don't fragment flag + * roptptr - buffer containing ip options to use for this packet + * roptlen - option buffer length + * + * returns: + * + * 0 if no error occured. rtype will indicate type of packet received. + * -1 if error occured. GetLastError() will indicate actual error. + * -3 if invalid msg returned. GetLastError() will indicate type. + * + */ + +extern int STRMAPI +do_echo_rep( HANDLE fd, char *rdata, int rdatalen, int *rtype, + int *rttl, int *rtos, int *rpreced, int *rdf, + char *roptptr, int *roptlen); + + +/* + * If -1 return then GetLastError returns the following. + */ + +#define POLL_TIMEOUT 0 +#define POLL_FAILED 1 + +/* + * Values returned by do_echo_rep in rtype + */ + +#define ECHO_REPLY 0 /* echo reply */ +#define DEST_UNR 3 /* destination unreachable: */ +#define TIME_EXCEEDED 11 /* time exceeded: */ +#define PARAMETER_ERROR 12 /* parameter problem */ + +#endif -- cgit v1.2.3