QEMU networking: CONFIG_NET_TESTING breaks things, echo_server IPv6 address is "wrong"


Paul Sokolovsky
 

Hello,

Taking a chance, I'd like to start with drawing attention to
https://jira.zephyrproject.org/browse/ZEP-687 "docs:
Subsystems/Networking section is almost empty". Zephyr networking
information currently is sparse, disperse, bits are out of date, and
there're omissions/inconsistencies. Just linking a wiki landing
page from the official docs and letting community fill in that wiki
would be a good first step.

Anyway, waiting for real hardware support, I decided to give QEMU
networking a try. After some moderate googling, I arrived at
https://gerrit.zephyrproject.org/r/gitweb?p=net-tools.git;a=summary and
https://wiki.zephyrproject.org/view/Networking-with-Qemu . The initial
outcome: nothing works.

On a 3rd day of fiddling, with a following patch to echo_server it
finally worked:

--- a/samples/net/echo_server/prj_slip.conf
+++ b/samples/net/echo_server/prj_slip.conf
-CONFIG_NET_TESTING=y
+CONFIG_NET_TESTING=n
diff --git a/samples/net/echo_server/src/echo-server.c b/samples/net/echo_server/src/echo-server.c
index deb0d98..9ceef46 100644
--- a/samples/net/echo_server/src/echo-server.c
+++ b/samples/net/echo_server/src/echo-server.c
-#define MY_IPADDR { { { 0x20, 0x01, 0x0d, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x1 } } }
+#define MY_IPADDR { { { 0x20, 0x01, 0x0d, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2 } } }

Commentary: Both
https://gerrit.zephyrproject.org/r/gitweb?p=net-tools.git;a=blob;f=README;h=38c74ad4e186794d8598f2cd0cb0302b0c0316ea;hb=HEAD
and
https://gerrit.zephyrproject.org/r/gitweb?p=net-tools.git;a=blob;f=loop-slip.sh;h=43ba09f04e592c734f992a34cbc46a4034f18b5b;hb=HEAD
configure host's side of tun interface with address 2001:db8::1, but
that's also what echo-server uses, so no talk between them.

That's however a 2nd in row issue, because with CONFIG_NET_TESTING=y, an
application thread doesn't really receive any packets, apparently due to
app's address being configured as IN6ADDR_ANY_INIT (or something else,
few minutes of looking at this NET_TESTING thing isn't enough to say
what it's doing).

In the nearby thread, Rohit Grover reported issues with getting echo on
a real hardware, so I wonder if CONFIG_NET_TESTING=y may be involved
too.

That's the source code side of the issue, another is documentation.
Both net-tools/README and the wiki page above omit some details to get
a virtual network set up seamlessly.


So, I'm not sure what the exact issue is. I may imagine following
might happen:

1. There was a simple CONFIG_NET_TESTING, for things like echo_server.
2. Later, it was made into a separate module, but echo_server possibly
wasn't updated to play with the new module well.
3. net-tools and wiki page predate CONFIG_NET_TESTING altogether.

The obvious question is what to do in this situation. I'm personally
keen to update https://wiki.zephyrproject.org/view/Networking-with-Qemu
to describe a setup which actually works now (this is mostly doing
steps in the right order, but also building with CONFIG_NET_TESTING=n).


Thanks,
Paul

Linaro.org | Open source software for ARM SoCs
Follow Linaro: http://www.facebook.com/pages/Linaro
http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog

Join {devel@lists.zephyrproject.org to automatically receive all group messages.