git: d14bf9de60a8 - stable/14 - netinet: Define IPv6 ECN mask

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Thu, 11 Jan 2024 14:32:27 UTC
The branch stable/14 has been updated by markj:

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

commit d14bf9de60a879dd9fccfbe977b467e87c0d357d
Author:     Jose Luis Duran <jlduran@gmail.com>
AuthorDate: 2023-10-28 02:50:18 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2024-01-11 14:18:12 +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
    
    (cherry picked from commit b0e13f785b336670bdf39b83a78435b00d00f43c)
---
 sys/netinet/ip6.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/sys/netinet/ip6.h b/sys/netinet/ip6.h
index 8c3459339bbc..7b85fd5b4ddd 100644
--- a/sys/netinet/ip6.h
+++ b/sys/netinet/ip6.h
@@ -97,10 +97,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