/* * Copyright (c) 2017 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/interface_types.api"; import "vnet/ip/ip_types.api"; /** \brief configure global parameter for LLDP @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param system_name - VPP system name @param tx_hold - multiplier for tx_interval when setting time-to-live (TTL) value in the LLDP packets @param tx_interval - time interval, in seconds, between each LLDP frames */ autoreply define lldp_config { u32 client_index; u32 context; u32 tx_hold; u32 tx_interval; string system_name[]; }; /** \brief Interface set LLDP request @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request @param sw_if_index - interface for which to enable/disable LLDP @param mgmt_ip4_addr - management ip4 address of the interface @param mgmt_ip6_addr - management ip6 address of the interface @param mgmt_oid - OID(Object Identifier) of the interface @param enable - if non-zero enable, else disable @param port_desc - local port description */ autoreply define sw_interface_set_lldp { u32 client_index; u32 context; vl_api_interface_index_t sw_if_index; vl_api_ip4_address_t mgmt_ip4; vl_api_ip6_address_t mgmt_ip6; u8 mgmt_oid[128]; bool enable [default=true]; string port_desc[]; }; /** \brief Dump lldp neighbors @param client_index - opaque cookie to identify the sender @param context - sender context, to match reply w/ request */ autoendian define lldp_dump { u32 client_index; u32 context; u32 cursor; }; autoendian define lldp_dump_reply { u32 context; i32 retval; u32 cursor; }; enum port_id_subtype { PORT_ID_SUBTYPE_RESERVED = 0x00, PORT_ID_SUBTYPE_INTF_ALIAS = 0x01, PORT_ID_SUBTYPE_PORT_COMP = 0x02, PORT_ID_SUBTYPE_MAC_ADDR = 0x03, PORT_ID_SUBTYPE_NET_ADDR = 0x04, PORT_ID_SUBTYPE_INTF_NAME = 0x05, PORT_ID_SUBTYPE_AGENT_CIRCUIT_ID = 0x06, PORT_ID_SUBTYPE_LOCAL = 0x07, }; enum chassis_id_subtype { CHASSIS_ID_SUBTYPE_RESERVED = 0x00, CHASSIS_ID_SUBTYPE_CHASSIS_COMP = 0x01, CHASSIS_ID_SUBTYPE_INTF_ALIAS = 0x02, CHASSIS_ID_SUBTYPE_PORT_COMP = 0x03, CHASSIS_ID_SUBTYPE_MAC_ADDR = 0x04, CHASSIS_ID_SUBTYPE_NET_ADDR = 0x05, CHASSIS_ID_SUBTYPE_INTF_NAME = 0x06, CHASSIS_ID_SUBTYPE_LOCAL = 0x07, }; /** \brief Details about neighbor @param context - returned sender context, to match reply w/ request @param sw_if_index - interface where neighbor was discovered @param last_heard - last heard time @param last_sent - last sent time @param chassis_id - chassis id value @param chassis_id_len - length for chassis id @param port_id - port id value @param port_id_len - length for port id @param ttl - time to length for the neighbour @param port_id_subtype - subtype for port_id @param chassis_id_sybtype - sybtype for chassis_id */ autoendian define lldp_details { u32 context; vl_api_interface_index_t sw_if_index; f64 last_heard; f64 last_sent; u8 chassis_id[64]; u8 chassis_id_len; u8 port_id[64]; u8 port_id_len; u16 ttl; vl_api_port_id_subtype_t port_id_subtype; vl_api_chassis_id_subtype_t chassis_id_subtype; option status="in_progress"; }; service { rpc lldp_dump returns lldp_dump_reply stream lldp_details; };