api: autogenerate api trace print/endian
[vpp.git] / src / vnet / ip / ip_format_fns.h
1 /*
2  * Copyright (c) 2019 Cisco and/or its affiliates.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at:
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15
16 #ifndef included_ip_format_fns_h
17 #define included_ip_format_fns_h
18
19 static inline u8 *format_vl_api_ip6_address_t (u8 * s, va_list * args);
20 static inline u8 *format_vl_api_ip4_address_t (u8 * s, va_list * args);
21
22 #include <vnet/ip/format.h>
23 #define vl_typedefs
24 #include <vnet/ip/ip_types.api.h>
25
26 static inline u8 *
27 format_vl_api_ip6_address_t (u8 * s, va_list * args)
28 {
29   vl_api_ip6_address_t *a = va_arg (*args, vl_api_ip6_address_t *);
30   u32 indent __attribute__((unused)) = va_arg (*args, u32);
31
32   return format (s, "%U", format_ip6_address, a);
33 }
34
35 static inline u8 *
36 format_vl_api_ip6_prefix_t (u8 * s, va_list * args)
37 {
38   vl_api_ip6_prefix_t *a = va_arg (*args, vl_api_ip6_prefix_t *);
39   u32 indent __attribute__((unused)) = va_arg (*args, u32);
40
41   return format (s, "%U/%u", format_ip6_address, &a->address, a->len);
42 }
43
44 static inline u8 *
45 format_vl_api_ip4_address_t (u8 * s, va_list * args)
46 {
47   vl_api_ip4_address_t *a = va_arg (*args, vl_api_ip4_address_t *);
48   u32 indent __attribute__((unused)) = va_arg (*args, u32);
49
50   return format (s, "%U", format_ip4_address, a);
51 }
52
53 static inline u8 *
54 format_vl_api_ip4_prefix_t (u8 * s, va_list * args)
55 {
56   vl_api_ip4_prefix_t *a = va_arg (*args, vl_api_ip4_prefix_t *);
57   u32 indent __attribute__((unused)) = va_arg (*args, u32);
58
59   return format (s, "%U/%u", format_ip4_address, &a->address, a->len);
60 }
61
62 static inline u8 *
63 format_vl_api_address_t (u8 * s, va_list * args)
64 {
65   vl_api_address_t *a = va_arg (*args, vl_api_address_t *);
66   u32 indent __attribute__((unused)) = va_arg (*args, u32);
67
68   switch (a->af)  {
69   case ADDRESS_IP4:
70     return format(s, "%U", format_ip4_address, &a->un.ip4);
71   case ADDRESS_IP6:
72     return format(s, "%U", format_ip6_address, &a->un.ip6);
73     }
74   return format (s, "");
75 }
76
77 static inline u8 *
78 format_vl_api_prefix_t (u8 * s, va_list * args)
79 {
80   vl_api_prefix_t *a = va_arg (*args, vl_api_prefix_t *);
81   u32 indent __attribute__((unused)) = va_arg (*args, u32);
82
83   return format (s, "%U/%u", format_vl_api_address_t, &a->address, indent, a->len);
84 }
85
86 #endif