summary refs log tree commit diff stats
path: root/results/classifier/105/other/1628971
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-06-03 12:04:13 +0000
committerChristian Krinitsin <mail@krinitsin.com>2025-06-03 12:04:13 +0000
commit256709d2eb3fd80d768a99964be5caa61effa2a0 (patch)
tree05b2352fba70923126836a64b6a0de43902e976a /results/classifier/105/other/1628971
parent2ab14fa96a6c5484b5e4ba8337551bb8dcc79cc5 (diff)
downloadqemu-analysis-256709d2eb3fd80d768a99964be5caa61effa2a0.tar.gz
qemu-analysis-256709d2eb3fd80d768a99964be5caa61effa2a0.zip
add new classifier result
Diffstat (limited to 'results/classifier/105/other/1628971')
-rw-r--r--results/classifier/105/other/162897177
1 files changed, 77 insertions, 0 deletions
diff --git a/results/classifier/105/other/1628971 b/results/classifier/105/other/1628971
new file mode 100644
index 000000000..064f0629f
--- /dev/null
+++ b/results/classifier/105/other/1628971
@@ -0,0 +1,77 @@
+other: 0.797
+mistranslation: 0.782
+assembly: 0.760
+instruction: 0.743
+graphic: 0.736
+device: 0.725
+semantic: 0.710
+vnc: 0.697
+KVM: 0.685
+network: 0.683
+boot: 0.646
+socket: 0.622
+
+-netdev user: guestfwd doesn't work
+
+Hello!
+
+QEMU emulator version 2.6.1 (Debian 1:2.6.1+dfsg-0ubuntu4), Copyright (c) 2003-2008 Fabrice Bellard
+
+The IP address 192.168.1.46 is assigned to eth0.
+
+qemu-system-x86_64 \
+    -no-hpet \
+    -nodefconfig \
+    -machine accel=kvm \
+    -cpu host \
+    -smp 2 \
+    -drive if=virtio,file=yakkety-server-cloudimg-amd64.img \
+    -device virtio-net-pci,netdev=net0 \
+    -netdev 'user,id=net0,hostfwd=tcp::2222-:22,guestfwd=tcp:1.2.3.4:1234-cmd:nc 192.168.1.46 8842' \
+    -m 1024 \
+    -initrd yakkety-server-cloudimg-amd64-initrd-generic \
+    -kernel yakkety-server-cloudimg-amd64-vmlinuz-generic \
+    -append 'root=/dev/vda1 modprobe.blacklist=floppy systemd.log_level=debug systemd.journald.forward_to_console=1'
+
+Without the guestfwd=... part everything works nicely. With it I get the following message.
+
+
+qemu-system-x86_64: -netdev user,id=net0,hostfwd=tcp::2222-:22,guestfwd=tcp:1.2.3.4:1234-cmd:nc 192.168.1.46 8842: conflicting/invalid host:port in guest forwarding rule 'tcp:1.2.3.4:1234-cmd:nc 192.168.1.46 8842'
+qemu-system-x86_64: -netdev user,id=net0,hostfwd=tcp::2222-:22,guestfwd=tcp:1.2.3.4:1234-cmd:nc 192.168.1.46 8842: Device 'user' could not be initialized
+
+
+But I just compiled c640f2849ee8775fe1bbd7a2772610aa77816f9f, and I get the same behavior.
+
+pas@strange:~/qemu/x86_64-softmmu$ ./qemu-system-x86_64 -net 'user,guestfwd=tcp:1.2.3.4:1234-cmd:nc 192.168.1.48 80'
+qemu-system-x86_64: -net user,guestfwd=tcp:1.2.3.4:1234-cmd:nc 192.168.1.48 80: conflicting/invalid host:port in guest forwarding rule 'tcp:1.2.3.4:1234-cmd:nc 192.168.1.48 80'
+qemu-system-x86_64: -net user,guestfwd=tcp:1.2.3.4:1234-cmd:nc 192.168.1.48 80: Device 'user' could not be initialized
+
+
+After poking a bit around it seems that this check fails in slirp/slirp.c: (around line 1074)
+
+    if ((guest_addr->s_addr & slirp->vnetwork_mask.s_addr) !=
+        slirp->vnetwork_addr.s_addr ||
+        guest_addr->s_addr == slirp->vhost_addr.s_addr ||
+        guest_addr->s_addr == slirp->vnameserver_addr.s_addr) {
+        return -1;
+    }
+
+Because guest_addr, and slirp has equivalent s_addr values.
+
+x86_64-softmmu/qemu-system-x86_64 -net 'user,net=10.0.2.0/24,host=10.0.2.2,guestfwd=tcp:12.0.0.2:80-cmd:echo ok'
+
+guest_addr: 12.0.0.2
+vnetwork_mask: 12.0.0.2
+vhost_addr: 12.0.0.2
+vnameserver_addr: 12.0.0.2
+guest_addr & mask: 12.0.0.2
+
+
+Thanks in advance for looking into this!
+
+Not sure whether this is really a bug or working as intended - but apparently, the server IP address from the guest point of view (before the NAT) has to be in the same subnet as the guest itself. So everything should work fine if you use something like this in your first example:
+
+ -netdev 'user,id=net0,hostfwd=tcp::2222-:22,guestfwd=tcp:10.0.2.200:1234-cmd:nc 192.168.1.46 8842'
+
+(i.e. just replace the 1.2.3.4 with 10.0.2.200)
+