Skip to content

Commit

Permalink
Calcaulte udp source port for multicast pkt using right hash
Browse files Browse the repository at this point in the history
While calculating the UDP source port for a multicast packet, the hash
needs to be on Ethernet header and VRF Id. For packet arriving from VM
and Tor, there are no extra header other than transport headers. So the
hash is calculated rightly for these packets. But for packets arriving
from other compute node, there are additional header other than
transport headers. The hash is wrongly calculated in this case on thsese
additional headers leading to different hash for the same Ethernet
headers, resulting in different UDP sourcd port.

The offset is correctly calculated and right ethernet header is passed
to hash function as fix.

Change-Id: I93ae0d96e536875988da6a525cdba4783c1e4d6e
closes-bug: #1635046
  • Loading branch information
divakardhar committed Oct 21, 2016
1 parent 29d3886 commit 3ae57ff
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion dp-core/vr_nexthop.c
Expand Up @@ -906,7 +906,7 @@ nh_composite_mcast_l2(struct vr_packet *pkt, struct vr_nexthop *nh,
get_random_bytes(&vr_hashrnd, sizeof(vr_hashrnd));
hashrnd_inited = 1;
}
hashval = vr_hash(pkt_data(pkt), sizeof(struct vr_eth), vr_hashrnd);
hashval = vr_hash(eth, sizeof(struct vr_eth), vr_hashrnd);
/* Include the VRF to calculate the hash */
hashval = vr_hash_2words(hashval, fmd->fmd_dvrf, vr_hashrnd);

Expand Down

0 comments on commit 3ae57ff

Please sign in to comment.