Message ID | 1484984410-3304-2-git-send-email-roopa@cumulusnetworks.com |
---|---|
State | Not Applicable, archived |
Delegated to: | David Miller |
Headers | show |
On Fri, 20 Jan 2017 23:40:07 -0800 Roopa Prabhu <roopa@cumulusnetworks.com> wrote: > + if (!vxlan_addr_equal(&rd->remote_ip, ip) || > + rd->remote_port != port || > + rd->remote_vni != vni || > + rd->remote_ifindex != ifindex) { > + dst_cache_reset(&rd->dst_cache); > + rd->remote_ip = *ip; > + rd->remote_port = port; > + rd->remote_vni = vni; > + rd->remote_ifindex = ifindex; > + return 1; > + } > + I think it would be clearer if negative logic was avoided. if (vxlan_addr_equal(&rd->remote_ip, ip) && rd->remote_port == port && rd->remote_vni == vni && rd->ermote_ifindex == ifndex) return 1; dst_cache_reset ...
On 1/23/17, 9:02 AM, Stephen Hemminger wrote: > On Fri, 20 Jan 2017 23:40:07 -0800 > Roopa Prabhu <roopa@cumulusnetworks.com> wrote: > >> + if (!vxlan_addr_equal(&rd->remote_ip, ip) || >> + rd->remote_port != port || >> + rd->remote_vni != vni || >> + rd->remote_ifindex != ifindex) { >> + dst_cache_reset(&rd->dst_cache); >> + rd->remote_ip = *ip; >> + rd->remote_port = port; >> + rd->remote_vni = vni; >> + rd->remote_ifindex = ifindex; >> + return 1; >> + } >> + > I think it would be clearer if negative logic was avoided. > > if (vxlan_addr_equal(&rd->remote_ip, ip) && > rd->remote_port == port && > rd->remote_vni == vni && > rd->ermote_ifindex == ifndex) > return 1; > > dst_cache_reset ... ack, this was an accidental hit on send as well. It is on my upstream patch stack..but i think this patch is not really needed upstream because a previous call to vxlan_fdb_find_rdst in vxlan_fdb_replace does the same thing. I will test again and repost if needed, thanks.
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 15b1c23..72b99ff 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -467,12 +467,19 @@ static int vxlan_fdb_replace(struct vxlan_fdb *f, if (!rd) return 0; - dst_cache_reset(&rd->dst_cache); - rd->remote_ip = *ip; - rd->remote_port = port; - rd->remote_vni = vni; - rd->remote_ifindex = ifindex; - return 1; + if (!vxlan_addr_equal(&rd->remote_ip, ip) || + rd->remote_port != port || + rd->remote_vni != vni || + rd->remote_ifindex != ifindex) { + dst_cache_reset(&rd->dst_cache); + rd->remote_ip = *ip; + rd->remote_port = port; + rd->remote_vni = vni; + rd->remote_ifindex = ifindex; + return 1; + } + + return 0; } /* Add/update destinations for multicast */