qemu-e2k/net
Thomas Jansen 9d6267b240 net/eth: Don't consider ESP to be an IPv6 option header
The IPv6 option headers all have in common that they start with some
common fields, in particular the type of the next header followed by the
extention header length. This is used to traverse the list of the
options. The ESP header does not follow that format, which can break the
IPv6 option header traversal code in eth_parse_ipv6_hdr().

The effect of that is that network interfaces such as vmxnet3 that use
the following call chain
  eth_is_ip6_extension_header_type
  eth_parse_ipv6_hdr
  net_tx_pkt_parse_headers
  net_tx_pkt_parse
  vmxnet3_process_tx_queue
to send packets from the VM out to the host will drop packets of the
following structure:
  Ethernet-Header(IPv6-Header(ESP(encrypted data)))

Note that not all types of network interfaces use the net_tx_pkt_parse
function though, leading to inconsistent behavior regarding sending
those packets. The e1000 network interface for example does not suffer
from this limitation.

By not considering ESP to be an IPv6 header we can allow sending those
packets out to the host on all types of network interfaces.

Fixes: 75020a7021 ("Common definitions for VMWARE devices")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/149
Buglink: https://bugs.launchpad.net/qemu/+bug/1758091
Signed-off-by: Thomas Jansen <mithi@mithi.net>
Signed-off-by: Jason Wang <jasowang@redhat.com>
2022-02-14 11:50:44 +08:00
..
can can_host: Use class properties 2020-12-15 10:02:07 -05:00
announce.c Remove superfluous timer_del() calls 2021-01-08 15:13:38 +00:00
checksum.c net/checksum: Remove unused variable in net_checksum_add_iov 2021-07-26 07:06:58 -10:00
clients.h vhost-vdpa: introduce vhost-vdpa net client 2020-07-07 07:59:51 -04:00
colo-compare.c net/colo-compare.c: Update the default value comments 2022-02-14 11:50:44 +08:00
colo-compare.h Add the function of colo_compare_cleanup 2021-06-11 10:30:13 +08:00
colo.c Optimized the function of fill_connection_key. 2021-11-03 09:39:48 +01:00
colo.h Optimized the function of fill_connection_key. 2021-11-03 09:39:48 +01:00
dump.c rtc: Move RTC function prototypes to their own header 2022-01-28 14:29:46 +00:00
eth.c net/eth: Don't consider ESP to be an IPv6 option header 2022-02-14 11:50:44 +08:00
filter-buffer.c netfilter: Use class properties 2020-12-15 10:02:07 -05:00
filter-mirror.c net/filter: Optimize filter_send to coroutine 2022-02-14 11:50:44 +08:00
filter-replay.c hw: Do not include qemu/log.h if it is not necessary 2021-05-02 17:24:50 +02:00
filter-rewriter.c Optimized the function of fill_connection_key. 2021-11-03 09:39:48 +01:00
filter.c netfilter: Use class properties 2020-12-15 10:02:07 -05:00
hub.c hw/net: Make NetCanReceive() return a boolean 2020-03-31 21:14:35 +08:00
hub.h net: Remove deprecated [hub_id name] tuple of 'hostfwd_add' / 'hostfwd_remove' 2020-03-09 18:44:04 +00:00
l2tpv3.c Revert "qapi: net: Add query-netdev command" 2021-04-08 17:33:59 +08:00
meson.build Move the l2tpv3 test from configure to meson.build 2021-11-02 15:57:28 +01:00
net.c net: introduce control client 2021-10-20 04:44:05 -04:00
netmap.c Do not include sysemu/sysemu.h if it's not really necessary 2021-05-02 17:24:50 +02:00
queue.c net: introduce qemu_receive_packet() 2021-03-15 16:41:22 +08:00
slirp.c slirp: add configure option to disable smbd 2021-05-04 14:15:35 +02:00
socket.c Revert "qapi: net: Add query-netdev command" 2021-04-08 17:33:59 +08:00
tap-bsd.c -----BEGIN PGP SIGNATURE----- 2021-06-04 13:38:49 +01:00
tap-linux.c net: Fix uninitialized data usage 2022-02-14 11:50:44 +08:00
tap-linux.h net/tap: Added TUNSETSTEERINGEBPF code. 2021-06-04 15:25:46 +08:00
tap-solaris.c net: Added SetSteeringEBPF method for NetClientState. 2021-06-04 15:25:46 +08:00
tap-stub.c net: Added SetSteeringEBPF method for NetClientState. 2021-06-04 15:25:46 +08:00
tap-win32.c net: check the existence of peer before trying to pad 2021-04-23 11:11:28 +01:00
tap.c net/tap: Set return code on failure 2022-02-14 11:50:44 +08:00
tap_int.h net: Added SetSteeringEBPF method for NetClientState. 2021-06-04 15:25:46 +08:00
trace-events docs: fix references to docs/devel/tracing.rst 2021-06-02 06:51:09 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
util.c net: Clean up includes 2016-02-04 17:41:30 +00:00
util.h net: do not depend on slirp internals 2019-01-14 00:44:29 +01:00
vde.c Revert "qapi: net: Add query-netdev command" 2021-04-08 17:33:59 +08:00
vhost-user-stub.c vhost-net-user: add stubs for when no virtio-net device is present 2019-02-21 12:28:01 -05:00
vhost-user.c net/vhost-user: Fix device compatibility check 2021-10-15 16:05:46 +02:00
vhost-vdpa.c vdpa: Add dummy receive callback 2021-11-28 17:03:52 -05:00