lb: remove api boilerplate
[vpp.git] / src / plugins / lb / lb.api
1 option version = "1.0.0";
2 import "plugins/lb/lb_types.api";
3 import "vnet/interface_types.api";
4
5 /** \brief Configure Load-Balancer global parameters (unlike the CLI, both ip4_src_address and ip6_src_address need to be specified.
6     @param client_index - opaque cookie to identify the sender
7     @param context - sender context, to match reply w/ request
8     @param ip4_src_address - IPv4 address to be used as source for IPv4 traffic(applicable in GRE4/GRE6/NAT4/NAT6 mode only).
9     @param ip6_src_address - IPv6 address to be used as source for IPv6 traffic(applicable in GRE4/GRE6/NAT4/NAT6 mode only).
10     @param sticky_buckets_per_core - Number of buckets *per worker thread* in the
11            established flow table (must be power of 2).
12     @param flow_timeout - Time in seconds after which, if no packet is received
13            for a given flow, the flow is removed from the established flow table.
14 */
15 autoreply manual_print define lb_conf
16 {
17   u32 client_index;
18   u32 context;
19   vl_api_ip4_address_t ip4_src_address;
20   vl_api_ip6_address_t ip6_src_address;
21   u32 sticky_buckets_per_core;
22   u32 flow_timeout;
23   option vat_help = "[ip4-src-address <addr>] [ip6-src-address <addr>] [buckets <n>] [timeout <s>]";
24 };
25
26 /** \brief Add a virtual address (or prefix)
27     @param client_index - opaque cookie to identify the sender
28     @param context - sender context, to match reply w/ request
29     @param pfx - ip prefix and length
30     @param protocol - tcp or udp.
31     @param port - destination port. (0) means 'all-port VIP'
32     @param encap - Encap is ip4 GRE(0) or ip6 GRE(1) or L3DSR(2) or NAT4(3) or NAT6(4).
33     @param dscp - DSCP bit corresponding to VIP(applicable in L3DSR mode only).
34     @param type - service type(applicable in NAT4/NAT6 mode only).
35     @param target_port - Pod's port corresponding to specific service(applicable in NAT4/NAT6 mode only).
36     @param node_port - Node's port(applicable in NAT4/NAT6 mode only).
37     @param new_flows_table_length - Size of the new connections flow table used
38            for this VIP (must be power of 2).
39     @param is_del - The VIP should be removed.
40 */
41 autoreply manual_print define lb_add_del_vip {
42   u32 client_index;
43   u32 context;
44   vl_api_address_with_prefix_t pfx;
45   u8 protocol [default=255];
46   u16 port;
47   vl_api_lb_encap_type_t encap;
48   u8 dscp;
49   vl_api_lb_srv_type_t type ; /* LB_API_SRV_TYPE_CLUSTERIP */
50   u16 target_port;
51   u16 node_port;
52   u32 new_flows_table_length [default=1024];
53   bool is_del;
54   option vat_help = "<prefix> [protocol (tcp|udp) port <n>] [encap (gre6|gre4|l3dsr|nat4|nat6)] [dscp <n>] [type (nodeport|clusterip) target_port <n>] [new_len <n>] [del]";
55 };
56
57 /** \brief Add an application server for a given VIP
58     @param client_index - opaque cookie to identify the sender
59     @param context - sender context, to match reply w/ request
60     @param pfx - ip prefix and length
61     @param protocol - tcp or udp.
62     @param port - destination port.
63     @param as_address - The application server address (IPv4 in lower order 32 bits).
64     @param is_del - The AS should be removed.
65     @param is_flush - The sessions related to this AS should be flushed.
66 */
67 autoreply manual_print define lb_add_del_as {
68   u32 client_index;
69   u32 context;
70   vl_api_address_with_prefix_t pfx;
71   u8 protocol [default=255];
72   u16 port;
73   vl_api_address_t as_address;
74   bool is_del;
75   bool is_flush;
76   option vat_help = "<vip-prefix> [protocol (tcp|udp) port <n>] [<address>] [del] [flush]";
77 };
78
79 /** \brief Flush a given vip
80     @param client_index - opaque cookie to identify the sender
81     @param context - sender context, to match reply w/ request
82     @param pfx - ip prefix and length
83     @param protocol - tcp or udp.
84     @param port - destination port.
85 */
86 autoreply manual_print define lb_flush_vip {
87   u32 client_index;
88   u32 context;
89   vl_api_address_with_prefix_t pfx;
90   u8 protocol;
91   u16 port;
92 };
93
94 /** \brief Dump all vips
95     @param client_index - opaque cookie to identify the sender
96     @param context - sender context, to match reply w/ request
97 */
98 define lb_vip_dump{
99   u32 client_index;
100   u32 context;
101   vl_api_address_with_prefix_t pfx;
102   vl_api_prefix_matcher_t pfx_matcher;
103   u8 protocol [default=255];
104   u16 port;
105
106 };
107
108 /** \brief Reply all configured vip
109     @param context - sender context, to match reply w/ request
110     @param vip - all vip addrs.
111 */
112 define lb_vip_details {
113   u32 context;
114   vl_api_lb_vip_t vip;
115   vl_api_lb_encap_type_t encap;
116   vl_api_ip_dscp_t dscp;
117   vl_api_lb_srv_type_t srv_type;
118   u16 target_port;
119   u16 flow_table_length;
120 };
121
122 /** \brief dump AS list per VIP or all ASs for all VIPs
123     @param client_index - opaque cookie to identify the sender
124     @param context - sender context, to match reply w/ request
125     @param pfx - ip prefix and length.
126     @param protocol - tcp or udp.
127     @param port - destination port.
128 */
129 define lb_as_dump{
130   u32 client_index;
131   u32 context;
132   /* vip */
133   vl_api_address_with_prefix_t pfx;
134   u8 protocol;
135   u16 port;
136   option vat_help = "<vip-prefix> [protocol (tcp|udp) port <n>]";
137 };
138
139 /** \brief lb_as_details
140     @param context - sender context, to match reply w/ request
141     @param as - AS detail record
142 */
143 define lb_as_details {
144   u32 context;
145   vl_api_lb_vip_t vip;
146   vl_api_address_t app_srv;
147   u8 flags;
148   u32 in_use_since;
149 };
150
151 /** \brief Enable/disable NAT4 feature on the interface
152     @param client_index - opaque cookie to identify the sender
153     @param context - sender context, to match reply w/ request
154     @param is_add - true if add, false if delete
155     @param sw_if_index - software index of the interface
156 */
157 autoreply define lb_add_del_intf_nat4 {
158   u32 client_index;
159   u32 context;
160   bool is_add;
161   vl_api_interface_index_t sw_if_index;
162 };
163
164 /** \brief Enable/disable NAT6 feature on the interface
165     @param client_index - opaque cookie to identify the sender
166     @param context - sender context, to match reply w/ request
167     @param is_add - true if add, false if delete
168     @param sw_if_index - software index of the interface
169 */
170 autoreply define lb_add_del_intf_nat6 {
171   u32 client_index;
172   u32 context;
173   bool is_add;
174   vl_api_interface_index_t sw_if_index;
175 };