Adding menuetlibc back to its place in /programs/develop/libraries
This version of menuetlibc was taken from revision 4743, right before I made any changes git-svn-id: svn://kolibrios.org@4973 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
428
programs/develop/libraries/menuetlibc/include/netinet/in.h
Normal file
428
programs/develop/libraries/menuetlibc/include/netinet/in.h
Normal file
@@ -0,0 +1,428 @@
|
||||
#ifndef _NETINET_IN_H
|
||||
#define _NETINET_IN_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <endian.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Standard well-defined IP protocols. */
|
||||
enum {
|
||||
IPPROTO_IP = 0, /* Dummy protocol for TCP */
|
||||
#define IPPROTO_IP IPPROTO_IP
|
||||
IPPROTO_ICMP = 1, /* Internet Control Message Protocol */
|
||||
#define IPPROTO_ICMP IPPROTO_ICMP
|
||||
IPPROTO_IGMP = 2, /* Internet Group Management Protocol */
|
||||
#define IPPROTO_IGMP IPPROTO_IGMP
|
||||
IPPROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94) */
|
||||
#define IPPROTO_IPIP IPPROTO_IPIP
|
||||
IPPROTO_TCP = 6, /* Transmission Control Protocol */
|
||||
#define IPPROTO_TCP IPPROTO_TCP
|
||||
IPPROTO_EGP = 8, /* Exterior Gateway Protocol */
|
||||
#define IPPROTO_EGP IPPROTO_EGP
|
||||
IPPROTO_PUP = 12, /* PUP protocol */
|
||||
#define IPPROTO_PUP IPPROTO_PUP
|
||||
IPPROTO_UDP = 17, /* User Datagram Protocol */
|
||||
#define IPPROTO_UDP IPPROTO_UDP
|
||||
IPPROTO_IDP = 22, /* XNS IDP protocol */
|
||||
#define IPPROTO_IDP IPPROTO_IDP
|
||||
IPPROTO_RSVP = 46, /* RSVP protocol */
|
||||
#define IPPROTO_RSVP IPPROTO_RSVP
|
||||
IPPROTO_GRE = 47, /* Cisco GRE tunnels (rfc 1701,1702) */
|
||||
#define IPPROTO_GRE IPPROTO_GRE
|
||||
IPPROTO_IPV6 = 41, /* IPv6-in-IPv4 tunnelling */
|
||||
#define IPPROTO_IPV6 IPPROTO_IPV6
|
||||
IPPROTO_PIM = 103, /* Protocol Independent Multicast */
|
||||
#define IPPROTO_PIM IPPROTO_PIM
|
||||
IPPROTO_ESP = 50, /* Encapsulation Security Payload protocol */
|
||||
#define IPPROTO_ESP IPPROTO_ESP
|
||||
IPPROTO_AH = 51, /* Authentication Header protocol */
|
||||
#define IPPROTO_AH IPPROTO_AH
|
||||
IPPROTO_COMP = 108, /* Compression Header protocol */
|
||||
#define IPPROTO_COMP IPPROTO_COMP
|
||||
IPPROTO_RAW = 255, /* Raw IP packets */
|
||||
#define IPPROTO_RAW IPPROTO_RAW
|
||||
IPPROTO_MAX
|
||||
};
|
||||
|
||||
#define IP_TOS 1
|
||||
#define IP_TTL 2
|
||||
#define IP_HDRINCL 3
|
||||
#define IP_OPTIONS 4
|
||||
#define IP_ROUTER_ALERT 5
|
||||
#define IP_RECVOPTS 6
|
||||
#define IP_RETOPTS 7
|
||||
#define IP_PKTINFO 8
|
||||
#define IP_PKTOPTIONS 9
|
||||
#define IP_MTU_DISCOVER 10
|
||||
#define IP_RECVERR 11
|
||||
#define IP_RECVTTL 12
|
||||
#define IP_RECVTOS 13
|
||||
#define IP_MTU 14
|
||||
#define IP_FREEBIND 15
|
||||
|
||||
/* BSD compatibility */
|
||||
#define IP_RECVRETOPTS IP_RETOPTS
|
||||
|
||||
/* IP_MTU_DISCOVER values */
|
||||
#define IP_PMTUDISC_DONT 0 /* Never send DF frames */
|
||||
#define IP_PMTUDISC_WANT 1 /* Use per route hints */
|
||||
#define IP_PMTUDISC_DO 2 /* Always DF */
|
||||
|
||||
#define IP_MULTICAST_IF 32
|
||||
#define IP_MULTICAST_TTL 33
|
||||
#define IP_MULTICAST_LOOP 34
|
||||
#define IP_ADD_MEMBERSHIP 35
|
||||
#define IP_DROP_MEMBERSHIP 36
|
||||
|
||||
/* These need to appear somewhere around here */
|
||||
#define IP_DEFAULT_MULTICAST_TTL 1
|
||||
#define IP_DEFAULT_MULTICAST_LOOP 1
|
||||
|
||||
#define IN6ADDR_ANY_INIT {{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }}}
|
||||
#define IN6ADDR_LOOPBACK_INIT {{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }}}
|
||||
extern const struct in6_addr in6addr_any;
|
||||
extern const struct in6_addr in6addr_loopback;
|
||||
|
||||
typedef uint16_t in_port_t;
|
||||
typedef uint32_t in_addr_t;
|
||||
|
||||
struct in_addr {
|
||||
in_addr_t s_addr;
|
||||
};
|
||||
|
||||
struct ip_mreq {
|
||||
struct in_addr imr_multiaddr; /* IP multicast address of group */
|
||||
struct in_addr imr_interface; /* local IP address of interface */
|
||||
};
|
||||
|
||||
struct ip_mreqn {
|
||||
struct in_addr imr_multiaddr; /* IP multicast address of group */
|
||||
struct in_addr imr_address; /* local IP address of interface */
|
||||
int imr_ifindex; /* Interface index */
|
||||
};
|
||||
|
||||
struct in_pktinfo {
|
||||
int ipi_ifindex;
|
||||
struct in_addr ipi_spec_dst;
|
||||
struct in_addr ipi_addr;
|
||||
};
|
||||
|
||||
/* Structure describing an Internet (IP) socket address. */
|
||||
#define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */
|
||||
struct sockaddr_in {
|
||||
sa_family_t sin_family; /* Address family */
|
||||
in_port_t sin_port; /* Port number */
|
||||
struct in_addr sin_addr; /* Internet address */
|
||||
/* Pad to size of `struct sockaddr'. */
|
||||
unsigned char sin_zero[__SOCK_SIZE__ - sizeof(short int) -
|
||||
sizeof(unsigned short int) - sizeof(struct in_addr)];
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Definitions of the bits in an Internet address integer.
|
||||
* On subnets, host and network parts are found according
|
||||
* to the subnet mask, not these masks.
|
||||
*/
|
||||
#define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0)
|
||||
#define IN_CLASSA_NET 0xff000000
|
||||
#define IN_CLASSA_NSHIFT 24
|
||||
#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
|
||||
#define IN_CLASSA_MAX 128
|
||||
|
||||
#define IN_CLASSB(a) ((((long int) (a)) & 0xc0000000) == 0x80000000)
|
||||
#define IN_CLASSB_NET 0xffff0000
|
||||
#define IN_CLASSB_NSHIFT 16
|
||||
#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
|
||||
#define IN_CLASSB_MAX 65536
|
||||
|
||||
#define IN_CLASSC(a) ((((long int) (a)) & 0xe0000000) == 0xc0000000)
|
||||
#define IN_CLASSC_NET 0xffffff00
|
||||
#define IN_CLASSC_NSHIFT 8
|
||||
#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
|
||||
|
||||
#define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000)
|
||||
#define IN_MULTICAST(a) IN_CLASSD(a)
|
||||
#define IN_MULTICAST_NET 0xF0000000
|
||||
|
||||
#define IN_EXPERIMENTAL(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
|
||||
#define IN_BADCLASS(a) IN_EXPERIMENTAL((a))
|
||||
|
||||
/* Address to accept any incoming messages. */
|
||||
#define INADDR_ANY ((unsigned long int) 0x00000000)
|
||||
|
||||
/* Address to send to all hosts. */
|
||||
#define INADDR_BROADCAST ((unsigned long int) 0xffffffff)
|
||||
|
||||
/* Address indicating an error return. */
|
||||
#define INADDR_NONE ((unsigned long int) 0xffffffff)
|
||||
|
||||
/* Network number for local host loopback. */
|
||||
#define IN_LOOPBACKNET 127
|
||||
|
||||
/* Address to loopback in software to local host. */
|
||||
#define INADDR_LOOPBACK 0x7f000001 /* 127.0.0.1 */
|
||||
#define IN_LOOPBACK(a) ((((long int) (a)) & 0xff000000) == 0x7f000000)
|
||||
|
||||
/* Defines for Multicast INADDR */
|
||||
#define INADDR_UNSPEC_GROUP 0xe0000000U /* 224.0.0.0 */
|
||||
#define INADDR_ALLHOSTS_GROUP 0xe0000001U /* 224.0.0.1 */
|
||||
#define INADDR_ALLRTRS_GROUP 0xe0000002U /* 224.0.0.2 */
|
||||
#define INADDR_MAX_LOCAL_GROUP 0xe00000ffU /* 224.0.0.255 */
|
||||
|
||||
struct in6_addr {
|
||||
union {
|
||||
uint8_t u6_addr8[16];
|
||||
uint16_t u6_addr16[8];
|
||||
uint32_t u6_addr32[4];
|
||||
} in6_u;
|
||||
#define s6_addr in6_u.u6_addr8
|
||||
#define s6_addr16 in6_u.u6_addr16
|
||||
#define s6_addr32 in6_u.u6_addr32
|
||||
};
|
||||
|
||||
struct sockaddr_in6 {
|
||||
unsigned short int sin6_family; /* AF_INET6 */
|
||||
uint16_t sin6_port; /* Transport layer port # */
|
||||
uint32_t sin6_flowinfo; /* IPv6 flow information */
|
||||
struct in6_addr sin6_addr; /* IPv6 address */
|
||||
uint32_t sin6_scope_id; /* scope id (new in RFC2553) */
|
||||
};
|
||||
|
||||
struct sockaddr_in_pad {
|
||||
sa_family_t sin_family; /* Address family */
|
||||
in_port_t sin_port; /* Port number */
|
||||
struct in_addr sin_addr; /* Internet address */
|
||||
/* Pad to size of `struct sockaddr_in6'. */
|
||||
unsigned char sin_zero[sizeof(struct sockaddr_in6) - sizeof(short int) -
|
||||
sizeof(unsigned short int) - sizeof(struct in_addr)];
|
||||
};
|
||||
|
||||
struct ipv6_mreq {
|
||||
/* IPv6 multicast address of group */
|
||||
struct in6_addr ipv6mr_multiaddr;
|
||||
/* local IPv6 address of interface */
|
||||
int ipv6mr_interface;
|
||||
};
|
||||
|
||||
struct in6_flowlabel_req {
|
||||
struct in6_addr flr_dst;
|
||||
uint32_t flr_label;
|
||||
uint8_t flr_action;
|
||||
uint8_t flr_share;
|
||||
uint16_t flr_flags;
|
||||
uint16_t flr_expires;
|
||||
uint16_t flr_linger;
|
||||
uint32_t __flr_pad;
|
||||
/* Options in format of IPV6_PKTOPTIONS */
|
||||
};
|
||||
|
||||
#define IPV6_FL_A_GET 0
|
||||
#define IPV6_FL_A_PUT 1
|
||||
#define IPV6_FL_A_RENEW 2
|
||||
|
||||
#define IPV6_FL_F_CREATE 1
|
||||
#define IPV6_FL_F_EXCL 2
|
||||
|
||||
#define IPV6_FL_S_NONE 0
|
||||
#define IPV6_FL_S_EXCL 1
|
||||
#define IPV6_FL_S_PROCESS 2
|
||||
#define IPV6_FL_S_USER 3
|
||||
#define IPV6_FL_S_ANY 255
|
||||
|
||||
#define IPV6_FLOWINFO_FLOWLABEL 0x000fffff
|
||||
#define IPV6_FLOWINFO_PRIORITY 0x0ff00000
|
||||
|
||||
/*
|
||||
* IPV6 extension headers
|
||||
*/
|
||||
#define IPPROTO_HOPOPTS 0 /* IPv6 hop-by-hop options */
|
||||
#define IPPROTO_ROUTING 43 /* IPv6 routing header */
|
||||
#define IPPROTO_FRAGMENT 44 /* IPv6 fragmentation header */
|
||||
#define IPPROTO_ICMPV6 58 /* ICMPv6 */
|
||||
#define IPPROTO_NONE 59 /* IPv6 no next header */
|
||||
#define IPPROTO_DSTOPTS 60 /* IPv6 destination options */
|
||||
|
||||
/* IPv6 TLV options. */
|
||||
#define IPV6_TLV_PAD0 0
|
||||
#define IPV6_TLV_PADN 1
|
||||
#define IPV6_TLV_ROUTERALERT 5
|
||||
#define IPV6_TLV_JUMBO 194
|
||||
|
||||
/* IPV6 socket options. */
|
||||
#define IPV6_ADDRFORM 1
|
||||
#define IPV6_PKTINFO 2
|
||||
#define IPV6_HOPOPTS 3
|
||||
#define IPV6_DSTOPTS 4
|
||||
#define IPV6_RTHDR 5
|
||||
#define IPV6_PKTOPTIONS 6
|
||||
#define IPV6_CHECKSUM 7
|
||||
#define IPV6_HOPLIMIT 8
|
||||
#define IPV6_NEXTHOP 9
|
||||
#define IPV6_AUTHHDR 10
|
||||
#define IPV6_FLOWINFO 11
|
||||
|
||||
#define IPV6_UNICAST_HOPS 16
|
||||
#define IPV6_MULTICAST_IF 17
|
||||
#define IPV6_MULTICAST_HOPS 18
|
||||
#define IPV6_MULTICAST_LOOP 19
|
||||
#define IPV6_ADD_MEMBERSHIP 20
|
||||
#define IPV6_DROP_MEMBERSHIP 21
|
||||
#define IPV6_ROUTER_ALERT 22
|
||||
#define IPV6_MTU_DISCOVER 23
|
||||
#define IPV6_MTU 24
|
||||
#define IPV6_RECVERR 25
|
||||
|
||||
/* IPV6_MTU_DISCOVER values */
|
||||
#define IPV6_PMTUDISC_DONT 0
|
||||
#define IPV6_PMTUDISC_WANT 1
|
||||
#define IPV6_PMTUDISC_DO 2
|
||||
|
||||
/* Flowlabel */
|
||||
#define IPV6_FLOWLABEL_MGR 32
|
||||
#define IPV6_FLOWINFO_SEND 33
|
||||
|
||||
#define IPV6_MIN_MTU 1280
|
||||
|
||||
struct in6_pktinfo {
|
||||
struct in6_addr ipi6_addr;
|
||||
int ipi6_ifindex;
|
||||
};
|
||||
|
||||
struct in6_ifreq {
|
||||
struct in6_addr ifr6_addr;
|
||||
uint32_t ifr6_prefixlen;
|
||||
int ifr6_ifindex;
|
||||
};
|
||||
|
||||
#define IPV6_SRCRT_STRICT 0x01 /* this hop must be a neighbor */
|
||||
#define IPV6_SRCRT_TYPE_0 0 /* IPv6 type 0 Routing Header */
|
||||
|
||||
/* routing header */
|
||||
struct ipv6_rt_hdr {
|
||||
uint8_t nexthdr;
|
||||
uint8_t hdrlen;
|
||||
uint8_t type;
|
||||
uint8_t segments_left;
|
||||
/* type specific data, variable length field */
|
||||
};
|
||||
|
||||
struct ipv6_opt_hdr {
|
||||
uint8_t nexthdr;
|
||||
uint8_t hdrlen;
|
||||
/* TLV encoded option data follows. */
|
||||
};
|
||||
|
||||
#define ipv6_destopt_hdr ipv6_opt_hdr
|
||||
#define ipv6_hopopt_hdr ipv6_opt_hdr
|
||||
|
||||
/* routing header type 0 (used in cmsghdr struct) */
|
||||
|
||||
#ifndef __STRICT_ANSI__
|
||||
struct rt0_hdr {
|
||||
struct ipv6_rt_hdr rt_hdr;
|
||||
uint32_t bitmap; /* strict/loose bit map */
|
||||
struct in6_addr addr[0];
|
||||
#define rt0_type rt_hdr.type;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct ipv6hdr {
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
unsigned int flow_lbl:20,
|
||||
priority:8,
|
||||
version:4;
|
||||
#else
|
||||
unsigned int version:4,
|
||||
priority:8,
|
||||
flow_lbl:20;
|
||||
#endif
|
||||
|
||||
uint16_t payload_len;
|
||||
uint8_t nexthdr;
|
||||
uint8_t hop_limit;
|
||||
|
||||
struct in6_addr saddr;
|
||||
struct in6_addr daddr;
|
||||
};
|
||||
/* fnord */
|
||||
|
||||
#define IPPORT_RESERVED 1024
|
||||
#define INET6_ADDRSTRLEN 46
|
||||
|
||||
#undef htonl
|
||||
#undef htons
|
||||
#undef ntohl
|
||||
#undef ntohs
|
||||
uint32_t htonl(uint32_t hostlong);
|
||||
uint16_t htons(uint16_t hostshort);
|
||||
uint32_t ntohl(uint32_t netlong);
|
||||
uint16_t ntohs(uint16_t netshort);
|
||||
|
||||
#define IN6_IS_ADDR_UNSPECIFIED(a) \
|
||||
(((__const uint32_t *) (a))[0] == 0 \
|
||||
&& ((__const uint32_t *) (a))[1] == 0 \
|
||||
&& ((__const uint32_t *) (a))[2] == 0 \
|
||||
&& ((__const uint32_t *) (a))[3] == 0)
|
||||
|
||||
#define IN6_IS_ADDR_LOOPBACK(a) \
|
||||
(((__const uint32_t *) (a))[0] == 0 \
|
||||
&& ((__const uint32_t *) (a))[1] == 0 \
|
||||
&& ((__const uint32_t *) (a))[2] == 0 \
|
||||
&& ((__const uint32_t *) (a))[3] == htonl (1))
|
||||
|
||||
#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)
|
||||
|
||||
#define IN6_IS_ADDR_LINKLOCAL(a) \
|
||||
((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \
|
||||
== htonl (0xfe800000))
|
||||
|
||||
#define IN6_IS_ADDR_SITELOCAL(a) \
|
||||
((((__const uint32_t *) (a))[0] & htonl (0xffc00000)) \
|
||||
== htonl (0xfec00000))
|
||||
|
||||
#define IN6_IS_ADDR_V4MAPPED(a) \
|
||||
((((__const uint32_t *) (a))[0] == 0) \
|
||||
&& (((__const uint32_t *) (a))[1] == 0) \
|
||||
&& (((__const uint32_t *) (a))[2] == htonl (0xffff)))
|
||||
|
||||
#define IN6_IS_ADDR_V4COMPAT(a) \
|
||||
((((__const uint32_t *) (a))[0] == 0) \
|
||||
&& (((__const uint32_t *) (a))[1] == 0) \
|
||||
&& (((__const uint32_t *) (a))[2] == 0) \
|
||||
&& (ntohl (((__const uint32_t *) (a))[3]) > 1))
|
||||
|
||||
#define IN6_ARE_ADDR_EQUAL(a,b) \
|
||||
((((__const uint32_t *) (a))[0] == ((__const uint32_t *) (b))[0]) \
|
||||
&& (((__const uint32_t *) (a))[1] == ((__const uint32_t *) (b))[1]) \
|
||||
&& (((__const uint32_t *) (a))[2] == ((__const uint32_t *) (b))[2]) \
|
||||
&& (((__const uint32_t *) (a))[3] == ((__const uint32_t *) (b))[3]))
|
||||
|
||||
/* old legacy bullshit */
|
||||
int bindresvport(int sd, struct sockaddr_in* _sin);
|
||||
|
||||
#define IN6_IS_ADDR_MC_NODELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) \
|
||||
&& ((((__const uint8_t *) (a))[1] & 0xf) == 0x1))
|
||||
|
||||
#define IN6_IS_ADDR_MC_LINKLOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) \
|
||||
&& ((((__const uint8_t *) (a))[1] & 0xf) == 0x2))
|
||||
|
||||
#define IN6_IS_ADDR_MC_SITELOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) \
|
||||
&& ((((__const uint8_t *) (a))[1] & 0xf) == 0x5))
|
||||
|
||||
#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) \
|
||||
&& ((((__const uint8_t *) (a))[1] & 0xf) == 0x8))
|
||||
|
||||
#define IN6_IS_ADDR_MC_GLOBAL(a) \
|
||||
(IN6_IS_ADDR_MULTICAST(a) \
|
||||
&& ((((__const uint8_t *) (a))[1] & 0xf) == 0xe))
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
125
programs/develop/libraries/menuetlibc/include/netinet/ip.h
Normal file
125
programs/develop/libraries/menuetlibc/include/netinet/ip.h
Normal file
@@ -0,0 +1,125 @@
|
||||
#ifndef _NETINET_IP_H
|
||||
#define _NETINET_IP_H
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <endian.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
#define IPVERSION 4 /* IP version number */
|
||||
#define IP_MAXPACKET 65535 /* maximum packet size */
|
||||
|
||||
#define IPTOS_TOS_MASK 0x1E
|
||||
#define IPTOS_TOS(tos) ((tos)&IPTOS_TOS_MASK)
|
||||
#define IPTOS_LOWDELAY 0x10
|
||||
#define IPTOS_THROUGHPUT 0x08
|
||||
#define IPTOS_RELIABILITY 0x04
|
||||
#define IPTOS_MINCOST 0x02
|
||||
#define IPTOS_LOWCOST IPTOS_MINCOST
|
||||
|
||||
#define IPTOS_PREC_MASK 0xE0
|
||||
#define IPTOS_PREC(tos) ((tos)&IPTOS_PREC_MASK)
|
||||
#define IPTOS_PREC_NETCONTROL 0xe0
|
||||
#define IPTOS_PREC_INTERNETCONTROL 0xc0
|
||||
#define IPTOS_PREC_CRITIC_ECP 0xa0
|
||||
#define IPTOS_PREC_FLASHOVERRIDE 0x80
|
||||
#define IPTOS_PREC_FLASH 0x60
|
||||
#define IPTOS_PREC_IMMEDIATE 0x40
|
||||
#define IPTOS_PREC_PRIORITY 0x20
|
||||
#define IPTOS_PREC_ROUTINE 0x00
|
||||
|
||||
|
||||
/* IP options */
|
||||
#define IPOPT_COPY 0x80
|
||||
#define IPOPT_CLASS_MASK 0x60
|
||||
#define IPOPT_NUMBER_MASK 0x1f
|
||||
|
||||
#define IPOPT_COPIED(o) ((o)&IPOPT_COPY)
|
||||
#define IPOPT_CLASS(o) ((o)&IPOPT_CLASS_MASK)
|
||||
#define IPOPT_NUMBER(o) ((o)&IPOPT_NUMBER_MASK)
|
||||
|
||||
#define IPOPT_CONTROL 0x00
|
||||
#define IPOPT_RESERVED1 0x20
|
||||
#define IPOPT_MEASUREMENT 0x40
|
||||
#define IPOPT_RESERVED2 0x60
|
||||
|
||||
#define IPOPT_END (0 |IPOPT_CONTROL)
|
||||
#define IPOPT_NOOP (1 |IPOPT_CONTROL)
|
||||
#define IPOPT_SEC (2 |IPOPT_CONTROL|IPOPT_COPY)
|
||||
#define IPOPT_LSRR (3 |IPOPT_CONTROL|IPOPT_COPY)
|
||||
#define IPOPT_TIMESTAMP (4 |IPOPT_MEASUREMENT)
|
||||
#define IPOPT_RR (7 |IPOPT_CONTROL)
|
||||
#define IPOPT_SID (8 |IPOPT_CONTROL|IPOPT_COPY)
|
||||
#define IPOPT_SSRR (9 |IPOPT_CONTROL|IPOPT_COPY)
|
||||
#define IPOPT_RA (20|IPOPT_CONTROL|IPOPT_COPY)
|
||||
|
||||
#define IPVERSION 4
|
||||
#define MAXTTL 255
|
||||
#define IPDEFTTL 64
|
||||
|
||||
/* struct timestamp, struct route and MAX_ROUTES are removed.
|
||||
|
||||
REASONS: it is clear that nobody used them because:
|
||||
- MAX_ROUTES value was wrong.
|
||||
- "struct route" was wrong.
|
||||
- "struct timestamp" had fatally misaligned bitfields and was completely unusable.
|
||||
*/
|
||||
|
||||
#define IPOPT_OPTVAL 0
|
||||
#define IPOPT_OLEN 1
|
||||
#define IPOPT_OFFSET 2
|
||||
#define IPOPT_MINOFF 4
|
||||
#define MAX_IPOPTLEN 40
|
||||
#define IPOPT_NOP IPOPT_NOOP
|
||||
#define IPOPT_EOL IPOPT_END
|
||||
#define IPOPT_TS IPOPT_TIMESTAMP
|
||||
|
||||
#define IPOPT_TS_TSONLY 0 /* timestamps only */
|
||||
#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */
|
||||
#define IPOPT_TS_PRESPEC 3 /* specified modules only */
|
||||
|
||||
struct iphdr { /* size 20/0x14 */
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
unsigned int ihl:4, version:4; /* offset 0; version=ip version (4) */
|
||||
#else
|
||||
unsigned int version:4, ihl:4; /* offset 0; ihl=ip header length, measured in words (5) */
|
||||
#endif
|
||||
unsigned char tos; /* offset 1 */
|
||||
unsigned short tot_len; /* offset 2; total bytes in packet in network byte order */
|
||||
unsigned short id; /* offset 4 */
|
||||
unsigned short frag_off; /* offset 6 */
|
||||
unsigned char ttl; /* offset 8 */
|
||||
unsigned char protocol; /* offset 9; 1=ICMP, 6=TCP, 17=UDP (see netinet/in.h) */
|
||||
unsigned short check; /* offset 10/0xa */
|
||||
unsigned int saddr; /* offset 12/0xc */
|
||||
unsigned int daddr; /* offset 16/0x10 */
|
||||
/*The options start here. */
|
||||
};
|
||||
|
||||
struct ip {
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
unsigned int ip_hl:4; /* header length */
|
||||
unsigned int ip_v:4; /* version */
|
||||
#endif
|
||||
#if __BYTE_ORDER == __BIG_ENDIAN
|
||||
unsigned int ip_v:4; /* version */
|
||||
unsigned int ip_hl:4; /* header length */
|
||||
#endif
|
||||
unsigned char ip_tos; /* type of service */
|
||||
unsigned short ip_len; /* total length */
|
||||
unsigned short ip_id; /* identification */
|
||||
unsigned short ip_off; /* fragment offset field */
|
||||
#define IP_RF 0x8000 /* reserved fragment flag */
|
||||
#define IP_DF 0x4000 /* dont fragment flag */
|
||||
#define IP_MF 0x2000 /* more fragments flag */
|
||||
#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */
|
||||
unsigned char ip_ttl; /* time to live */
|
||||
unsigned char ip_p; /* protocol */
|
||||
unsigned short ip_sum; /* checksum */
|
||||
struct in_addr ip_src, ip_dst; /* source and dest address */
|
||||
};
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
149
programs/develop/libraries/menuetlibc/include/netinet/ip_icmp.h
Normal file
149
programs/develop/libraries/menuetlibc/include/netinet/ip_icmp.h
Normal file
@@ -0,0 +1,149 @@
|
||||
#ifndef NETINET_IP_ICMP_H
|
||||
#define NETINET_IP_ICMP_H
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <inttypes.h>
|
||||
#include <netinet/ip.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
struct icmphdr {
|
||||
uint8_t type; /* message type */
|
||||
uint8_t code; /* type sub-code */
|
||||
uint16_t checksum;
|
||||
union {
|
||||
struct {
|
||||
uint16_t id;
|
||||
uint16_t sequence;
|
||||
} echo; /* echo datagram */
|
||||
uint32_t gateway; /* gateway address */
|
||||
struct {
|
||||
uint16_t __unused;
|
||||
uint16_t mtu;
|
||||
} frag; /* path mtu discovery */
|
||||
} un;
|
||||
};
|
||||
|
||||
#define ICMP_ECHOREPLY 0 /* Echo Reply */
|
||||
#define ICMP_DEST_UNREACH 3 /* Destination Unreachable */
|
||||
#define ICMP_SOURCE_QUENCH 4 /* Source Quench */
|
||||
#define ICMP_REDIRECT 5 /* Redirect (change route) */
|
||||
#define ICMP_ECHO 8 /* Echo Request */
|
||||
#define ICMP_TIME_EXCEEDED 11 /* Time Exceeded */
|
||||
#define ICMP_PARAMETERPROB 12 /* Parameter Problem */
|
||||
#define ICMP_TIMESTAMP 13 /* Timestamp Request */
|
||||
#define ICMP_TIMESTAMPREPLY 14 /* Timestamp Reply */
|
||||
#define ICMP_INFO_REQUEST 15 /* Information Request */
|
||||
#define ICMP_INFO_REPLY 16 /* Information Reply */
|
||||
#define ICMP_ADDRESS 17 /* Address Mask Request */
|
||||
#define ICMP_ADDRESSREPLY 18 /* Address Mask Reply */
|
||||
#define NR_ICMP_TYPES 18
|
||||
|
||||
|
||||
/* Codes for UNREACH. */
|
||||
#define ICMP_NET_UNREACH 0 /* Network Unreachable */
|
||||
#define ICMP_HOST_UNREACH 1 /* Host Unreachable */
|
||||
#define ICMP_PROT_UNREACH 2 /* Protocol Unreachable */
|
||||
#define ICMP_PORT_UNREACH 3 /* Port Unreachable */
|
||||
#define ICMP_FRAG_NEEDED 4 /* Fragmentation Needed/DF set */
|
||||
#define ICMP_SR_FAILED 5 /* Source Route failed */
|
||||
#define ICMP_NET_UNKNOWN 6
|
||||
#define ICMP_HOST_UNKNOWN 7
|
||||
#define ICMP_HOST_ISOLATED 8
|
||||
#define ICMP_NET_ANO 9
|
||||
#define ICMP_HOST_ANO 10
|
||||
#define ICMP_NET_UNR_TOS 11
|
||||
#define ICMP_HOST_UNR_TOS 12
|
||||
#define ICMP_PKT_FILTERED 13 /* Packet filtered */
|
||||
#define ICMP_PREC_VIOLATION 14 /* Precedence violation */
|
||||
#define ICMP_PREC_CUTOFF 15 /* Precedence cut off */
|
||||
#define NR_ICMP_UNREACH 15 /* instead of hardcoding immediate value */
|
||||
|
||||
/* Codes for REDIRECT. */
|
||||
#define ICMP_REDIR_NET 0 /* Redirect Net */
|
||||
#define ICMP_REDIR_HOST 1 /* Redirect Host */
|
||||
#define ICMP_REDIR_NETTOS 2 /* Redirect Net for TOS */
|
||||
#define ICMP_REDIR_HOSTTOS 3 /* Redirect Host for TOS */
|
||||
|
||||
/* Codes for TIME_EXCEEDED. */
|
||||
#define ICMP_EXC_TTL 0 /* TTL count exceeded */
|
||||
#define ICMP_EXC_FRAGTIME 1 /* Fragment Reass time exceeded */
|
||||
|
||||
/*
|
||||
* Lower bounds on packet lengths for various types.
|
||||
* For the error advice packets must first insure that the
|
||||
* packet is large enough to contain the returned ip header.
|
||||
* Only then can we do the check to see if 64 bits of packet
|
||||
* data have been returned, since we need to check the returned
|
||||
* ip header length.
|
||||
*/
|
||||
#define ICMP_MINLEN 8 /* abs minimum */
|
||||
#define ICMP_TSLEN (8 + 3 * sizeof (n_time)) /* timestamp */
|
||||
#define ICMP_MASKLEN 12 /* address mask */
|
||||
#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */
|
||||
#ifndef _IP_VHL
|
||||
#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8)
|
||||
/* N.B.: must separately check that ip_hl >= 5 */
|
||||
#else
|
||||
#define ICMP_ADVLEN(p) (8 + (IP_VHL_HL((p)->icmp_ip.ip_vhl) << 2) + 8)
|
||||
/* N.B.: must separately check that header length >= 5 */
|
||||
#endif
|
||||
|
||||
/* Definition of type and code fields. */
|
||||
/* defined above: ICMP_ECHOREPLY, ICMP_REDIRECT, ICMP_ECHO */
|
||||
#define ICMP_UNREACH 3 /* dest unreachable, codes: */
|
||||
#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */
|
||||
#define ICMP_ROUTERADVERT 9 /* router advertisement */
|
||||
#define ICMP_ROUTERSOLICIT 10 /* router solicitation */
|
||||
#define ICMP_TIMXCEED 11 /* time exceeded, code: */
|
||||
#define ICMP_PARAMPROB 12 /* ip header bad */
|
||||
#define ICMP_TSTAMP 13 /* timestamp request */
|
||||
#define ICMP_TSTAMPREPLY 14 /* timestamp reply */
|
||||
#define ICMP_IREQ 15 /* information request */
|
||||
#define ICMP_IREQREPLY 16 /* information reply */
|
||||
#define ICMP_MASKREQ 17 /* address mask request */
|
||||
#define ICMP_MASKREPLY 18 /* address mask reply */
|
||||
|
||||
#define ICMP_MAXTYPE 18
|
||||
|
||||
/* UNREACH codes */
|
||||
#define ICMP_UNREACH_NET 0 /* bad net */
|
||||
#define ICMP_UNREACH_HOST 1 /* bad host */
|
||||
#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */
|
||||
#define ICMP_UNREACH_PORT 3 /* bad port */
|
||||
#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */
|
||||
#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */
|
||||
#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */
|
||||
#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */
|
||||
#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */
|
||||
#define ICMP_UNREACH_NET_PROHIB 9 /* net denied */
|
||||
#define ICMP_UNREACH_HOST_PROHIB 10 /* host denied */
|
||||
#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */
|
||||
#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */
|
||||
#define ICMP_UNREACH_FILTER_PROHIB 13 /* admin prohib */
|
||||
#define ICMP_UNREACH_HOST_PRECEDENCE 14 /* host prec vio. */
|
||||
#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 /* prec cutoff */
|
||||
|
||||
/* REDIRECT codes */
|
||||
#define ICMP_REDIRECT_NET 0 /* for network */
|
||||
#define ICMP_REDIRECT_HOST 1 /* for host */
|
||||
#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */
|
||||
#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */
|
||||
|
||||
/* TIMEXCEED codes */
|
||||
#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */
|
||||
#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */
|
||||
|
||||
/* PARAMPROB code */
|
||||
#define ICMP_PARAMPROB_OPTABSENT 1 /* req. opt. absent */
|
||||
|
||||
#define ICMP_INFOTYPE(type) \
|
||||
((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \
|
||||
(type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
|
||||
(type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \
|
||||
(type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \
|
||||
(type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
168
programs/develop/libraries/menuetlibc/include/netinet/tcp.h
Normal file
168
programs/develop/libraries/menuetlibc/include/netinet/tcp.h
Normal file
@@ -0,0 +1,168 @@
|
||||
#ifndef _NETINET_TCP_H
|
||||
#define _NETINET_TCP_H
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <endian.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
struct tcphdr { /* size 20/0x14 40/0x28 with IP header */
|
||||
uint16_t source; /* offset 0 20/0x14 */
|
||||
uint16_t dest; /* offset 2 22/0x16 */
|
||||
uint32_t seq; /* offset 4 24/0x18 */
|
||||
uint32_t ack_seq; /* offset 8 28/0x1c */
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
uint16_t res1:4, doff:4, fin:1, syn:1, rst:1, psh:1, ack:1, urg:1, ece:1, cwr:1;
|
||||
#else
|
||||
uint16_t doff:4, res1:4, cwr:1, ece:1, urg:1, ack:1, psh:1, rst:1, syn:1, fin:1;
|
||||
#endif
|
||||
/* offset 12/0xc 32/0x20 */
|
||||
uint16_t window; /* offset 14/0xe 34/0x22 */
|
||||
uint16_t check; /* offset 16/0x10 36/0x24 */
|
||||
uint16_t urg_ptr; /* offset 18/0x12 38/0x26 */
|
||||
};
|
||||
|
||||
|
||||
enum {
|
||||
TCP_ESTABLISHED = 1,
|
||||
TCP_SYN_SENT,
|
||||
TCP_SYN_RECV,
|
||||
TCP_FIN_WAIT1,
|
||||
TCP_FIN_WAIT2,
|
||||
TCP_TIME_WAIT,
|
||||
TCP_CLOSE,
|
||||
TCP_CLOSE_WAIT,
|
||||
TCP_LAST_ACK,
|
||||
TCP_LISTEN,
|
||||
TCP_CLOSING, /* now a valid state */
|
||||
|
||||
TCP_MAX_STATES /* Leave at the end! */
|
||||
};
|
||||
|
||||
#define TCP_STATE_MASK 0xF
|
||||
#define TCP_ACTION_FIN (1 << 7)
|
||||
|
||||
enum {
|
||||
TCPF_ESTABLISHED = (1 << 1),
|
||||
TCPF_SYN_SENT = (1 << 2),
|
||||
TCPF_SYN_RECV = (1 << 3),
|
||||
TCPF_FIN_WAIT1 = (1 << 4),
|
||||
TCPF_FIN_WAIT2 = (1 << 5),
|
||||
TCPF_TIME_WAIT = (1 << 6),
|
||||
TCPF_CLOSE = (1 << 7),
|
||||
TCPF_CLOSE_WAIT = (1 << 8),
|
||||
TCPF_LAST_ACK = (1 << 9),
|
||||
TCPF_LISTEN = (1 << 10),
|
||||
TCPF_CLOSING = (1 << 11)
|
||||
};
|
||||
|
||||
/*
|
||||
* The union cast uses a gcc extension to avoid aliasing problems
|
||||
* (union is compatible to any of its members)
|
||||
* This means this part of the code is -fstrict-aliasing safe now.
|
||||
*/
|
||||
union tcp_word_hdr {
|
||||
struct tcphdr hdr;
|
||||
uint32_t words[5];
|
||||
};
|
||||
|
||||
#define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3])
|
||||
|
||||
enum {
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
TCP_FLAG_CWR = 0x00008000,
|
||||
TCP_FLAG_ECE = 0x00004000,
|
||||
TCP_FLAG_URG = 0x00002000,
|
||||
TCP_FLAG_ACK = 0x00001000,
|
||||
TCP_FLAG_PSH = 0x00000800,
|
||||
TCP_FLAG_RST = 0x00000400,
|
||||
TCP_FLAG_SYN = 0x00000200,
|
||||
TCP_FLAG_FIN = 0x00000100,
|
||||
TCP_RESERVED_BITS = 0x0000C00F,
|
||||
TCP_DATA_OFFSET = 0x000000F0
|
||||
#else
|
||||
TCP_FLAG_CWR = 0x00800000,
|
||||
TCP_FLAG_ECE = 0x00400000,
|
||||
TCP_FLAG_URG = 0x00200000,
|
||||
TCP_FLAG_ACK = 0x00100000,
|
||||
TCP_FLAG_PSH = 0x00080000,
|
||||
TCP_FLAG_RST = 0x00040000,
|
||||
TCP_FLAG_SYN = 0x00020000,
|
||||
TCP_FLAG_FIN = 0x00010000,
|
||||
TCP_RESERVED_BITS = 0x0FC00000,
|
||||
TCP_DATA_OFFSET = 0xF0000000
|
||||
#endif
|
||||
};
|
||||
|
||||
/* TCP socket options */
|
||||
#define TCP_NODELAY 1 /* Turn off Nagle's algorithm. */
|
||||
#define TCP_MAXSEG 2 /* Limit MSS */
|
||||
#define TCP_CORK 3 /* Never send partially complete segments */
|
||||
#define TCP_KEEPIDLE 4 /* Start keeplives after this period */
|
||||
#define TCP_KEEPINTVL 5 /* Interval between keepalives */
|
||||
#define TCP_KEEPCNT 6 /* Number of keepalives before death */
|
||||
#define TCP_SYNCNT 7 /* Number of SYN retransmits */
|
||||
#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */
|
||||
#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */
|
||||
#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */
|
||||
#define TCP_INFO 11 /* Information about this connection. */
|
||||
#define TCP_QUICKACK 12 /* Block/reenable quick acks */
|
||||
|
||||
#define TCPI_OPT_TIMESTAMPS 1
|
||||
#define TCPI_OPT_SACK 2
|
||||
#define TCPI_OPT_WSCALE 4
|
||||
#define TCPI_OPT_ECN 8
|
||||
|
||||
enum tcp_ca_state {
|
||||
TCP_CA_Open = 0,
|
||||
#define TCPF_CA_Open (1<<TCP_CA_Open)
|
||||
TCP_CA_Disorder = 1,
|
||||
#define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
|
||||
TCP_CA_CWR = 2,
|
||||
#define TCPF_CA_CWR (1<<TCP_CA_CWR)
|
||||
TCP_CA_Recovery = 3,
|
||||
#define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
|
||||
TCP_CA_Loss = 4
|
||||
#define TCPF_CA_Loss (1<<TCP_CA_Loss)
|
||||
};
|
||||
|
||||
struct tcp_info {
|
||||
uint8_t tcpi_state;
|
||||
uint8_t tcpi_ca_state;
|
||||
uint8_t tcpi_retransmits;
|
||||
uint8_t tcpi_probes;
|
||||
uint8_t tcpi_backoff;
|
||||
uint8_t tcpi_options;
|
||||
uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
|
||||
|
||||
uint32_t tcpi_rto;
|
||||
uint32_t tcpi_ato;
|
||||
uint32_t tcpi_snd_mss;
|
||||
uint32_t tcpi_rcv_mss;
|
||||
|
||||
uint32_t tcpi_unacked;
|
||||
uint32_t tcpi_sacked;
|
||||
uint32_t tcpi_lost;
|
||||
uint32_t tcpi_retrans;
|
||||
uint32_t tcpi_fackets;
|
||||
|
||||
/* Times. */
|
||||
uint32_t tcpi_last_data_sent;
|
||||
uint32_t tcpi_last_ack_sent; /* Not remembered, sorry. */
|
||||
uint32_t tcpi_last_data_recv;
|
||||
uint32_t tcpi_last_ack_recv;
|
||||
|
||||
/* Metrics. */
|
||||
uint32_t tcpi_pmtu;
|
||||
uint32_t tcpi_rcv_ssthresh;
|
||||
uint32_t tcpi_rtt;
|
||||
uint32_t tcpi_rttvar;
|
||||
uint32_t tcpi_snd_ssthresh;
|
||||
uint32_t tcpi_snd_cwnd;
|
||||
uint32_t tcpi_advmss;
|
||||
uint32_t tcpi_reordering;
|
||||
};
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
20
programs/develop/libraries/menuetlibc/include/netinet/udp.h
Normal file
20
programs/develop/libraries/menuetlibc/include/netinet/udp.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#ifndef _NETINET_UDP_H
|
||||
#define _NETINET_UDP_H
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
struct udphdr { /* size 8 28/0x1c with IP header */
|
||||
uint16_t source; /* offset 0 20/0x14 */
|
||||
uint16_t dest; /* offset 2 22/0x16 */
|
||||
uint16_t len; /* offset 4 24/0x18 */
|
||||
uint16_t check; /* offset 6 26/0x1a */
|
||||
};
|
||||
|
||||
#define SOL_UDP 17 /* sockopt level for UDP */
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user