2 * Copyright (c) 2018 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:
7 * http://www.apache.org/licenses/LICENSE-2.0
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.
16 #include <vnet/ip/ip_types_api.h>
18 #define vl_typedefs /* define message structures */
19 #include <vnet/vnet_all_api_h.h>
22 #define vl_endianfun /* define message structures */
23 #include <vnet/vnet_all_api_h.h>
26 /* instantiate all the print functions we know about */
27 #define vl_print(handle, ...) vlib_cli_output (handle, __VA_ARGS__)
29 #include <vnet/vnet_all_api_h.h>
34 ip_address_decode (const vl_api_address_t * in, ip46_address_t * out)
39 memset (out, 0, sizeof (*out));
40 clib_memcpy (&out->ip4, &in->un.ip4, sizeof (out->ip4));
43 clib_memcpy (&out->ip6, &in->un.ip6, sizeof (out->ip6));
49 ip_address_encode (const ip46_address_t * in, vl_api_address_t * out)
51 if (ip46_address_is_ip4 (in))
53 memset (out, 0, sizeof (*out));
54 out->af = ADDRESS_IP4;
55 clib_memcpy (&out->un.ip4, &in->ip4, sizeof (out->un.ip4));
59 out->af = ADDRESS_IP6;
60 clib_memcpy (&out->un.ip6, &in->ip6, sizeof (out->un.ip6));
65 ip_prefix_decode (const vl_api_prefix_t * in, fib_prefix_t * out)
67 switch (in->address.af)
70 out->fp_proto = FIB_PROTOCOL_IP4;
73 out->fp_proto = FIB_PROTOCOL_IP6;
76 out->fp_len = in->address_length;
77 ip_address_decode (&in->address, &out->fp_addr);
81 ip_prefix_encode (const fib_prefix_t * in, vl_api_prefix_t * out)
85 case FIB_PROTOCOL_IP4:
86 out->address.af = ADDRESS_IP4;
88 case FIB_PROTOCOL_IP6:
89 out->address.af = ADDRESS_IP6;
91 case FIB_PROTOCOL_MPLS:
95 out->address_length = in->fp_len;
96 ip_address_encode (&in->fp_addr, &out->address);
100 * fd.io coding-style-patch-verification: ON
103 * eval: (c-set-style "gnu")