mpls: MPLS Hash fixes 10/31110/2
authorNeale Ranns <neale@graphiant.com>
Thu, 4 Feb 2021 10:54:22 +0000 (10:54 +0000)
committerNeale Ranns <neale@graphiant.com>
Thu, 4 Feb 2021 19:35:05 +0000 (19:35 +0000)
Type: fix

MPLS hash includes the IP hash at the bottom of the stack. Default this
to the IP default and use the value passed in to the compute function.

Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: I3f8cb0f7c4fe98ea903a752c2b5fd3d7e26d449a

src/vnet/fib/mpls_fib.h
src/vnet/mpls/mpls_lookup.h

index 8d18b00..33eaa88 100644 (file)
 #define MPLS_FIB_DB_SIZE (1 << (MPLS_FIB_KEY_SIZE-1))
 
 /**
- * There are no options for controlling the MPLS flow hash
+ * There are no options for controlling the MPLS flow hash,
+ * but since it mostly entails using IP data to create one, use that.
  */
-#define MPLS_FLOW_HASH_DEFAULT 0
+#define MPLS_FLOW_HASH_DEFAULT IP_FLOW_HASH_DEFAULT
 
 typedef struct mpls_fib_t_
 {
index 81c67ce..db1cf3d 100644 (file)
@@ -96,14 +96,14 @@ mpls_compute_flow_hash (const mpls_unicast_header_t * hdr,
     {
     case 4:
         /* incorporate the v4 flow-hash */
-        hash ^= ip4_compute_flow_hash ((const ip4_header_t *)hdr,
-                                       IP_FLOW_HASH_DEFAULT);
-        break;
+       hash ^=
+         ip4_compute_flow_hash ((const ip4_header_t *) hdr, flow_hash_config);
+       break;
     case 6:
         /* incorporate the v6 flow-hash */
-        hash ^= ip6_compute_flow_hash ((const ip6_header_t *)hdr,
-                                       IP_FLOW_HASH_DEFAULT);
-        break;
+       hash ^=
+         ip6_compute_flow_hash ((const ip6_header_t *) hdr, flow_hash_config);
+       break;
     case 5:
         /* incorporate the bier flow-hash */
         hash ^= bier_compute_flow_hash ((const bier_hdr_t *)hdr);