summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/vat2/jsonconvert.c26
-rw-r--r--src/vat2/jsonconvert.h86
-rw-r--r--src/vat2/test/vat2_test.api6
-rw-r--r--src/vat2/test/vat2_test.c6
4 files changed, 66 insertions, 58 deletions
diff --git a/src/vat2/jsonconvert.c b/src/vat2/jsonconvert.c
index d62cda1091c..645f7d4ca20 100644
--- a/src/vat2/jsonconvert.c
+++ b/src/vat2/jsonconvert.c
@@ -270,7 +270,8 @@ vl_api_ip4_address_t_fromjson (void **mp, int *len, cJSON *o,
if (!p)
return -1;
unformat_init_string (&input, p, strlen(p));
- unformat(&input, "%U", unformat_ip4_address, a);
+ if (!unformat (&input, "%U", unformat_ip4_address, a))
+ return -1;
return 0;
}
@@ -283,7 +284,9 @@ vl_api_ip4_prefix_t_fromjson (void **mp, int *len, cJSON *o,
if (!p)
return -1;
unformat_init_string (&input, p, strlen(p));
- unformat(&input, "%U/%d", unformat_ip4_address, &a->address, &a->len);
+ if (!unformat (&input, "%U/%d", unformat_ip4_address, &a->address,
+ &a->len))
+ return -1;
return 0;
}
@@ -302,7 +305,8 @@ vl_api_ip6_address_t_fromjson (void **mp, int *len, cJSON *o,
if (!p)
return -1;
unformat_init_string (&input, p, strlen(p));
- unformat(&input, "%U", unformat_ip6_address, a);
+ if (!unformat (&input, "%U", unformat_ip6_address, a))
+ return -1;
return 0;
}
@@ -315,7 +319,8 @@ vl_api_ip6_prefix_t_fromjson (void **mp, int *len, cJSON *o,
if (!p)
return -1;
unformat_init_string (&input, p, strlen(p));
- unformat(&input, "%U/%d", unformat_ip6_address, &a->address, &a->len);
+ if (!unformat (&input, "%U/%d", unformat_ip6_address, &a->address, &a->len))
+ return -1;
return 0;
}
@@ -408,7 +413,8 @@ vl_api_mac_address_t_fromjson (void **mp, int *len, cJSON *o,
char *p = cJSON_GetStringValue(o);
unformat_init_string (&input, p, strlen(p));
- unformat(&input, "%U", unformat_mac_address, a);
+ if (!unformat (&input, "%U", unformat_mac_address, a))
+ return -1;
return 0;
}
@@ -438,16 +444,6 @@ format_vl_api_interface_index_t (u8 *s, va_list *args)
return format (s, "%u", *a);
}
-uword
-unformat_vl_api_interface_index_t (unformat_input_t * input, va_list * args)
-{
- u32 *a = va_arg (*args, u32 *);
-
- if (!unformat (input, "%u", a))
- return 0;
- return 1;
-}
-
void
vl_api_string_cJSON_AddToObject(cJSON * const object, const char * const name, vl_api_string_t *astr)
{
diff --git a/src/vat2/jsonconvert.h b/src/vat2/jsonconvert.h
index ee1355f1f37..038ad74ac0e 100644
--- a/src/vat2/jsonconvert.h
+++ b/src/vat2/jsonconvert.h
@@ -35,54 +35,54 @@
#define _(T) \
int vl_api_ ##T## _fromjson(cJSON *o, T *d);
- foreach_vat2_fromjson
+foreach_vat2_fromjson
#undef _
-int vl_api_bool_fromjson(cJSON *o, bool *d);
- int vl_api_ip4_address_t_fromjson (void **mp, int *len, cJSON *o,
- vl_api_ip4_address_t *a);
- int vl_api_ip4_prefix_t_fromjson (void **mp, int *len, cJSON *o,
- vl_api_ip4_prefix_t *a);
- int vl_api_ip4_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
- vl_api_ip4_prefix_t *a);
- int vl_api_ip6_address_t_fromjson (void **mp, int *len, cJSON *o,
- vl_api_ip6_address_t *a);
- int vl_api_ip6_prefix_t_fromjson (void **mp, int *len, cJSON *o,
- vl_api_ip6_prefix_t *a);
- int vl_api_ip6_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
- vl_api_ip6_prefix_t *a);
- int vl_api_address_t_fromjson (void **mp, int *len, cJSON *o,
- vl_api_address_t *a);
- int vl_api_prefix_t_fromjson (void **mp, int *len, cJSON *o,
- vl_api_prefix_t *a);
- int vl_api_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
- vl_api_prefix_t *a);
- int vl_api_mac_address_t_fromjson (void **mp, int *len, cJSON *o,
- vl_api_mac_address_t *a);
+ /* Prototypes */
+ int
+ vl_api_bool_fromjson (cJSON *o, bool *d);
+int vl_api_ip4_address_t_fromjson (void **mp, int *len, cJSON *o,
+ vl_api_ip4_address_t *a);
+int vl_api_ip4_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+ vl_api_ip4_prefix_t *a);
+int vl_api_ip4_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+ vl_api_ip4_prefix_t *a);
+int vl_api_ip6_address_t_fromjson (void **mp, int *len, cJSON *o,
+ vl_api_ip6_address_t *a);
+int vl_api_ip6_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+ vl_api_ip6_prefix_t *a);
+int vl_api_ip6_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+ vl_api_ip6_prefix_t *a);
+int vl_api_address_t_fromjson (void **mp, int *len, cJSON *o,
+ vl_api_address_t *a);
+int vl_api_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+ vl_api_prefix_t *a);
+int vl_api_address_with_prefix_t_fromjson (void **mp, int *len, cJSON *o,
+ vl_api_prefix_t *a);
+int vl_api_mac_address_t_fromjson (void **mp, int *len, cJSON *o,
+ vl_api_mac_address_t *a);
- uword unformat_ip4_address (unformat_input_t *input, va_list *args);
- uword unformat_ip6_address (unformat_input_t *input, va_list *args);
- u8 *format_ip6_address (u8 *s, va_list *args);
- uword unformat_mac_address (unformat_input_t *input, va_list *args);
- u8 *format_ip4_address (u8 *s, va_list *args);
- u8 *format_vl_api_interface_index_t (u8 *s, va_list *args);
- uword unformat_vl_api_interface_index_t (unformat_input_t *input,
- va_list *args);
- u8 *format_vl_api_timestamp_t (u8 *s, va_list *args);
- u8 *format_vl_api_timedelta_t (u8 *s, va_list *args);
- uword unformat_vl_api_timedelta_t (unformat_input_t *input, va_list *args);
- uword unformat_vl_api_timestamp_t (unformat_input_t *input, va_list *args);
- u8 *format_vl_api_gbp_scope_t (u8 *s, va_list *args);
- uword unformat_vl_api_gbp_scope_t (unformat_input_t *input, va_list *args);
+uword unformat_ip4_address (unformat_input_t *input, va_list *args);
+uword unformat_ip6_address (unformat_input_t *input, va_list *args);
+u8 *format_ip6_address (u8 *s, va_list *args);
+uword unformat_mac_address (unformat_input_t *input, va_list *args);
+u8 *format_ip4_address (u8 *s, va_list *args);
+u8 *format_vl_api_interface_index_t (u8 *s, va_list *args);
+u8 *format_vl_api_timestamp_t (u8 *s, va_list *args);
+u8 *format_vl_api_timedelta_t (u8 *s, va_list *args);
+uword unformat_vl_api_timedelta_t (unformat_input_t *input, va_list *args);
+uword unformat_vl_api_timestamp_t (unformat_input_t *input, va_list *args);
+u8 *format_vl_api_gbp_scope_t (u8 *s, va_list *args);
+uword unformat_vl_api_gbp_scope_t (unformat_input_t *input, va_list *args);
- int vl_api_c_string_to_api_string (const char *buf, vl_api_string_t *str);
- void vl_api_string_cJSON_AddToObject (cJSON *const object,
- const char *const name,
- vl_api_string_t *astr);
+int vl_api_c_string_to_api_string (const char *buf, vl_api_string_t *str);
+void vl_api_string_cJSON_AddToObject (cJSON *const object,
+ const char *const name,
+ vl_api_string_t *astr);
- u8 *u8string_fromjson (cJSON *o, char *fieldname);
- int u8string_fromjson2 (cJSON *o, char *fieldname, u8 *data);
- int vl_api_u8_string_fromjson (cJSON *o, u8 *s, int len);
+u8 *u8string_fromjson (cJSON *o, char *fieldname);
+int u8string_fromjson2 (cJSON *o, char *fieldname, u8 *data);
+int vl_api_u8_string_fromjson (cJSON *o, u8 *s, int len);
#define foreach_vat2_tojson \
_(ip4_address) \
diff --git a/src/vat2/test/vat2_test.api b/src/vat2/test/vat2_test.api
index afc8afa4dd7..6d211552cf6 100644
--- a/src/vat2/test/vat2_test.api
+++ b/src/vat2/test/vat2_test.api
@@ -14,6 +14,7 @@
*/
import "vnet/ip/ip_types.api";
+import "vnet/interface_types.api";
autoreply define test_prefix {
vl_api_prefix_t pref;
@@ -94,3 +95,8 @@ autoreply define test_empty {
u32 client_index;
u32 context;
};
+
+/* Interface */
+autoreply define test_interface {
+ vl_api_interface_index_t sw_if_index;
+};
diff --git a/src/vat2/test/vat2_test.c b/src/vat2/test/vat2_test.c
index 89714c4f992..1ac46527b3c 100644
--- a/src/vat2/test/vat2_test.c
+++ b/src/vat2/test/vat2_test.c
@@ -162,6 +162,11 @@ struct msgs msgs[] = {
.tojson = (tojson_fn_t) vl_api_test_empty_t_tojson,
.fromjson = (fromjson_fn_t) vl_api_test_empty_t_fromjson,
},
+ {
+ .name = "test_interface",
+ .tojson = (tojson_fn_t) vl_api_test_interface_t_tojson,
+ .fromjson = (fromjson_fn_t) vl_api_test_interface_t_fromjson,
+ },
};
struct tests tests[] = {
@@ -190,6 +195,7 @@ struct tests tests[] = {
{ .s = "{\"_msgname\": \"test_addresses3\", \"n\": 2, \"a\": "
"[\"2001:db8::23\", \"2001:db8::23\"] }" },
{ .s = "{\"_msgname\": \"test_empty\"}" },
+ { .s = "{\"_msgname\": \"test_interface\", \"sw_if_index\": 100 }" },
};
int main (int argc, char **argv)