/contrib/media/updf/include/netinet/in.h |
---|
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 |
/contrib/media/updf/include/netinet/in_systm.h |
---|
--- ip.h (nonexistent) |
+++ ip.h (revision 4680) |
@@ -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 |
/contrib/media/updf/include/netinet/ip_icmp.h |
---|
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 |
/contrib/media/updf/include/netinet/tcp.h |
---|
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 |
/contrib/media/updf/include/netinet/udp.h |
---|
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 |