git: b0e13f785b33 - main - netinet: Define IPv6 ECN mask

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Wed, 03 Jan 2024 18:32:56 UTC
The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=b0e13f785b336670bdf39b83a78435b00d00f43c

commit b0e13f785b336670bdf39b83a78435b00d00f43c
Author:     Jose Luis Duran <jlduran@gmail.com>
AuthorDate: 2023-10-28 02:50:18 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2024-01-03 17:56:28 +0000

    netinet: Define IPv6 ECN mask
    
    Define a mask for the code point used for ECN in the Traffic Class field
    (2 bits) of an IPv6 header.
    
         BE:    0       0       3       0       0       0       0       0
        Bit: 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |Version| Traffic Class |           Flow Label                  |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
            |                              ...                              |
    
    For BE (Big Endian), or network-byte order, this corresponds to 0x00300000.
    For Little Endian, it corresponds to 0x00003000.
    
    Reviewed by:    imp, markj
    MFC after:      1 week
    Pull Request:   https://github.com/freebsd/freebsd-src/pull/879
---
 sys/netinet/ip6.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sys/netinet/ip6.h b/sys/netinet/ip6.h
index 9807e6a1780a..2f61d594e59d 100644
--- a/sys/netinet/ip6.h
+++ b/sys/netinet/ip6.h
@@ -95,10 +95,12 @@ struct ip6_hdr {
 #if BYTE_ORDER == BIG_ENDIAN
 #define IPV6_FLOWINFO_MASK	0x0fffffff	/* flow info (28 bits) */
 #define IPV6_FLOWLABEL_MASK	0x000fffff	/* flow label (20 bits) */
+#define IPV6_ECN_MASK		0x00300000	/* ECN code point (2 bits) */
 #else
 #if BYTE_ORDER == LITTLE_ENDIAN
 #define IPV6_FLOWINFO_MASK	0xffffff0f	/* flow info (28 bits) */
 #define IPV6_FLOWLABEL_MASK	0xffff0f00	/* flow label (20 bits) */
+#define IPV6_ECN_MASK		0x00003000	/* ECN code point (2 bits) */
 #endif /* LITTLE_ENDIAN */
 #endif
 #define IPV6_FLOWLABEL_LEN	20