diff options
author | Andreas Schultz <aschultz@warp10.net> | 2017-12-08 16:35:56 +0100 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2017-12-10 02:48:50 +0000 |
commit | 10593f81a7cfec2d0664f7c8abd173e1a33348cf (patch) | |
tree | 72719150d80103b56f87633aae1e2cac2d69dfc1 /src/vnet | |
parent | c1214bd1b619d3f566be5a1783cfe717ee608136 (diff) |
update builtin UDP server to new vnet_session API
* app_index has to be valid
* vnet_session needs to be enabled before binding
Change-Id: I410a25153e650d8bc332131a81bf46a0175566d4
Signed-off-by: Andreas Schultz <aschultz@warp10.net>
Diffstat (limited to 'src/vnet')
-rw-r--r-- | src/vnet/udp/builtin_server.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/vnet/udp/builtin_server.c b/src/vnet/udp/builtin_server.c index 8f8cb4040a8..29c33beba2e 100644 --- a/src/vnet/udp/builtin_server.c +++ b/src/vnet/udp/builtin_server.c @@ -23,6 +23,7 @@ /** per-worker built-in server copy buffers */ u8 **copy_buffers; +static int app_index = ~0; static int builtin_session_create_callback (stream_session_t * s) @@ -38,6 +39,21 @@ builtin_session_disconnect_callback (stream_session_t * s) stream_session_disconnect (s); } +static void +builtin_session_reset_callback (stream_session_t * s) +{ + clib_warning ("Reset session %U", format_stream_session, s, 2); + stream_session_cleanup (s); +} + +static int +builtin_session_connected_callback (u32 app_index, u32 api_context, + stream_session_t * s, u8 is_fail) +{ + clib_warning ("called..."); + return -1; +} + static int builtin_server_rx_callback (stream_session_t * s) { @@ -84,8 +100,10 @@ builtin_server_rx_callback (stream_session_t * s) /* *INDENT-OFF* */ static session_cb_vft_t builtin_server = { .session_accept_callback = builtin_session_create_callback, + .session_connected_callback = builtin_session_connected_callback, .session_disconnect_callback = builtin_session_disconnect_callback, - .builtin_server_rx_callback = builtin_server_rx_callback + .builtin_server_rx_callback = builtin_server_rx_callback, + .session_reset_callback = builtin_session_reset_callback }; /* *INDENT-ON* */ @@ -116,6 +134,8 @@ attach_builtin_uri_server () if (vnet_application_attach (a)) return -1; + + app_index = a->app_index; return 0; } @@ -131,7 +151,7 @@ bind_builtin_uri_server (u8 * uri) memset (a, 0, sizeof (*a)); a->uri = (char *) uri; - a->app_index = ~0; /* built-in server */ + a->app_index = app_index; rv = vnet_bind_uri (a); @@ -143,7 +163,7 @@ unbind_builtin_uri_server (u8 * uri) { vnet_unbind_args_t _a, *a = &_a; - a->app_index = ~0; + a->app_index = app_index; a->uri = (char *) uri; return vnet_unbind_uri (a); @@ -182,6 +202,8 @@ builtin_uri_bind_command_fn (vlib_main_t * vm, if (uri == 0) return clib_error_return (0, "uri to bind not specified..."); + vnet_session_enable_disable (vm, 1 /* turn on UDP, etc. */ ); + rv = bind_builtin_uri_server (uri); vec_free (uri); |