Martin Stein 619474bc90 nic_router: drop fragmented IPv4
The NIC router used to ignore the IPv4 header fields "More fragments" and
"Fragment offset" completely. Therefore higher-level protocols of fragmented
IPv4 were interpreted wrong because each fragment was considered a self-
standing packet, expecting, for instance UDP/TCP headers somewhere inside of
the UDP/TCP data field. Normally, such packets were dropped as soon as the
UDP/TCP checksum check failed because of the misinterpretation. However,
it was also possible for fragmented IPv4 to pass the router although normally
only partially.

IPv4 fragmentation support in the router would introduce some potential
security risks and is presumably not an easy endeavor. So, for now, we settled
on not supporting IPv4 fragmentation. With this commit, the router simply drops
all fragmented IPv4. This is reflected to the log for each fragment as "drop
packet (fragmented IPv4 not supported)" when 'verbose_packet_drop="yes"' is
configured.

The new test 'run/nic_router_ipv4_fragm' is an automated test for this
behavior. The test is added to the autopilot list.

Ref #4236
2021-08-18 15:06:12 +02:00
..
2021-07-28 11:27:04 +02:00
2018-11-29 11:46:02 +01:00
2021-05-10 11:17:20 +02:00
2011-12-22 16:19:25 +01:00
2013-06-10 10:44:09 +02:00
2018-05-30 13:36:29 +02:00

This directory contains tools for managing and using the source code
of Genode.

:'create_builddir'

  The 'create_builddir' tool provides a convenient way to create build
  directories for different platforms. Its usage information is printed when
  starting the tool without arguments.

:'builddir/':

  This directory contains a Makefile template and configuration snippets used
  by the 'create_builddir' tool.

:'tool_chain':

  This tool downloads, builds, and installs the tool chain needed to build the
  Genode OS Framework. For getting usage information, start the tool without
  arguments.

:'create_iso':

  This simple tool helps to build bootable ISO images from your build of
  Genode. For getting usage information, start the tool without arguments.

:'create_grub2':

  This tool prepares a partitioned disk image with GRUB2 as boot
  loader.

:'grub2-head.img':

  This file is the head part of a partioned disk image including an
  installation of GRUB2 as boot loader. GRUB2 is available from
  http://www.gnu.org/software/grub/ and in major Linux distributions.
  Steps to reproduce the image creation can be found in
  'create_grub2'.

:'beautify':

  Beautify is a coding-style checking tool that analyzes source code for its
  adherence to Genode's coding style as described in 'doc/coding_style.txt'.
  Whenever possible, the tool tries to fix the issues and outputs a corrected
  file.  Some corrections, however, require human interaction.  In this case,
  the tool stops the analysis with an error.

:'parse_cxx':

  This tool is a C++ parser used as front-end for Beautify.

:'cxx_to_html':

  This tool converts a C++ source file to a HTML view to be used for the API
  documentation at the genode.org website. It relies on 'parse_cxx' to do the
  actual C++ parsing.

:'fix_include_ifndef':

  This tool helps with assigning consistent include guards to header files.

:'boot':

  This directory contains boot-loader files needed to create boot images.

:'autopilot':

  Autopilot is a tool for the automatic execution of run scripts among multiple
  base platforms.

:'abi_symbols':

  The utility assists with the initial creation of a ABI-symbols file, taking
  a shared object as a starting point. For more information, refer to the
  header of the 'abi_symbols' script.

:'check_abi':

  The 'check_abi' helper is used by the build system to detect violations of
  an ABI by a shared library. Most importantly, it reports incompatibilities of
  symbol sizes, which require an adaptation of the ABI. For more information,
  refer to the header of the 'check_abi' script.