Date: Thu, 19 Mar 2020 17:06:18 -0400 From: Jacques Fourie <jacques.fourie@gmail.com> To: freebsd-net@freebsd.org Subject: if_vxlan question Message-ID: <CALX0vxCR4cTVKNF8Qb87Km-89Pz1cZqVm=cd6sYjaKtyG9wG7w@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi,
I noticed that my FreeBSD box was dropping vxlan packets with higher VNI's.
Looking at the code it seems that the check at line 2548 is not correct:
if (vxh->vxlh_flags != htonl(VXLAN_HDR_FLAGS_VALID_VNI) ||
vxh->vxlh_vni & ~htonl(VXLAN_VNI_MASK)) <----- Incorrect?
goto out;
Let's say the VNI is 99901. This will arrive on the wire as
0x01,0x86,0x3d,0x00. The above check will compute 0x3d8601 & 0xff, which
will return 0x01. I think the correct version should be without the
htonl(), ie:
vxh->vxh_vni & ~VXLAN_VNI_MASK
Can someone please double check?
Thanks,
Jacques
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALX0vxCR4cTVKNF8Qb87Km-89Pz1cZqVm=cd6sYjaKtyG9wG7w>
