summaryrefslogtreecommitdiffstats
path: root/src/plugins/gbp
diff options
context:
space:
mode:
authorOle Troan <ot@cisco.com>2020-11-18 19:17:48 +0100
committerNeale Ranns <nranns@cisco.com>2020-11-25 08:25:50 +0000
commitdf87f8092f5b6b54eef0d5acf3c27c2e398a401a (patch)
tree762a3da5d6757c6f475ffce6dcfae2b65b2c3850 /src/plugins/gbp
parentc95cfa218b214bd1c67dc165b4ed1fb7a224bdad (diff)
api: vat2 and json autogeneration for api messages
VAT2: A completely auto-generated replacement of VAT. Reads input message in JSON from stdin and outputs received messages in JSON. A VAT2 plugin is automatically built for a .api file. There no longer a need for a separate _test.c. Example: vat2 show_version {} { "_msgname": "show_version_reply", "retval": 0, "program": "vpe", "version": "21.01-rc0~411-gf6eb348a6", "build_date": "2020-11-19T09:49:25", "build_directory": "/vpp/autogen3" } vat2 sw_interface_dump '{"sw_if_index": -1, "name_filter_valid": 0, "name_filter": ""}' [{ "_msgname": "sw_interface_details", "sw_if_index": 0, "sup_sw_if_index": 0, "l2_address": "00:00:00:00:00:00", "flags": "Invalid ENUM", "type": "IF_API_TYPE_HARDWARE", "link_duplex": "LINK_DUPLEX_API_UNKNOWN", "link_speed": 0, "link_mtu": 0, "mtu": [0, 0, 0, 0], "sub_id": 0, "sub_number_of_tags": 0, "sub_outer_vlan_id": 0, "sub_inner_vlan_id": 0, "sub_if_flags": "Invalid ENUM", "vtr_op": 0, "vtr_push_dot1q": 0, "vtr_tag1": 0, "vtr_tag2": 0, "outer_tag": 0, "b_dmac": "00:00:00:00:00:00", "b_smac": "00:00:00:00:00:00", "b_vlanid": 0, "i_sid": 0, "interface_name": "local0", "interface_dev_type": "local", "tag": "" }] This is the first phase and vat2 is not integrated in packaging yet. Type: feature Signed-off-by: Ole Troan <ot@cisco.com> Change-Id: Ib45ddeafb180ea7da8c5dc274a9274d7a4edc876 Signed-off-by: Ole Troan <ot@cisco.com>
Diffstat (limited to 'src/plugins/gbp')
-rw-r--r--src/plugins/gbp/CMakeLists.txt1
-rw-r--r--src/plugins/gbp/gbp.api28
-rw-r--r--src/plugins/gbp/gbp_api.c1
-rw-r--r--src/plugins/gbp/gbp_api_print.h352
4 files changed, 14 insertions, 368 deletions
diff --git a/src/plugins/gbp/CMakeLists.txt b/src/plugins/gbp/CMakeLists.txt
index d9034fbf3fe..95f664ff08e 100644
--- a/src/plugins/gbp/CMakeLists.txt
+++ b/src/plugins/gbp/CMakeLists.txt
@@ -51,5 +51,4 @@ add_vpp_plugin(gbp
INSTALL_HEADERS
gbp.h
- gbp_api_print.h
)
diff --git a/src/plugins/gbp/gbp.api b/src/plugins/gbp/gbp.api
index f7643c76c02..2f46634af52 100644
--- a/src/plugins/gbp/gbp.api
+++ b/src/plugins/gbp/gbp.api
@@ -39,14 +39,14 @@ typedef gbp_bridge_domain
vl_api_interface_index_t bm_flood_sw_if_index;
};
-manual_print autoreply define gbp_bridge_domain_add
+ autoreply define gbp_bridge_domain_add
{
option status="in_progress";
u32 client_index;
u32 context;
vl_api_gbp_bridge_domain_t bd;
};
-manual_print autoreply define gbp_bridge_domain_del
+ autoreply define gbp_bridge_domain_del
{
option status="in_progress";
u32 client_index;
@@ -78,14 +78,14 @@ typedef gbp_route_domain
vl_api_gbp_scope_t scope;
};
-manual_print autoreply define gbp_route_domain_add
+ autoreply define gbp_route_domain_add
{
option status="in_progress";
u32 client_index;
u32 context;
vl_api_gbp_route_domain_t rd;
};
-manual_print autoreply define gbp_route_domain_del
+ autoreply define gbp_route_domain_del
{
option status="in_progress";
u32 client_index;
@@ -136,7 +136,7 @@ typedef gbp_endpoint
vl_api_address_t ips[n_ips];
};
-manual_print define gbp_endpoint_add
+ define gbp_endpoint_add
{
option status="in_progress";
u32 client_index;
@@ -152,7 +152,7 @@ define gbp_endpoint_add_reply
u32 handle;
};
-manual_print autoreply define gbp_endpoint_del
+ autoreply define gbp_endpoint_del
{
option status="in_progress";
u32 client_index;
@@ -191,14 +191,14 @@ typedef gbp_endpoint_group
vl_api_gbp_endpoint_retention_t retention;
};
-manual_print autoreply define gbp_endpoint_group_add
+ autoreply define gbp_endpoint_group_add
{
option status="in_progress";
u32 client_index;
u32 context;
vl_api_gbp_endpoint_group_t epg;
};
-manual_print autoreply define gbp_endpoint_group_del
+ autoreply define gbp_endpoint_group_del
{
option status="in_progress";
u32 client_index;
@@ -227,7 +227,7 @@ typedef gbp_recirc
bool is_ext;
};
-manual_print autoreply define gbp_recirc_add_del
+ autoreply define gbp_recirc_add_del
{
option status="in_progress";
u32 client_index;
@@ -268,7 +268,7 @@ typedef gbp_subnet
vl_api_prefix_t prefix;
};
-manual_print autoreply define gbp_subnet_add_del
+ autoreply define gbp_subnet_add_del
{
option status="in_progress";
u32 client_index;
@@ -338,7 +338,7 @@ typedef gbp_contract
vl_api_gbp_rule_t rules[n_rules];
};
-manual_print define gbp_contract_add_del
+ define gbp_contract_add_del
{
option status="in_progress";
u32 client_index;
@@ -388,7 +388,7 @@ typedef gbp_vxlan_tunnel
vl_api_ip4_address_t src;
};
-manual_print define gbp_vxlan_tunnel_add
+ define gbp_vxlan_tunnel_add
{
option status="in_progress";
u32 client_index;
@@ -404,7 +404,7 @@ define gbp_vxlan_tunnel_add_reply
vl_api_interface_index_t sw_if_index;
};
-manual_print autoreply define gbp_vxlan_tunnel_del
+ autoreply define gbp_vxlan_tunnel_del
{
option status="in_progress";
u32 client_index;
@@ -440,7 +440,7 @@ typedef gbp_ext_itf
vl_api_gbp_ext_itf_flags_t flags;
};
-manual_print autoreply define gbp_ext_itf_add_del
+ autoreply define gbp_ext_itf_add_del
{
option status="in_progress";
u32 client_index;
diff --git a/src/plugins/gbp/gbp_api.c b/src/plugins/gbp/gbp_api.c
index aea03d80226..ab89172b1af 100644
--- a/src/plugins/gbp/gbp_api.c
+++ b/src/plugins/gbp/gbp_api.c
@@ -42,7 +42,6 @@
#include <vnet/format_fns.h>
#include <vlibapi/api_helper_macros.h>
#define vl_print(handle, ...) vlib_cli_output (handle, __VA_ARGS__)
-#include "gbp_api_print.h"
gbp_main_t gbp_main;
diff --git a/src/plugins/gbp/gbp_api_print.h b/src/plugins/gbp/gbp_api_print.h
deleted file mode 100644
index 39c25b6e476..00000000000
--- a/src/plugins/gbp/gbp_api_print.h
+++ /dev/null
@@ -1,352 +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.
- */
-
-#ifndef __GBP_API_PRINT_H__
-#define __GBP_API_PRINT_H__
-
-#include <vpp/api/types.h>
-
-/* Macro to finish up custom dump fns */
-#define PRINT_S \
- vec_add1 (s, 0); \
- vl_print (handle, (char *)s); \
- vec_free (s);
-
-static inline void *
-vl_api_gbp_bridge_domain_add_t_print (vl_api_gbp_bridge_domain_add_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_bridge_domain_add ");
- s = format (s, "bd_id %d ", ntohl (a->bd.bd_id));
- s = format (s, "rd_id %d ", ntohl (a->bd.rd_id));
- s = format (s, "flags %d ", ntohl (a->bd.flags));
- s = format (s, "uu-fwd %d ", ntohl (a->bd.uu_fwd_sw_if_index));
- s = format (s, "bvi %d ", ntohl (a->bd.bvi_sw_if_index));
- s = format (s, "bm-flood %d", ntohl (a->bd.bm_flood_sw_if_index));
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_bridge_domain_del_t_print (vl_api_gbp_bridge_domain_del_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_bridge_domain_del ");
- s = format (s, "bd_id %d ", ntohl (a->bd_id));
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_route_domain_add_t_print (vl_api_gbp_route_domain_add_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_route_domain_add ");
- s = format (s, "rd_id %d ", ntohl (a->rd.rd_id));
- s = format (s, "ip4_table_id %d ", ntohl (a->rd.ip4_table_id));
- s = format (s, "ip6_table_id %d ", ntohl (a->rd.ip6_table_id));
- s = format (s, "ip4_uu_sw_if_index %d ", ntohl (a->rd.ip4_uu_sw_if_index));
- s = format (s, "ip6_uu_sw_if_index %d", ntohl (a->rd.ip6_uu_sw_if_index));
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_route_domain_del_t_print (vl_api_gbp_route_domain_del_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_route_domain_del ");
- s = format (s, "rd_id %d", ntohl (a->rd_id));
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_endpoint_add_t_print (vl_api_gbp_endpoint_add_t * a, void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_endpoint_add ");
- s = format (s, "sw_if_index %d ", ntohl (a->endpoint.sw_if_index));
- s = format (s, "sclass %d ", ntohs (a->endpoint.sclass));
- s = format (s, "flags %x ", ntohl (a->endpoint.flags));
- s = format (s, "mac %U ", format_vl_api_mac_address, a->endpoint.mac);
- s =
- format (s, "\n\ttun\n\t\t src %U", format_vl_api_address,
- &a->endpoint.tun.src);
- s =
- format (s, "\n\t\t dst %U ", format_vl_api_address, &a->endpoint.tun.dst);
-
- if (a->endpoint.n_ips)
- s = format (s, "\n\t ips");
- for (int i = 0; i < a->endpoint.n_ips; i++)
- s = format (s, "\n\t\t %U", format_vl_api_address, &a->endpoint.ips[i]);
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_endpoint_del_t_print (vl_api_gbp_endpoint_del_t * a, void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_endpoint_del ");
- s = format (s, "handle %d", ntohl (a->handle));
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_endpoint_group_add_t_print (vl_api_gbp_endpoint_group_add_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_endpoint_group_add ");
- s = format (s, "vnid %d ", ntohl (a->epg.vnid));
- s = format (s, "sclass %d ", ntohs (a->epg.sclass));
- s = format (s, "bd_id %d ", ntohl (a->epg.bd_id));
- s = format (s, "rd_id %d ", ntohl (a->epg.rd_id));
- s = format (s, "uplink_sw_if_index %d ", ntohl (a->epg.uplink_sw_if_index));
- s =
- format (s, "remote_ep_timeout %d",
- ntohl (a->epg.retention.remote_ep_timeout));
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_endpoint_group_del_t_print (vl_api_gbp_endpoint_group_del_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_endpoint_group_del ");
- s = format (s, "sclass %d ", ntohs (a->sclass));
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_recirc_add_del_t_print (vl_api_gbp_recirc_add_del_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_recirc_add_del ");
-
- if (a->is_add)
- s = format (s, "add ");
- else
- s = format (s, "del ");
- s = format (s, "sw_if_index %d ", ntohl (a->recirc.sw_if_index));
- s = format (s, "sclass %d ", ntohs (a->recirc.sclass));
- s = format (s, "is_ext %d ", a->recirc.is_ext);
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_subnet_add_del_t_print (vl_api_gbp_subnet_add_del_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_subnet_add_del ");
- if (a->is_add)
- s = format (s, "add ");
- else
- s = format (s, "del ");
- s = format (s, "rd_id %d ", ntohl (a->subnet.rd_id));
- s = format (s, "sw_if_index %d ", ntohl (a->subnet.sw_if_index));
- s = format (s, "sclass %d ", ntohs (a->subnet.sclass));
- s = format (s, "type %d ", ntohl (a->subnet.type));
- s =
- format (s, "prefix %U/%d", format_vl_api_address,
- &a->subnet.prefix.address, a->subnet.prefix.len);
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_contract_add_del_t_print (vl_api_gbp_contract_add_del_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_contract_add_del ");
- if (a->is_add)
- s = format (s, "add ");
- else
- s = format (s, "del ");
- s = format (s, "scope %d ", ntohl (a->contract.scope));
- s = format (s, "sclass %d ", ntohs (a->contract.sclass));
- s = format (s, "dclass %d ", ntohs (a->contract.dclass));
- s = format (s, "acl_index %d \n", ntohl (a->contract.acl_index));
- for (int i = 0; i < a->contract.n_rules; i++)
- {
- s = format (s, "\t action %d\n", ntohl (a->contract.rules[i].action));
- s =
- format (s, "\t hash_mode %d",
- ntohl (a->contract.rules[i].nh_set.hash_mode));
- for (int j = 0; j < a->contract.rules[i].nh_set.n_nhs; j++)
- {
- s =
- format (s, "\n\t \t nhs ip %U ", format_vl_api_address,
- &a->contract.rules[i].nh_set.nhs[j].ip);
- s =
- format (s, "nhs mac %U ", format_vl_api_mac_address,
- a->contract.rules[i].nh_set.nhs[j].mac);
- s =
- format (s, "nhs bd_id %d ",
- ntohl (a->contract.rules[i].nh_set.nhs[j].bd_id));
- s =
- format (s, "nhs rd_id %d",
- ntohl (a->contract.rules[i].nh_set.nhs[j].rd_id));
- }
- s = format (s, "\n");
- }
-
- if (a->contract.n_ether_types)
- s = format (s, "\tethertypes");
- for (int i = 0; i < a->contract.n_ether_types; i++)
- {
- s = format (s, " %d ", ntohs (a->contract.allowed_ethertypes[i]));
- }
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_vxlan_tunnel_add_t_print (vl_api_gbp_vxlan_tunnel_add_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_vxlan_tunnel_add ");
-
- s = format (s, "vni %d ", ntohl (a->tunnel.vni));
- s = format (s, "mode %d ", ntohl (a->tunnel.mode));
- s = format (s, "bd_rd_id %d ", ntohl (a->tunnel.bd_rd_id));
- s = format (s, "src %U ", format_vl_api_ip4_address, a->tunnel.src);
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_vxlan_tunnel_del_t_print (vl_api_gbp_vxlan_tunnel_del_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_vxlan_tunnel_del ");
- s = format (s, "vni %d ", ntohl (a->vni));
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-static inline void *
-vl_api_gbp_ext_itf_add_del_t_print (vl_api_gbp_ext_itf_add_del_t * a,
- void *handle)
-{
- u8 *s = 0;
-
- s = format (s, "SCRIPT: gbp_ext_itf_add_del ");
- if (a->is_add)
- s = format (s, "add ");
- else
- s = format (s, "del ");
-
- s = format (s, "sw_if_index %d ", ntohl (a->ext_itf.sw_if_index));
- s = format (s, "bd_id %d ", ntohl (a->ext_itf.bd_id));
- s = format (s, "rd_id %d ", ntohl (a->ext_itf.rd_id));
- s = format (s, "flags %x ", ntohl (a->ext_itf.flags));
-
- s = format (s, "\n");
-
- PRINT_S;
-
- return handle;
-}
-
-/*
- * fd.io coding-style-patch-verification: ON
- *
- * Local Variables:
- * eval: (c-set-style "gnu")
- * End:
- */
-
-#endif /* __GBP_API_PRINT_H__ */