This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 2.10-357-ga0902db 1/1] Add DSCP/ECN to netinet/ip.h
- From: "Philip A. Prindeville" <philipp at redfish-solutions dot com>
- To: libc-alpha at sources dot redhat dot com
- Date: Fri, 16 Oct 2009 14:24:15 -0700
- Subject: [PATCH 2.10-357-ga0902db 1/1] Add DSCP/ECN to netinet/ip.h
Most of the Internet has deprecated TOS and Precedence markings, in favor of
DSCP... yet DSCP definitions aren't in /usr/include to allow sockets-based
programs to facilitate such markings (and in doing so, improve the overall
performance of the Internet by more correctly utilizing available resources).
DSCP is obviously useful. ECN is included here for completeness (since ip_tos
is an u_int8_t, all bits should be described). Some diagnostic programs such
as tcpdump can use these definitions.
2009-10-14 Philip Prindeville <philipp@redfish-solutions.com>
* sysdeps/include/generic/netinet/ip.h: Add DSCP definitions
for ip_tos (per RFC's 2597 and 2598). Add ECN definitions (per
RFC 3168).
Fixes: http://sourceware.org/bugzilla/show_bug.cgi?id=10789
---
diff --git a/sysdeps/generic/netinet/ip.h b/sysdeps/generic/netinet/ip.h
index fc91440..38bd755 100644
--- a/sysdeps/generic/netinet/ip.h
+++ b/sysdeps/generic/netinet/ip.h
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,93,95,96,97,98,99,2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,95,96,97,98,99,2000,2009 Free Software
+ Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -153,6 +154,41 @@ struct ip_timestamp
#define IP_MAXPACKET 65535 /* maximum packet size */
/*
+ * Definitions for Explicit Congestion Notification (ECN)
+ *
+ * Taken from RFC-3168, Section 5.
+ */
+
+#define IPTOS_ECN_MASK 0x03
+#define IPTOS_ECN(x) ((x) & IPTOS_ECN_MASK)
+#define IPTOS_ECN_NOT_ECT 0x00
+#define IPTOS_ECN_ECT1 0x01
+#define IPTOS_ECN_ECT0 0x02
+#define IPTOS_ECN_CE 0x03
+
+/*
+ * Definitions for IP differentiated services code points (DSCP)
+ *
+ * Taken from RFC-2597, Section 6 and RFC-2598, Section 2.3.
+ */
+
+#define IPTOS_DSCP_MASK 0xfc
+#define IPTOS_DSCP(x) ((x) & IPTOS_DSCP_MASK)
+#define IPTOS_DSCP_AF11 0x28
+#define IPTOS_DSCP_AF12 0x30
+#define IPTOS_DSCP_AF13 0x38
+#define IPTOS_DSCP_AF21 0x48
+#define IPTOS_DSCP_AF22 0x50
+#define IPTOS_DSCP_AF23 0x58
+#define IPTOS_DSCP_AF31 0x68
+#define IPTOS_DSCP_AF32 0x70
+#define IPTOS_DSCP_AF33 0x78
+#define IPTOS_DSCP_AF41 0x88
+#define IPTOS_DSCP_AF42 0x90
+#define IPTOS_DSCP_AF43 0x98
+#define IPTOS_DSCP_EF 0xb8
+
+/*
* Definitions for IP type of service (ip_tos)
*/
#define IPTOS_TOS_MASK 0x1E
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>