From 68b24e2c9ae80839d15f680959cce31ca3ec2123 Mon Sep 17 00:00:00 2001 From: Paul Vinciguerra Date: Sat, 18 May 2019 22:09:28 -0400 Subject: [PATCH] plugins: http_static. Migrate to use api string type. This is not my core competency. Reviews/feedback/suggestions welcomed. ;) Tested with: rv = self.vapi.http_static_enable( fifo_size = 1, cache_size_limit = 1000000, prealloc_fifos = 0, private_segment_size = 0, uri="tcp://0.0.0.0/80", www_root = "/var/tmp/run/vpp/html" ) DBGvpp# show http static server www_root /var/tmp/run/vpp/html, cache size 0 bytes, limit 1000000 bytes, evictions 0 Change-Id: I0f660753317ceedab89da1b65701a24d6f7145de Signed-off-by: Paul Vinciguerra --- src/plugins/http_static/http_static.api | 8 ++++---- src/plugins/http_static/http_static.c | 18 ++++++++++++++---- src/plugins/http_static/http_static_test.c | 8 +++++--- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/plugins/http_static/http_static.api b/src/plugins/http_static/http_static.api index 1866e38cb47..dc3dcac71ba 100644 --- a/src/plugins/http_static/http_static.api +++ b/src/plugins/http_static/http_static.api @@ -1,8 +1,8 @@ /** \file - This file defines static http servercontrol-plane API messages + This file defines static http server control-plane API messages */ -option version = "1.0.0"; +option version = "2.0.0"; /** \brief Configure and enable the static http server @param client_index - opaque cookie to identify the sender @@ -29,7 +29,7 @@ autoreply define http_static_enable { u32 private_segment_size; /* Root of the html path */ - u8 www_root[256]; + string www_root[limit=256]; /* The bind URI */ - u8 uri[256]; + string uri[limit=256]; }; diff --git a/src/plugins/http_static/http_static.c b/src/plugins/http_static/http_static.c index d4ec2983680..41601f96321 100644 --- a/src/plugins/http_static/http_static.c +++ b/src/plugins/http_static/http_static.c @@ -26,6 +26,8 @@ /* define message IDs */ #include +#include + /* define message structures */ #define vl_typedefs #include @@ -64,14 +66,22 @@ static void vl_api_http_static_enable_t_handler vl_api_http_static_enable_reply_t *rmp; http_static_main_t *hmp = &http_static_main; int rv; + u8 *www_root; + u8 *uri; + + char *p = (char *) &mp->www_root; + www_root = + format (0, "%s%c", vl_api_from_api_string_c ((vl_api_string_t *) p), 0), + p += vl_api_string_len ((vl_api_string_t *) p) + sizeof (vl_api_string_t); + uri = + format (0, "%s%c", vl_api_from_api_string_c ((vl_api_string_t *) p), 0); - mp->uri[ARRAY_LEN (mp->uri) - 1] = 0; - mp->www_root[ARRAY_LEN (mp->www_root) - 1] = 0; rv = http_static_server_enable_api - (ntohl (mp->fifo_size), ntohl (mp->cache_size_limit), + (ntohl (mp->fifo_size), + ntohl (mp->cache_size_limit), ntohl (mp->prealloc_fifos), - ntohl (mp->private_segment_size), mp->www_root, mp->uri); + ntohl (mp->private_segment_size), www_root, uri); REPLY_MACRO (VL_API_HTTP_STATIC_ENABLE_REPLY); } diff --git a/src/plugins/http_static/http_static_test.c b/src/plugins/http_static/http_static_test.c index 59cc5f1b29f..0720463cf63 100644 --- a/src/plugins/http_static/http_static_test.c +++ b/src/plugins/http_static/http_static_test.c @@ -155,9 +155,11 @@ api_http_static_enable (vat_main_t * vam) /* Construct the API message */ M (HTTP_STATIC_ENABLE, mp); - clib_strncpy ((char *) mp->www_root, (char *) www_root, - ARRAY_LEN (mp->www_root) - 1); - clib_strncpy ((char *) mp->uri, (char *) uri, ARRAY_LEN (mp->uri) - 1); + vl_api_to_api_string (strnlen ((const char *) www_root, 256), + (const char *) www_root, + (vl_api_string_t *) & mp->www_root); + vl_api_to_api_string (strnlen ((const char *) uri, 256), (const char *) uri, + (vl_api_string_t *) & mp->uri); mp->fifo_size = ntohl (fifo_size); mp->cache_size_limit = ntohl (cache_size_limit); mp->prealloc_fifos = ntohl (prealloc_fifos); -- 2.16.6