Module Name: src Committed By: christos Date: Sun Jul 24 18:06:08 UTC 2011
Modified Files: src/sys/netinet: ip.h Log Message: Fill in missing IPTOS defines (from Linux/OpenBSD) To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 src/sys/netinet/ip.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netinet/ip.h diff -u src/sys/netinet/ip.h:1.31 src/sys/netinet/ip.h:1.32 --- src/sys/netinet/ip.h:1.31 Tue Dec 25 13:33:46 2007 +++ src/sys/netinet/ip.h Sun Jul 24 14:06:08 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: ip.h,v 1.31 2007/12/25 18:33:46 perry Exp $ */ +/* $NetBSD: ip.h,v 1.32 2011/07/24 18:06:08 christos Exp $ */ /* * Copyright (c) 1982, 1986, 1993 @@ -73,13 +73,75 @@ /* * Definitions for IP type of service (ip_tos) */ + +/* + * Definitions for DiffServ Codepoints as per RFC2474 + */ +#define IPTOS_DSCP_CS0 0x00 +#define IPTOS_DSCP_CS1 0x20 +#define IPTOS_DSCP_AF11 0x28 +#define IPTOS_DSCP_AF12 0x30 +#define IPTOS_DSCP_AF13 0x38 +#define IPTOS_DSCP_CS2 0x40 +#define IPTOS_DSCP_AF21 0x48 +#define IPTOS_DSCP_AF22 0x50 +#define IPTOS_DSCP_AF23 0x58 +#define IPTOS_DSCP_CS3 0x60 +#define IPTOS_DSCP_AF31 0x68 +#define IPTOS_DSCP_AF32 0x70 +#define IPTOS_DSCP_AF33 0x78 +#define IPTOS_DSCP_CS4 0x80 +#define IPTOS_DSCP_AF41 0x88 +#define IPTOS_DSCP_AF42 0x90 +#define IPTOS_DSCP_AF43 0x98 +#define IPTOS_DSCP_CS5 0xa0 +#define IPTOS_DSCP_EF 0xb8 +#define IPTOS_DSCP_CS6 0xc0 +#define IPTOS_DSCP_CS7 0xe0 + +/* + * Definitions for DiffServ Class Selector Codepoints + */ +#define IPTOS_CLASS_CS0 0x00 +#define IPTOS_CLASS_CS1 0x20 +#define IPTOS_CLASS_CS2 0x40 +#define IPTOS_CLASS_CS3 0x60 +#define IPTOS_CLASS_CS4 0x80 +#define IPTOS_CLASS_CS5 0xa0 +#define IPTOS_CLASS_CS6 0xc0 +#define IPTOS_CLASS_CS7 0xe0 +#define IPTOS_CLASS_DEFAULT IPTOS_CLASS_CS0 +#define IPTOS_CLASS_MASK 0xe0 +#define IPTOS_CLASS(cs) ((cs) & IPTOS_CLASS_MASK) +#define IPTOS_DSCP_MASK 0xfc +#define IPTOS_DSCP(cp) ((cp) & IPTOS_DSCP_MASK) + +/* + * ECN (Explicit Congestion Notification) codepoints in RFC3168 + * mapped to the lower 2 bits of the TOS field. + */ +#define IPTOS_ECN_NOTECT 0x00 /* not-ECT */ +#define IPTOS_ECN_ECT1 0x01 /* ECN-capable transport (1) */ +#define IPTOS_ECN_ECT0 0x02 /* ECN-capable transport (0) */ +#define IPTOS_ECN_CE 0x03 /* congestion experienced */ +#define IPTOS_ECN_MASK 0x03 /* ECN field mask */ +#define IPTOS_ECN(cn) ((cn) & IPTOS_ECN_MASK) +#define IPTOS_ECN_NOT_ECT 0x00 + +/* + * Definitions for IP type of service per RFC1349 (ip_tos) + * DEPRECATED + */ #define IPTOS_LOWDELAY 0x10 #define IPTOS_THROUGHPUT 0x08 #define IPTOS_RELIABILITY 0x04 -/* IPTOS_LOWCOST 0x02 XXX */ +#define IPTOS_MINCOST 0x02 +/* ECN RFC3168 obsoletes RFC2481, and these will be deprecated soon. */ +#define IPTOS_CE 0x01 /* congestion experienced */ +#define IPTOS_ECT 0x02 /* ECN-capable transport */ /* - * Definitions for IP precedence (also in ip_tos) (hopefully unused) + * Definitions for IP precedence per RFC1195 (also in ip_tos) (hopefully unused) */ #define IPTOS_PREC_NETCONTROL 0xe0 #define IPTOS_PREC_INTERNETCONTROL 0xc0 @@ -91,16 +153,6 @@ #define IPTOS_PREC_ROUTINE 0x00 /* - * ECN (Explicit Congestion Notification) codepoints in RFC3168 - * mapped to the lower 2 bits of the TOS field. - */ -#define IPTOS_ECN_NOTECT 0x00 /* not-ECT */ -#define IPTOS_ECN_ECT1 0x01 /* ECN-capable transport (1) */ -#define IPTOS_ECN_ECT0 0x02 /* ECN-capable transport (0) */ -#define IPTOS_ECN_CE 0x03 /* congestion experienced */ -#define IPTOS_ECN_MASK 0x03 /* ECN field mask */ - -/* * Definitions for options. */ #define IPOPT_COPIED(o) ((o)&0x80) @@ -191,4 +243,3 @@ u_int16_t ippseudo_len; /* protocol length */ } __packed; #endif /* !_NETINET_IP_H_ */ -