/* Hey Emacs use -*- mode: C -*- */ /* * 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. */ /** \file This file defines the vpp control-plane API messages used to control the ABF plugin */ option version = "1.0.0"; import "vnet/ip/ip_types.api"; import "vnet/ethernet/ethernet_types.api"; import "vnet/interface_types.api"; /** \brief Proxy ARP configuration type @param table_id - VRF / Fib table ID @param low - Low address of the Proxy ARP range @param hi - High address of the Proxy ARP range */ typedef proxy_arp { u32 table_id; vl_api_ip4_address_t low; vl_api_ip4_address_t hi; }; /** \brief Proxy ARP add / del request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param is_add - 1 if adding the Proxy ARP range, 0 if deleting @param proxy - Proxy configuration */ autoreply define proxy_arp_add_del { u32 client_index; u32 context; bool is_add; vl_api_proxy_arp_t proxy; }; /** \brief Proxy ARP dump request */ define proxy_arp_dump { u32 client_index; u32 context; }; /** \brief Proxy ARP dump details reply * @param proxy - Same data as used to configure */ define proxy_arp_details { u32 context; vl_api_proxy_arp_t proxy; }; /** \brief Proxy ARP add / del interface request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param sw_if_index - Which interface to enable / disable Proxy Arp on @param enable - 1 to enable Proxy ARP on interface, 0 to disable */ autoreply define proxy_arp_intfc_enable_disable { u32 client_index; u32 context; vl_api_interface_index_t sw_if_index; bool enable; }; /** \brief Proxy ARP interface dump request */ define proxy_arp_intfc_dump { u32 client_index; u32 context; }; /** \brief Proxy ARP interface dump details reply * @param sw_if_index The interface on which ARP proxy is enabled. */ define proxy_arp_intfc_details { u32 context; u32 sw_if_index; }; counters arp { replies_sent { severity info; type counter64; units "packets"; description "ARP replies sent"; }; disabled { severity error; type counter64; units "packets"; description "ARP Disabled"; }; l2_type_not_ethernet { severity error; type counter64; units "packets"; description "L2 type not ethernet"; }; l3_type_not_ip4 { severity error; type counter64; units "packets"; description "L3 type not IP4"; }; l3_src_address_not_local { severity error; type counter64; units "packets"; description "IP4 source address not local to subnet"; }; l3_dst_address_not_local { severity error; type counter64; units "packets"; description "IP4 destination address not local to subnet"; }; l3_dst_address_unset { severity error; type counter64; units "packets"; description "IP4 destination address is unset"; }; l3_src_address_is_local { severity error; type counter64; units "packets"; description "IP4 source address matches local interface"; }; l3_src_address_learned { severity info; type counter64; units "packets"; description "ARP request IP4 source address learned"; }; replies_received { severity info; type counter64; units "packets"; description "ARP replies received"; }; opcode_not_request { severity error; type counter64; units "packets"; description "ARP opcode not request"; }; proxy_arp_replies_sent { severity info; type counter64; units "packets"; description "Proxy ARP replies sent"; }; l2_address_mismatch { severity error; type counter64; units "packets"; description "ARP hw addr does not match L2 frame src addr"; }; gratuitous_arp { severity error; type counter64; units "packets"; description "ARP probe or announcement dropped"; }; interface_no_table { severity error; type counter64; units "packets"; description "Interface is not mapped to an IP table"; }; interface_not_ip_enabled { severity error; type counter64; units "packets"; description "Interface is not IP enabled"; }; unnumbered_mismatch { severity error; type counter64; units "packets"; description "RX interface is unnumbered to different subnet"; }; }; paths { "/err/arp-reply" "arp"; "/err/arp-disabled" "arp"; "/err/arp-input" "arp"; "/err/arp-proxy" "arp"; }; /* * Local Variables: * eval: (c-set-style "gnu") * End: */