LCOV - code coverage report
Current view: top level - vnet - error.c (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 18 19 94.7 %
Date: 2023-10-26 01:39:38 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: Apache-2.0
       2             :  * Copyright(c) 2022 Cisco Systems, Inc.
       3             :  */
       4             : 
       5             : #include <vppinfra/error.h>
       6             : #include <vnet/api_errno.h>
       7             : 
       8             : static char *error_strings[] = {
       9             : #define _(a, b, c) [-(b)] = c,
      10             :   foreach_vnet_error
      11             : #undef _
      12             : };
      13             : 
      14             : clib_error_t *
      15          48 : vnet_error (vnet_error_t rv, char *fmt, ...)
      16             : {
      17          48 :   clib_error_t *e, *err = 0;
      18             :   va_list va;
      19          48 :   vec_add2 (err, e, 1);
      20          48 :   e->what = format (e->what, "%s", error_strings[-rv]);
      21             : 
      22          48 :   if (fmt)
      23             :     {
      24          48 :       vec_add1 (e->what, ' ');
      25          48 :       vec_add1 (e->what, '(');
      26          48 :       va_start (va, fmt);
      27          48 :       e->what = va_format (e->what, fmt, &va);
      28          48 :       vec_add1 (e->what, ')');
      29          48 :       va_end (va);
      30             :     }
      31             : 
      32          48 :   e->code = rv;
      33          48 :   return err;
      34             : }
      35             : 
      36             : u8 *
      37          10 : format_vnet_api_errno (u8 *s, va_list *args)
      38             : {
      39          10 :   vnet_api_error_t api_error = va_arg (*args, vnet_api_error_t);
      40             : #ifdef _
      41             : #undef _
      42             : #endif
      43             : #define _(a, b, c)                                                            \
      44             :   case b:                                                                     \
      45             :     s = format (s, "%s", c);                                                  \
      46             :     break;
      47          10 :   switch (api_error)
      48             :     {
      49          10 :       foreach_vnet_error default : s = format (s, "UNKNOWN");
      50           0 :       break;
      51             :     }
      52          10 :   return s;
      53             : #undef _
      54             : }

Generated by: LCOV version 1.14