summaryrefslogtreecommitdiffstats
path: root/src/plugins/hs_apps/sapi/echo_common.c
diff options
context:
space:
mode:
authorNathan Skrzypczak <nathan.skrzypczak@gmail.com>2019-08-05 13:43:31 +0200
committerFlorin Coras <florin.coras@gmail.com>2019-08-16 14:47:38 +0000
commitecd1fc7dfa6a36d1774f71093380b3548a22346b (patch)
tree6ed2568a9950e955c4826941216af153c5b08b2f /src/plugins/hs_apps/sapi/echo_common.c
parentd25d364d2bc146d3e17ab7c4d558bcb0ce138b89 (diff)
hsa: Refactor quic_echo to allow other protocols
Type: refactor Change-Id: Iaef9091e1d057110530255e644fad1c298418966 Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
Diffstat (limited to 'src/plugins/hs_apps/sapi/echo_common.c')
-rw-r--r--src/plugins/hs_apps/sapi/echo_common.c158
1 files changed, 0 insertions, 158 deletions
diff --git a/src/plugins/hs_apps/sapi/echo_common.c b/src/plugins/hs_apps/sapi/echo_common.c
deleted file mode 100644
index a5c28145ba8..00000000000
--- a/src/plugins/hs_apps/sapi/echo_common.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (c) 2019 Cisco and/or its affiliates.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <signal.h>
-
-#include <vnet/session/application_interface.h>
-
-typedef struct
-{
- /* VNET_API_ERROR_FOO -> "Foo" hash table */
- uword *error_string_by_error_number;
-} echo_common_main_t;
-
-echo_common_main_t echo_common_main;
-
-u8 *
-format_ip4_address (u8 * s, va_list * args)
-{
- u8 *a = va_arg (*args, u8 *);
- return format (s, "%d.%d.%d.%d", a[0], a[1], a[2], a[3]);
-}
-
-u8 *
-format_ip6_address (u8 * s, va_list * args)
-{
- ip6_address_t *a = va_arg (*args, ip6_address_t *);
- u32 i, i_max_n_zero, max_n_zeros, i_first_zero, n_zeros, last_double_colon;
-
- i_max_n_zero = ARRAY_LEN (a->as_u16);
- max_n_zeros = 0;
- i_first_zero = i_max_n_zero;
- n_zeros = 0;
- for (i = 0; i < ARRAY_LEN (a->as_u16); i++)
- {
- u32 is_zero = a->as_u16[i] == 0;
- if (is_zero && i_first_zero >= ARRAY_LEN (a->as_u16))
- {
- i_first_zero = i;
- n_zeros = 0;
- }
- n_zeros += is_zero;
- if ((!is_zero && n_zeros > max_n_zeros)
- || (i + 1 >= ARRAY_LEN (a->as_u16) && n_zeros > max_n_zeros))
- {
- i_max_n_zero = i_first_zero;
- max_n_zeros = n_zeros;
- i_first_zero = ARRAY_LEN (a->as_u16);
- n_zeros = 0;
- }
- }
-
- last_double_colon = 0;
- for (i = 0; i < ARRAY_LEN (a->as_u16); i++)
- {
- if (i == i_max_n_zero && max_n_zeros > 1)
- {
- s = format (s, "::");
- i += max_n_zeros - 1;
- last_double_colon = 1;
- }
- else
- {
- s = format (s, "%s%x",
- (last_double_colon || i == 0) ? "" : ":",
- clib_net_to_host_u16 (a->as_u16[i]));
- last_double_colon = 0;
- }
- }
-
- return s;
-}
-
-/* Format an IP46 address. */
-u8 *
-format_ip46_address (u8 * s, va_list * args)
-{
- ip46_address_t *ip46 = va_arg (*args, ip46_address_t *);
- ip46_type_t type = va_arg (*args, ip46_type_t);
- int is_ip4 = 1;
-
- switch (type)
- {
- case IP46_TYPE_ANY:
- is_ip4 = ip46_address_is_ip4 (ip46);
- break;
- case IP46_TYPE_IP4:
- is_ip4 = 1;
- break;
- case IP46_TYPE_IP6:
- is_ip4 = 0;
- break;
- }
-
- return is_ip4 ?
- format (s, "%U", format_ip4_address, &ip46->ip4) :
- format (s, "%U", format_ip6_address, &ip46->ip6);
-}
-
-static uword
-unformat_data (unformat_input_t * input, va_list * args)
-{
- u64 _a;
- u64 *a = va_arg (*args, u64 *);
- if (unformat (input, "%lluGb", &_a))
- *a = _a << 30;
- else if (unformat (input, "%lluMb", &_a))
- *a = _a << 20;
- else if (unformat (input, "%lluKb", &_a))
- *a = _a << 10;
- else if (unformat (input, "%llu", a))
- ;
- else
- return 0;
- return 1;
-}
-
-static u8 *
-format_api_error (u8 * s, va_list * args)
-{
- echo_common_main_t *ecm = &echo_common_main;
- i32 error = va_arg (*args, u32);
- uword *p;
-
- p = hash_get (ecm->error_string_by_error_number, -error);
-
- if (p)
- s = format (s, "%s", p[0]);
- else
- s = format (s, "%d", error);
- return s;
-}
-
-static void
-init_error_string_table ()
-{
- echo_common_main_t *ecm = &echo_common_main;
- ecm->error_string_by_error_number = hash_create (0, sizeof (uword));
-
-#define _(n,v,s) hash_set (ecm->error_string_by_error_number, -v, s);
- foreach_vnet_api_error;
-#undef _
-
- hash_set (ecm->error_string_by_error_number, 99, "Misc");
-}
-