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 e894f7e commit 1c04f00
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 1c04f00

Please sign in to comment.