aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/lldp/lldp.api
blob: c5edee7cf3969175fc31bfab935a4425e97901e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
 * 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;
};