2020-09-30 17:17:25 +02:00

437 lines
11 KiB
C

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
in.h
Abstract:
A version of the BSD 4.2 file <netinet/in.h> for NT tcp
Author:
Sam Patton (sampa) July 26, 1991
Revision History:
when who what
---- --- ----
7-26-91 sampa initial version
--*/
/******************************************************************
*
* SpiderTCP Application Include Files
*
* Spider Systems Limited
*
* IN.H
*
* A version of the BSD 4.2 file <netinet/in.h>
* for SpiderTCP
*
*
******************************************************************/
/*
* /usr/projects/spare/PBRAIN/SCCS/pbrainG/dev/src/include/netinet/0/s.in.h
* @(#)in.h 1.31
*
* Last delta created 13:33:59 8/27/90
* This file extracted 08:53:51 7/10/91
*
* Modifications:
*
*/
#ifndef IN_INCLUDED
#define IN_INCLUDED
#ifdef PROJ8
/*
* BYTESWAP should be undef'ed if the machine's byte order
* is the same as network byte order - if it is the reverse
* it should be set to 1.
*/
#define BYTESWAP 1
#endif
#ifdef PROJ11
/*
* BYTESWAP should be undef'ed if the machine's byte order
* is the same as network byte order - if it is the reverse
* it should be set to 1.
*/
#define BYTESWAP 1
#endif
#ifdef PROJ9
/*
* BYTESWAP should be undef'ed if the machine's byte order
* is the same as network byte order - if it is the reverse
* it should be set to 1.
*/
#if m68k
#undef BYTESWAP
#define EMBED 1
#else
#define BYTESWAP 1
#undef EMBED
#endif
#endif
#ifndef BYTESWAP
# ifdef i386
# define BYTESWAP 1
# endif
# ifdef MIPS
# define BYTESWAP 1
# endif
# ifdef ALPHA
# define BYTESWAP 1
# endif
# ifdef PPC
# define BYTESWAP 1
# endif
# ifdef IA64
# define BYTESWAP 1
# endif
#endif
#define TLI_TCP "/dev/tcp" /* or else */
#define TLI_UDP "/dev/udp" /* or else */
/*
* Protocols
*/
#define IPPROTO_IP 256 /* IP (for socket options etc) */
#define IPPROTO_ICMP 1 /* control message protocol */
#define IPPROTO_GGP 2 /* gateway^2 (deprecated) */
#define IPPROTO_TCP 6 /* tcp */
#define IPPROTO_EGP 8 /* exterior gateway protocol */
#define IPPROTO_PUP 12 /* pup */
#define IPPROTO_UDP 17 /* user datagram protocol */
#define IPPROTO_RAW 255 /* raw IP packet */
#define IPPROTO_MAX 256
#define ICMP_PROT IPPROTO_ICMP
#define GWAY_PROT 3
#define TCP_PROT IPPROTO_TCP
#define UDP_PROT IPPROTO_UDP
#include <sys\snet\ip_proto.h>
#if 0
/*
* define structure for DARPA internet address
* usually use "longs" to access but sometimes need to split into
* components
*/
typedef union {
char typea[4]; /* 4 x 8 bit version */
short typeb[2]; /* 2 x 16 bit */
long typec; /* 1 x 32 bit */
} IN_ADDRESS;
#endif
/*
* Port/socket numbers: network standard functions
*/
#define IPPORT_ECHO 7
#define IPPORT_DISCARD 9
#define IPPORT_SYSTAT 11
#define IPPORT_DAYTIME 13
#define IPPORT_NETSTAT 15
#define IPPORT_FTP 21
#define IPPORT_TELNET 23
#define IPPORT_SMTP 25
#define IPPORT_TIMESERVER 37
#define IPPORT_NAMESERVER 42
#define IPPORT_WHOIS 43
#define IPPORT_MTP 57
/*
* Port/socket numbers: host specific functions
*/
#define IPPORT_TFTP 69
#define IPPORT_RJE 77
#define IPPORT_FINGER 79
#define IPPORT_TTYLINK 87
#define IPPORT_SUPDUP 95
#define IPPORT_BIFFUDP 512
#define IPPORT_EXECSERVER 512
#define IPPORT_LOGINSERVER 513
#define IPPORT_WHOSERVER 513
#define IPPORT_CMDSERVER 514
/*
* Ports < IPPORT_RESERVED are reserved for
* privileged processes (e.g. root).
*/
#define IPPORT_RESERVED 1024
/*
* Link numbers
*/
#define IMPLINK_IP 155
#define IMPLINK_LOWEXPER 156
#define IMPLINK_HIGHEXPER 158
/*
* Internet address
*/
struct in_addr {
union {
struct { unsigned char s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { unsigned short s_w1,s_w2; } S_un_w;
unsigned long S_addr;
} S_un;
#define s_addr S_un.S_addr /* can be used for most tcp & ip code */
#define s_host S_un.S_un_b.s_b2 /* host on imp */
#define s_net S_un.S_un_b.s_b1 /* network */
#define s_imp S_un.S_un_w.s_w2 /* imp */
#define s_impno S_un.S_un_b.s_b4 /* imp # */
#define s_lh S_un.S_un_b.s_b3 /* logical host */
};
/*
* Definitions of bits in internet address integers.
*/
#define IN_CLASSA(i) ((((long)(i))&0x80000000)==0)
#define IN_CLASSA_NET 0xff000000
#define IN_CLASSA_NSHIFT 24
#define IN_CLASSA_HOST 0x00ffffff
#define IN_CLASSA_MAX 128
#define IN_CLASSB(i) ((((long)(i))&0xc0000000)==0x80000000)
#define IN_CLASSB_NET 0xffff0000
#define IN_CLASSB_NSHIFT 16
#define IN_CLASSB_HOST 0x0000ffff
#define IN_CLASSB_MAX 65536
#define IN_CLASSC(i) ((((long)(i))&0xe0000000)==0xc0000000)
#define IN_CLASSC_NET 0xffffff00
#define IN_CLASSC_NSHIFT 8
#define IN_CLASSC_HOST 0x000000ff
#define INADDR_ANY 0x00000000
#define INADDR_BROADCAST 0xffffffff
/*
* Socket address, internet style.
*/
struct sockaddr_in {
short sin_family;
unsigned short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
/* Length of a SOCKADDR or SOCKADDR_IN structure */
#define SOCAD_LEN 16
#ifdef BYTESWAP
#define htons(x) ((((x) >> 8) & 0x00FF) | (((x) << 8) & 0xFF00))
//
//BUGBUG - we need to investigate this
//
#define FUTURE 1
#ifdef FUTURE
/*
* this macro should be used if its faster than the function
* - measure it on the target machine
*/
#ifndef i386
#define htonl(x) ((((x) >> 24) & 0x000000FFL) | \
(((x) >> 8) & 0x0000FF00L) | \
(((x) << 8) & 0x00FF0000L) | \
(((x) << 24) & 0xFF000000L))
#else
__inline long
htonl(long x)
{
return((((x) >> 24) & 0x000000FFL) |
(((x) >> 8) & 0x0000FF00L) |
(((x) << 8) & 0x00FF0000L) |
(((x) << 24) & 0xFF000000L));
}
#endif /* i386 */
#else
extern long htonl();
#endif
#undef FUTURE
#define ntohs(x) htons(x)
#define ntohl(x) htonl(x)
#define MASKA 0x000000FFL
#define MASKB 0x0000FFFFL
#define MASKC 0x00FFFFFFL
#define CLSHFT 5 /* Make C generate hyper-optimized case */
#else
/*
* Macros for number representation conversion.
*/
#define ntohl(x) (x)
#define ntohs(x) (x)
#define htonl(x) (x)
#define htons(x) (x)
#define MASKA 0xFF000000L
#define MASKB 0xFFFF0000L
#define MASKC 0xFFFFFF00L
#define CLSHFT 29
#endif
#define CLA0 0 /* It takes the same arg; you mask it off, */
#define CLA1 1 /* shift, and then do a case statment with */
#define CLA2 2 /* some code having more than one label. */
#define CLA3 3 /* Values for class A */
#define CLB0 4
#define CLB1 5 /* B */
#define CLC 6 /* C */
#define CLI 7 /* Illegal */
#define BROADCAST 0x00000000L
#define CASTA 0x00FFFFFFL
#define CASTB 0x0000FFFFL
#define CASTC 0x000000FFL
/******************************************************************
*
* Type Codes for Ethernet packets
*
******************************************************************/
#define TY_ETHER 1
#ifndef TYPE_HACK
#define TY_PUP 0x0200
#define TY_IDP 0x0600
#define TY_IP 0x0800
#define TY_X25 0x0805
#define TY_ARP 0x0806
#define TY_RARP 0x8035
#ifndef NOTRAILER
#define TY_TRAIL 0x1000
#define TY_TRAIL_LO 0x1001
#define TY_TRAIL_HI 0x1002
#endif
#define TY_ECHO 0x9000
#else /*TYPE_HACK*/
#define TY_PUP 0x0200
#define TY_IDP 0x0600
#define TY_IP 0x0807 /* modified */
#define TY_X25 0x0805
#define TY_ARP 0x0808 /* modified */
#ifndef NOTRAILER
#define TY_TRAIL 0x2000 /* modified */
#define TY_TRAIL_LO 0x2001 /* modified */
#define TY_TRAIL_HI 0x2002 /* modified */
#endif
#define TY_ECHO 0x9000
#endif /*TYPE_HACK*/
/******************************************************************
*
* Type Codes for Arcnet packets
*
******************************************************************/
#define ARCNET_TY_IP 0xd4
#define ARCNET_TY_ARP 0xd5
#define ARCNET_TY_RARP 0xd6
/*
* LOOPBACK Address - in host and network byte order
*/
#define LOOPBACK 0x7F000001L
#ifdef BYTESWAP
#define NLOOPBACK 0x0100007FL
#else
#define NLOOPBACK 0x7F000001L
#endif
/*
* interface flags
*/
#define IFF_UP 0x01
#define IFF_BROADCAST 0x02
#define IFF_LOOPBACK 0x04
#define IFF_POINTOPOINT 0x08
#define IFF_FORWARDBROADCAST 0x10
#define IFF_NOKEEPALIVE 0x20
#define IFF_SLOWLINK 0x40
/*
* IP Options
*/
#define IPO_TTL 103
#define IPO_TOS 104
#define IPO_OPTS 105
#define IPO_RDOPTION 106
#define IPO_RDROUTE IPO_RDOPTION
#define IPO_OPTCOUNT 107
#define IPO_RRCOUNT IPO_OPTCOUNT
/*
* IP Option values
*/
#define OPT_SECURITY 130
#define OPT_LSRR 131
#define OPT_SSRR 137
#define OPT_RR 7
#define OPT_STRID 136
#define OPT_TIMESTAMP 68
/*
* Default Time to Live
*/
#define IHTTL 60
/*
* Maximum number of hops stored in a recorded route packet
*/
#define TCP_RR_MAX 16
#define MAXOPTLEN 256
#ifndef GENERICE
/*
* errors generated
*/
#define EFRGSZ 1
#define EDLTYPE 2
#define EPRIM 3
#define EBUF 4
#define EMSG 5
#endif /*~GENERICE*/
#endif //IN_INCLUDED