From 40d7902ade9906024aaf67951aeae21fbb8bcfd6 Mon Sep 17 00:00:00 2001 From: Martin Stein Date: Wed, 17 Aug 2016 12:14:24 +0200 Subject: [PATCH] lxip/udp_echo: read port from config Ref #114 --- repos/dde_linux/run/lxip_udp_echo.run | 5 +++-- repos/dde_linux/src/test/lxip/udp_echo/main.cc | 13 +++++++++++-- repos/dde_linux/src/test/lxip/udp_echo/target.mk | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/repos/dde_linux/run/lxip_udp_echo.run b/repos/dde_linux/run/lxip_udp_echo.run index 1178cdb1d..54afaadc7 100644 --- a/repos/dde_linux/run/lxip_udp_echo.run +++ b/repos/dde_linux/run/lxip_udp_echo.run @@ -50,7 +50,8 @@ set config { - + @@ -118,7 +119,7 @@ append qemu_args " -m 128 -nographic " append_if [have_spec x86] qemu_args " -net nic,model=e1000 " append_if [have_spec lan9118] qemu_args " -net nic,model=lan9118 " -append qemu_args " -net user -redir tcp:5555::80 " +append qemu_args " -net user -redir udp:5555::1337 " run_genode_until forever diff --git a/repos/dde_linux/src/test/lxip/udp_echo/main.cc b/repos/dde_linux/src/test/lxip/udp_echo/main.cc index b9d2dde67..27e6ccf37 100644 --- a/repos/dde_linux/src/test/lxip/udp_echo/main.cc +++ b/repos/dde_linux/src/test/lxip/udp_echo/main.cc @@ -21,7 +21,9 @@ #include #include #include +#include +using namespace Genode; int main(void) { @@ -33,10 +35,17 @@ int main(void) return -1; } + unsigned port = 0; + Xml_node libc_node = config()->xml_node().sub_node("libc"); + try { libc_node.attribute("port").value(&port); } + catch (...) { + error("Missing \"port\" attribute."); + throw Xml_node::Nonexistent_attribute(); + } Genode::log("Now, I will bind ..."); struct sockaddr_in in_addr; in_addr.sin_family = AF_INET; - in_addr.sin_port = htons(1337); + in_addr.sin_port = htons(port); in_addr.sin_addr.s_addr = INADDR_ANY; if(bind(s, (struct sockaddr*)&in_addr, sizeof(in_addr))) { Genode::error("bind failed!"); @@ -50,7 +59,7 @@ int main(void) socklen_t len = sizeof(addr); char buf[4096]; - memset(buf, 0, sizeof(buf)); + ::memset(buf, 0, sizeof(buf)); ssize_t n = recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr*)&addr, &len); diff --git a/repos/dde_linux/src/test/lxip/udp_echo/target.mk b/repos/dde_linux/src/test/lxip/udp_echo/target.mk index 7e8a97b9c..f6803b13c 100644 --- a/repos/dde_linux/src/test/lxip/udp_echo/target.mk +++ b/repos/dde_linux/src/test/lxip/udp_echo/target.mk @@ -1,3 +1,3 @@ TARGET = test-lxip_udp_echo -LIBS = libc libc_lxip +LIBS = libc libc_lxip config SRC_CC = main.cc