vxlan: fixed incorrect field layout specification

The "NextProtocol" field was added as an unconditional field which made the
VXLAN packet header consume an additional 8-bts when used in a Legacy VXLAN
deployments (flags=0x08) or in GPID deployments (flags=0x88).  The resulting
regression caused incorrect parsing of subsequent headers.  For example, if an
Ethernet header followed the VXLAN header then it would not be interpreted as
an Ethernet header.  The actually interpretation would depend on what value was
stored in the Ether.dst field.

This change updates the field layout specification such that the NextProtocol
field is conditional on flags=0x04, and shortens the reserved field by 8-bits
if that condition is true.

fixes bug #281

Signed-off-by: Allain Legacy <allain.legacy@windriver.com>
2 files changed
tree: 2b605ece3a8aa72461926d661214aab64c3074cb
  1. .travis/
  2. bin/
  3. doc/
  4. scapy/
  5. test/
  6. .gitignore
  7. .hgsigs
  8. .hgtags
  9. .travis.yml
  10. CONTRIBUTING.md
  11. LICENSE
  12. MANIFEST.in
  13. README.md
  14. run_scapy
  15. run_scapy.bat
  16. setup.cfg
  17. setup.py
README.md

Scapy

Build Status

Scapy is a powerful Python-based interactive packet manipulation program and library.

It is able to forge or decode packets of a wide number of protocols, send them on the wire, capture them, match requests and replies, and much more.

It can easily handle most classical tasks like scanning, tracerouting, probing, unit tests, attacks or network discovery (it can replace hping, 85% of nmap, arpspoof, arp-sk, arping, tcpdump, tethereal, p0f, etc.). It also performs very well at a lot of other specific tasks that most other tools can't handle, like sending invalid frames, injecting your own 802.11 frames, combining technics (VLAN hopping+ARP cache poisoning, VOIP decoding on WEP encrypted channel, ...), etc.

See interactive tutorial and the quick demo: an interactive session (some examples may be outdated).

Contributing

Want to contribute? Great! Please take a few minutes to read this!

License

Scapy is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.

Scapy is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Scapy. If not, see the gnu.org web site.