/* Hey Emacs use -*- mode: C -*- */ /* * Copyright (c) 2018 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. */ option version = "2.0.0"; import "vnet/ip/ip_types.api"; import "vnet/ethernet/ethernet_types.api"; enum gbp_bridge_domain_flags { GBP_BD_API_FLAG_NONE = 0, GBP_BD_API_FLAG_DO_NOT_LEARN = 1, }; typedef gbp_bridge_domain { u32 bd_id; vl_api_gbp_bridge_domain_flags_t flags; u32 bvi_sw_if_index; u32 uu_fwd_sw_if_index; }; autoreply define gbp_bridge_domain_add { u32 client_index; u32 context; vl_api_gbp_bridge_domain_t bd; }; autoreply define gbp_bridge_domain_del { u32 client_index; u32 context; u32 bd_id; }; autoreply define gbp_bridge_domain_dump { u32 client_index; u32 context; }; define gbp_bridge_domain_details { u32 context; vl_api_gbp_bridge_domain_t bd; }; typedef gbp_route_domain { u32 rd_id; u32 ip4_table_id; u32 ip6_table_id; u32 ip4_uu_sw_if_index; u32 ip6_uu_sw_if_index; }; autoreply define gbp_route_domain_add { u32 client_index; u32 context; vl_api_gbp_route_domain_t rd; }; autoreply define gbp_route_domain_del { u32 client_index; u32 context; u32 rd_id; }; autoreply define gbp_route_domain_dump { u32 client_index; u32 context; }; define gbp_route_domain_details { u32 context; vl_api_gbp_route_domain_t rd; }; /** \brief Endpoint @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ enum gbp_endpoint_flags { NONE = 0, BOUNCE = 0x1, REMOTE = 0x2, LEARNT = 0x4, /* hey Ole WTF */ REMOTE_LEARNT = 0x6, }; typedef gbp_endpoint_tun { vl_api_address_t src; vl_api_address_t dst; }; typedef gbp_endpoint { u32 sw_if_index; u16 epg_id; vl_api_gbp_endpoint_flags_t flags; vl_api_mac_address_t mac; vl_api_gbp_endpoint_tun_t tun; u8 n_ips; vl_api_address_t ips[n_ips]; }; define gbp_endpoint_add { u32 client_index; u32 context; vl_api_gbp_endpoint_t endpoint; }; define gbp_endpoint_add_reply { u32 context; i32 retval; u32 handle; }; autoreply define gbp_endpoint_del { u32 client_index; u32 context; u32 handle; }; define gbp_endpoint_dump { u32 client_index; u32 context; }; define gbp_endpoint_details { u32 context; f64 age; u32 handle; vl_api_gbp_endpoint_t endpoint; }; typeonly define gbp_endpoint_group { u16 epg_id; u32 bd_id; u32 rd_id; u32 uplink_sw_if_index; }; autoreply define gbp_endpoint_group_add { u32 client_index; u32 context; vl_api_gbp_endpoint_group_t epg; }; autoreply define gbp_endpoint_group_del { u32 client_index; u32 context; u16 epg_id; }; define gbp_endpoint_group_dump { u32 client_index; u32 context; }; define gbp_endpoint_group_details { u32 context; vl_api_gbp_endpoint_group_t epg; }; typeonly define gbp_recirc { u32 sw_if_index; u16 epg_id; u8 is_ext; }; autoreply define gbp_recirc_add_del { u32 client_index; u32 context; u8 is_add; vl_api_gbp_recirc_t recirc; }; define gbp_recirc_dump { u32 client_index; u32 context; }; define gbp_recirc_details { u32 context; vl_api_gbp_recirc_t recirc; }; enum gbp_subnet_type { GBP_API_SUBNET_TRANSPORT, GBP_API_SUBNET_STITCHED_INTERNAL, GBP_API_SUBNET_STITCHED_EXTERNAL, }; typeonly define gbp_subnet { u32 rd_id; u32 sw_if_index; u16 epg_id; vl_api_gbp_subnet_type_t type; vl_api_prefix_t prefix; }; autoreply define gbp_subnet_add_del { u32 client_index; u32 context; u8 is_add; vl_api_gbp_subnet_t subnet; }; define gbp_subnet_dump { u32 client_index; u32 context; }; define gbp_subnet_details { u32 context; vl_api_gbp_subnet_t subnet; }; typedef gbp_next_hop { vl_api_address_t ip; vl_api_mac_address_t mac; u32 bd_id; u32 rd_id; }; enum gbp_hash_mode { GBP_API_HASH_MODE_SRC_IP, GBP_API_HASH_MODE_DST_IP, GBP_API_HASH_MODE_SYMMETRIC, }; typedef gbp_next_hop_set { vl_api_gbp_hash_mode_t hash_mode; u8 n_nhs; vl_api_gbp_next_hop_t nhs[8]; }; enum gbp_rule_action { GBP_API_RULE_PERMIT, GBP_API_RULE_DENY, GBP_API_RULE_REDIRECT, }; typedef gbp_rule { vl_api_gbp_rule_action_t action; vl_api_gbp_next_hop_set_t nh_set; }; typedef gbp_contract { u16 src_epg; u16 dst_epg; u32 acl_index; u8 n_rules; vl_api_gbp_rule_t rules[n_rules]; }; autoreply define gbp_contract_add_del { u32 client_index; u32 context; u8 is_add; vl_api_gbp_contract_t contract; }; define gbp_contract_dump { u32 client_index; u32 context; }; define gbp_contract_details { u32 context; vl_api_gbp_contract_t contract; }; /** * @brief Set the time throeshold after which an endpoint is considered inative and is aged/reaped by the scanner * @param threshold In seconds */ autoreply define gbp_endpoint_learn_set_inactive_threshold { u32 client_index; u32 context; u32 threshold; }; /** * @brief Configure a 'base' tunnel from which learned tunnels * are permitted to derive * A base tunnel consists only of the VNI, any src,dst IP * pair is thus allowed. */ enum gbp_vxlan_tunnel_mode { GBP_VXLAN_TUNNEL_MODE_L2, GBP_VXLAN_TUNNEL_MODE_L3, }; typedef gbp_vxlan_tunnel { u32 vni; vl_api_gbp_vxlan_tunnel_mode_t mode; u32 bd_rd_id; }; define gbp_vxlan_tunnel_add { u32 client_index; u32 context; vl_api_gbp_vxlan_tunnel_t tunnel; }; define gbp_vxlan_tunnel_add_reply { u32 context; i32 retval; u32 sw_if_index; }; autoreply define gbp_vxlan_tunnel_del { u32 client_index; u32 context; u32 vni; }; define gbp_vxlan_tunnel_dump { u32 client_index; u32 context; }; define gbp_vxlan_tunnel_details { u32 context; vl_api_gbp_vxlan_tunnel_t tunnel; }; /* * Local Variables: * eval: (c-set-style "gnu") * End: */