ip: Router ID included in flow hash
[vpp.git] / src / vnet / ip / ip6_inlines.h
index 8376377..2a4bb70 100644 (file)
@@ -106,10 +106,13 @@ ip6_compute_flow_hash (const ip6_header_t * ip,
     }
 
   b ^= (flow_hash_config & IP_FLOW_HASH_PROTO) ? protocol : 0;
-  c = (flow_hash_config & IP_FLOW_HASH_REVERSE_SRC_DST) ?
-    ((t1 << 16) | t2) : ((t2 << 16) | t1);
-  t1 = ip->ip_version_traffic_class_and_flow_label & IP6_PACKET_FL_MASK;
-  c ^= (flow_hash_config & IP_FLOW_HASH_FL) ? (t1 << 32) : 0;
+  c = ((flow_hash_config & IP_FLOW_HASH_REVERSE_SRC_DST) ? ((t1 << 16) | t2) :
+                                                          ((t2 << 16) | t1));
+  t1 = ((u64) ip_flow_hash_router_id << 32);
+  t1 |=
+    ((flow_hash_config & IP_FLOW_HASH_FL) ? ip6_flow_label_network_order (ip) :
+                                           0);
+  c ^= t1;
 
   hash_mix64 (a, b, c);
   return (u32) c;