summaryrefslogtreecommitdiff
path: root/lib/if.h
diff options
context:
space:
mode:
authorLouis Scalbert <louis.scalbert@6wind.com>2023-02-02 15:44:31 +0100
committerLouis Scalbert <louis.scalbert@6wind.com>2023-02-02 16:20:01 +0100
commit81e7bb3dbd791898e5a37891c7d675e1b9f4ab44 (patch)
treed86e6da08db37025d22a5863da52acd8b78844a5 /lib/if.h
parent7d1cbd75e147e3958dc197e7e40b7b50ce597276 (diff)
lib: fix traffic engineering extended mask
RFC7471 and RFC8570 have defined the Extended Traffic Engineering metrics that are carried within TLV of 32 bits data length. Extended metrics, excepting bandwidth ones, use the following format: > 0 1 2 3 > 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ > | Type | Length | > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ > |A| RESERVED | Value | > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Data contains a flag/reserved of 8 bits and a 24 bits value. The TE_EXT_MASK mask macro extracts a 28 bits value from a 32 bits variable instead of 24 bits. It works in most of the case because RESERVED bits are generally set to 0. Fix the TE_EXT_MASK mask. Fixes: 16f1b9ee29 ("Update Traffic Engineering Support for OSPFD") Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
Diffstat (limited to 'lib/if.h')
-rw-r--r--lib/if.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/if.h b/lib/if.h
index a653246ccb..acd60e9d06 100644
--- a/lib/if.h
+++ b/lib/if.h
@@ -140,7 +140,7 @@ struct if_stats {
#endif /* HAVE_PROC_NET_DEV */
/* Here are "non-official" architectural constants. */
-#define TE_EXT_MASK 0x0FFFFFFF
+#define TE_EXT_MASK 0x00FFFFFF
#define TE_EXT_ANORMAL 0x80000000
#define LOSS_PRECISION 0.000003
/* TE_MEGA_BIT and TE_BYTE are utilized to convert TE bandwidth */