hsa: set connected mode for echo_server app in udp mode. 27/27627/9
authorjiangxiaoming <jiangxiaoming@outlook.com>
Mon, 22 Jun 2020 01:18:04 +0000 (09:18 +0800)
committerFlorin Coras <florin.coras@gmail.com>
Mon, 13 Jul 2020 21:41:32 +0000 (21:41 +0000)
Type: fix

Signed-off-by: jiangxiaoming <jiangxiaoming@outlook.com>
Change-Id: I85a53ee049a9af371d929364400fe166cf71d53f

src/plugins/hs_apps/echo_server.c

index c8335e3..4e75861 100644 (file)
@@ -400,14 +400,27 @@ echo_server_detach (void)
 static int
 echo_server_listen ()
 {
-  int rv;
+  i32 rv;
   echo_server_main_t *esm = &echo_server_main;
-  vnet_listen_args_t _a, *a = &_a;
-  clib_memset (a, 0, sizeof (*a));
-  a->app_index = esm->app_index;
-  a->uri = esm->server_uri;
-  rv = vnet_bind_uri (a);
-  esm->listener_handle = a->handle;
+  vnet_listen_args_t _args = {
+    .app_index = esm->app_index,
+    .sep_ext = {
+               .app_wrk_index = 0,
+               }
+  }, *args = &_args;
+
+  if ((rv = parse_uri (esm->server_uri, &args->sep_ext)))
+    {
+      return -1;
+    }
+
+  if (args->sep_ext.transport_proto == TRANSPORT_PROTO_UDP)
+    {
+      args->sep_ext.transport_flags = TRANSPORT_CFG_F_CONNECTED;
+    }
+
+  rv = vnet_listen (args);
+  esm->listener_handle = args->handle;
   return rv;
 }