ovs-controller: Rename test-controller and do not install or package.
[sliver-openvswitch.git] / vtep / vtep-ctl.8.in
1 .\" -*- nroff -*-
2 .de IQ
3 .  br
4 .  ns
5 .  IP "\\$1"
6 ..
7 .de ST
8 .  PP
9 .  RS -0.15in
10 .  I "\\$1"
11 .  RE
12 ..
13 .TH vtep\-ctl 8 "March 2013" "Open vSwitch" "Open vSwitch Manual"
14 .\" This program's name:
15 .ds PN vtep\-ctl
16 .
17 .SH NAME
18 vtep\-ctl \- utility for querying and configuring a VTEP database
19 .
20 .SH SYNOPSIS
21 \fBvtep\-ctl\fR [\fIoptions\fR] \fB\-\-\fR [\fIoptions\fR] \fIcommand
22 \fR[\fIargs\fR] [\fB\-\-\fR [\fIoptions\fR] \fIcommand \fR[\fIargs\fR]]...
23 .
24 .SH DESCRIPTION
25 The \fBvtep\-ctl\fR program configures a VTEP database.
26 See \fBvtep\fR(5) for comprehensive documentation of
27 the database schema.
28 .PP
29 \fBvtep\-ctl\fR connects to an \fBovsdb\-server\fR process that
30 maintains a VTEP configuration database.  Using this connection, it
31 queries and possibly applies changes to the database, depending on the
32 supplied commands.
33 .PP
34 \fBvtep\-ctl\fR can perform any number of commands in a single run,
35 implemented as a single atomic transaction against the database.
36 .PP
37 The \fBvtep\-ctl\fR command line begins with global options (see
38 \fBOPTIONS\fR below for details).  The global options are followed by
39 one or more commands.  Each command should begin with \fB\-\-\fR by
40 itself as a command-line argument, to separate it from the following
41 commands.  (The \fB\-\-\fR before the first command is optional.)  The
42 command itself starts with command-specific options, if any, followed by
43 the command name and any arguments.  See \fBEXAMPLES\fR below for syntax
44 examples.
45 .
46 .SH OPTIONS
47 .
48 The following options affect the behavior \fBvtep\-ctl\fR as a whole.
49 Some individual commands also accept their own options, which are
50 given just before the command name.  If the first command on the
51 command line has options, then those options must be separated from
52 the global options by \fB\-\-\fR.
53 .
54 .IP "\fB\-\-db=\fIserver\fR"
55 Sets \fIserver\fR as the database server that \fBvtep\-ctl\fR
56 contacts to query or modify configuration.  The default is
57 \fBunix:@RUNDIR@/db.sock\fR.  \fIserver\fR must take one of the
58 following forms:
59 .RS
60 .so ovsdb/remote-active.man
61 .so ovsdb/remote-passive.man
62 .RE
63 .
64 .IP "\fB\-\-no\-syslog\fR"
65 By default, \fBvtep\-ctl\fR logs its arguments and the details of any
66 changes that it makes to the system log.  This option disables this
67 logging.
68 .IP
69 This option is equivalent to \fB\-\-verbose=vtep_ctl:syslog:warn\fR.
70 .
71 .IP "\fB\-\-oneline\fR"
72 Modifies the output format so that the output for each command is printed
73 on a single line.  New-line characters that would otherwise separate
74 lines are printed as \fB\\n\fR, and any instances of \fB\\\fR that
75 would otherwise appear in the output are doubled.
76 Prints a blank line for each command that has no output.
77 This option does not affect the formatting of output from the
78 \fBlist\fR or \fBfind\fR commands; see \fBTable Formatting Options\fR
79 below.
80 .
81 .IP "\fB\-\-dry\-run\fR"
82 Prevents \fBvtep\-ctl\fR from actually modifying the database.
83 .
84 .IP "\fB\-t \fIsecs\fR"
85 .IQ "\fB\-\-timeout=\fIsecs\fR"
86 By default, or with a \fIsecs\fR of \fB0\fR, \fBvtep\-ctl\fR waits
87 forever for a response from the database.  This option limits runtime
88 to approximately \fIsecs\fR seconds.  If the timeout expires,
89 \fBvtep\-ctl\fR will exit with a \fBSIGALRM\fR signal.  (A timeout
90 would normally happen only if the database cannot be contacted, or if
91 the system is overloaded.)
92 .
93 .SS "Table Formatting Options"
94 These options control the format of output from the \fBlist\fR and
95 \fBfind\fR commands.
96 .so lib/table.man
97 .
98 .SS "Public Key Infrastructure Options"
99 .so lib/ssl.man
100 .so lib/ssl-bootstrap.man
101 .so lib/ssl-peer-ca-cert.man
102 .so lib/vlog.man
103 .
104 .SH COMMANDS
105 The commands implemented by \fBvtep\-ctl\fR are described in the
106 sections below.
107 .
108 .SS "Physical Switch Commands"
109 These commands examine and manipulate physical switches.
110 .
111 .IP "[\fB\-\-may\-exist\fR] \fBadd\-ps \fIpswitch\fR"
112 Creates a new physical switch named \fIpswitch\fR.  Initially the switch
113 will have no ports.
114 .IP
115 Without \fB\-\-may\-exist\fR, attempting to create a switch that
116 exists is an error.  With \fB\-\-may\-exist\fR, this command does
117 nothing if \fIpswitch\fR already exists.
118 .
119 .IP "[\fB\-\-if\-exists\fR] \fBdel\-ps \fIpswitch\fR"
120 Deletes \fIpswitch\fR and all of its ports.
121 .IP
122 Without \fB\-\-if\-exists\fR, attempting to delete a switch that does
123 not exist is an error.  With \fB\-\-if\-exists\fR, attempting to
124 delete a switch that does not exist has no effect.
125 .
126 .IP "\fBlist\-ps\fR"
127 Lists all existing physical switches on standard output, one per line.
128 .
129 .IP "\fBps\-exists \fIpswitch\fR"
130 Tests whether \fIpswitch\fR exists.  If so, \fBvtep\-ctl\fR exits
131 successfully with exit code 0.  If not, \fBvtep\-ctl\fR exits
132 unsuccessfully with exit code 2.
133 .
134 .SS "Port Commands"
135 .
136 These commands examine and manipulate VTEP physical ports.
137 .
138 .IP "\fBlist\-ports \fIpswitch\fR"
139 Lists all of the ports within \fIpswitch\fR on standard output, one per
140 line.
141 .
142 .IP "[\fB\-\-may\-exist\fR] \fBadd\-port \fIpswitch port\fR"
143 Creates on \fIpswitch\fR a new port named \fIport\fR from the network
144 device of the same name.
145 .IP
146 Without \fB\-\-may\-exist\fR, attempting to create a port that exists
147 is an error.  With \fB\-\-may\-exist\fR, this command does nothing if
148 \fIport\fR already exists on \fIpswitch\fR.
149 .
150 .IP "[\fB\-\-if\-exists\fR] \fBdel\-port \fR[\fIpswitch\fR] \fIport\fR"
151 Deletes \fIport\fR.  If \fIpswitch\fR is omitted, \fIport\fR is removed
152 from whatever switch contains it; if \fIpswitch\fR is specified, it
153 must be the switch that contains \fIport\fR.
154 .IP
155 Without \fB\-\-if\-exists\fR, attempting to delete a port that does
156 not exist is an error.  With \fB\-\-if\-exists\fR, attempting to
157 delete a port that does not exist has no effect.
158 .
159 .SS "Logical Switch Commands"
160 These commands examine and manipulate logical switches.
161 .
162 .IP "[\fB\-\-may\-exist\fR] \fBadd\-ls \fIlswitch\fR"
163 Creates a new logical switch named \fIlswitch\fR.  Initially the switch
164 will have no locator bindings.
165 .IP
166 Without \fB\-\-may\-exist\fR, attempting to create a switch that
167 exists is an error.  With \fB\-\-may\-exist\fR, this command does
168 nothing if \fIlswitch\fR already exists.
169 .
170 .IP "[\fB\-\-if\-exists\fR] \fBdel\-ls \fIlswitch\fR"
171 Deletes \fIlswitch\fR.
172 .IP
173 Without \fB\-\-if\-exists\fR, attempting to delete a switch that does
174 not exist is an error.  With \fB\-\-if\-exists\fR, attempting to
175 delete a switch that does not exist has no effect.
176 .
177 .IP "\fBlist\-ls\fR"
178 Lists all existing logical switches on standard output, one per line.
179 .
180 .IP "\fBls\-exists \fIlswitch\fR"
181 Tests whether \fIlswitch\fR exists.  If so, \fBvtep\-ctl\fR exits
182 successfully with exit code 0.  If not, \fBvtep\-ctl\fR exits
183 unsuccessfully with exit code 2.
184 .
185 .IP "\fBbind\-ls \fIpswitch port vlan lswitch\fR"
186 Bind logical switch \fIlswitch\fR to the \fIport\fR/\fIvlan\fR
187 combination on the physical switch \fIpswitch\fR.
188 .
189 .IP "\fBunbind\-ls \fIpswitch port vlan\fR"
190 Remove the logical switch binding from the \fIport\fR/\fIvlan\fR
191 combination on the physical switch \fIpswitch\fR.
192 .
193 .IP "\fBlist\-bindings \fIpswitch port\fR"
194 List the logical switch bindings for \fIport\fR on the physical switch
195 \fIpswitch\fR.
196 .
197 .SS "Local MAC Binding Commands"
198 These commands examine and manipulate local MAC bindings for the logical
199 switch.  The local maps are written by the VTEP to refer to MACs it has
200 learned on its physical ports.
201 .
202 .IP "\fBadd\-ucast\-local \fIlswitch mac\fR [\fIencap\fR] \fIip\fR"
203 Map the unicast Ethernet address \fImac\fR to the physical location
204 \fIip\fR using encapsulation \fIencap\fR on \fIlswitch\fR.  If
205 \fIencap\fR is not specified, the default is "vxlan_over_ipv4".  The
206 local mappings are used by the VTEP to refer to MACs learned on its
207 physical ports.
208 .
209 .IP "\fBdel\-ucast\-local \fIlswitch mac\fR"
210 Remove the local unicast Ethernet address \fImac\fR map from
211 \fIlswitch\fR.  The local mappings are used by the VTEP to refer to MACs
212 learned on its physical ports.
213 .
214 .IP "\fBadd\-mcast\-local \fIlswitch mac\fR [\fIencap\fR] \fIip\fR"
215 Add physical location \fIip\fR using encapsulation \fIencap\fR to the
216 local mac binding table for multicast Ethernet address \fImac\fR on
217 \fIlswitch\fR.  If \fIencap\fR is not specified, the default is
218 "vxlan_over_ipv4".  The local mappings are used by the VTEP to refer to
219 MACs learned on its physical ports.
220 .
221 .IP "\fBdel\-mcast\-local \fIlswitch mac\fR [\fIencap\fR] \fIip\fR"
222 Remove physical location \fIip\fR using encapsulation \fIencap\fR from
223 the local mac binding table for multicast Ethernet address \fImac\fR on
224 \fIlswitch\fR.  If \fIencap\fR is not specified, the default is
225 "vxlan_over_ipv4".  The local mappings are used by the VTEP to refer to
226 MACs learned on its physical ports.
227 .
228 .IP "\fBclear\-local\-macs \fIlswitch\fR"
229 Clear the local MAC bindings for \fIlswitch\fR.
230 .
231 .IP "\fBlist\-local\-macs \fIlswitch\fR"
232 List the local MAC bindings for \fIlswitch\fR, one per line.
233 .
234 .SS "Remote MAC Binding Commands"
235 These commands examine and manipulate local and remote MAC bindings for
236 the logical switch.  The remote maps are written by the network
237 virtualization controller to refer to MACs that it has learned.
238 .
239 .IP "\fBadd\-ucast\-remote \fIlswitch mac\fR [\fIencap\fR] \fIip\fR"
240 Map the unicast Ethernet address \fImac\fR to the physical location
241 \fIip\fR using encapsulation \fIencap\fR on \fIlswitch\fR.  If
242 \fIencap\fR is not specified, the default is "vxlan_over_ipv4".  The
243 remote mappings are used by the network virtualization platform to refer
244 to MACs that it has learned.
245 .
246 .IP "\fBdel\-ucast\-remote \fIlswitch mac\fR"
247 Remove the remote unicast Ethernet address \fImac\fR map from
248 \fIlswitch\fR.  The remote mappings are used by the network
249 virtualization platform to refer to MACs that it has learned.
250 .
251 .IP "\fBadd\-mcast\-remote \fIlswitch mac\fR [\fIencap\fR] \fIip\fR"
252 Add physical location \fIip\fR using encapsulation \fIencap\fR to the
253 remote mac binding table for multicast Ethernet address \fImac\fR on
254 \fIlswitch\fR.  If \fIencap\fR is not specified, the default is
255 "vxlan_over_ipv4".  The remote mappings are used by the network
256 virtualization platform to refer to MACs that it has learned.
257 .
258 .IP "\fBdel\-mcast\-remote \fIlswitch mac\fR [\fIencap\fR] \fIip\fR"
259 Remove physical location \fIip\fR using encapsulation \fIencap\fR from
260 the remote mac binding table for multicast Ethernet address \fImac\fR on
261 \fIlswitch\fR.  If \fIencap\fR is not specified, the default is
262 "vxlan_over_ipv4".  The remote mappings are used by the network
263 virtualization platform to refer to MACs that it has learned.
264 .
265 .IP "\fBclear\-remote\-macs \fIlswitch\fR"
266 Clear the remote MAC bindings for \fIlswitch\fR.
267 .
268 .IP "\fBlist\-remote\-macs \fIlswitch\fR"
269 List the remote MAC bindings for \fIlswitch\fR, one per line.
270 .
271 .SS "Manager Connectivity"
272 .
273 These commands manipulate the \fBmanagers\fR column in the \fBGlobal\fR
274 table and rows in the \fBManagers\fR table.  When \fBovsdb\-server\fR is
275 configured to use the \fBmanagers\fR column for OVSDB connections (as
276 described in \fBINSTALL.Linux\fR and in the startup scripts provided
277 with Open vSwitch), this allows the administrator to use \fBvtep\-ctl\fR
278 to configure database connections.
279 .
280 .IP "\fBget\-manager\fR"
281 Prints the configured manager(s).
282 .
283 .IP "\fBdel\-manager\fR"
284 Deletes the configured manager(s).
285 .
286 .IP "\fBset\-manager\fR \fItarget\fR\&..."
287 Sets the configured manager target or targets.  Each \fItarget\fR may
288 use any of the following forms:
289 .
290 .RS
291 .so ovsdb/remote-active.man
292 .so ovsdb/remote-passive.man
293 .RE
294 .
295 .SS "Database Commands"
296 .
297 These commands query and modify the contents of \fBovsdb\fR tables.
298 They are a slight abstraction of the \fBovsdb\fR interface and as such
299 they operate at a lower level than other \fBvtep\-ctl\fR commands.
300 .PP
301 .ST "Identifying Tables, Records, and Columns"
302 .PP
303 Each of these commands has a \fItable\fR parameter to identify a table
304 within the database.  Many of them also take a \fIrecord\fR parameter
305 that identifies a particular record within a table.  The \fIrecord\fR
306 parameter may be the UUID for a record, and many tables offer
307 additional ways to identify records.  Some commands also take
308 \fIcolumn\fR parameters that identify a particular field within the
309 records in a table.
310 .PP
311 The following tables are currently defined:
312 .IP "\fBGlobal\fR"
313 Top-level configuration for a hardware VTEP.  This table contains
314 exactly one record, identified by specifying \fB.\fR as the record name.
315 .IP "\fBManager\fR"
316 Configuration for an OVSDB connection.  Records may be identified
317 by target (e.g. \fBtcp:1.2.3.4\fR).
318 .IP "\fBPhysical_Switch\fR"
319 A physical switch that implements a VTEP.  Records may be identified by
320 physical switch name.
321 .IP "\fBPhysical_Port\fR"
322 A port within a physical switch.
323 .IP "\fBLogical_Binding_Stats\fR"
324 Reports statistics for the logical switch with which a VLAN on a
325 physical port is associated.
326 .IP "\fBLogical_Switch\fR"
327 A logical Ethernet switch.  Records may be identified by logical switch
328 name.
329 .IP "\fBUcast_Macs_Local\fR"
330 Mapping of locally discovered unicast MAC addresses to tunnels.
331 .IP "\fBUcast_Macs_Remote\fR"
332 Mapping of remotely programmed unicast MAC addresses to tunnels.
333 .IP "\fBMcast_Macs_Local\fR"
334 Mapping of locally discovered multicast MAC addresses to tunnels.
335 .IP "\fBMcast_Macs_Remote\fR"
336 Mapping of remotely programmed multicast MAC addresses to tunnels.
337 .IP "\fBPhysical_Locator_Set\fR"
338 A set of one or more physical locators.
339 .IP "\fBPhysical_Locator\fR"
340 Identifies an endpoint to which logical switch traffic may be
341 encapsulated and forwarded.  Records may be identified by physical
342 locator name.
343 .PP
344 Record names must be specified in full and with correct
345 capitalization.  Names of tables and columns are not case-sensitive,
346 and \fB\-\-\fR and \fB_\fR are treated interchangeably.  Unique
347 abbreviations are acceptable, e.g. \fBman\fR or \fBm\fR is sufficient
348 to identify the \fBManager\fR table.
349 .
350 .ST "Database Values"
351 .PP
352 Each column in the database accepts a fixed type of data.  The
353 currently defined basic types, and their representations, are:
354 .IP "integer"
355 A decimal integer in the range \-2**63 to 2**63\-1, inclusive.
356 .IP "real"
357 A floating-point number.
358 .IP "Boolean"
359 True or false, written \fBtrue\fR or \fBfalse\fR, respectively.
360 .IP "string"
361 An arbitrary Unicode string, except that null bytes are not allowed.
362 Quotes are optional for most strings that begin with an English letter
363 or underscore and consist only of letters, underscores, hyphens, and
364 periods.  However, \fBtrue\fR and \fBfalse\fR and strings that match
365 the syntax of UUIDs (see below) must be enclosed in double quotes to
366 distinguish them from other basic types.  When double quotes are used,
367 the syntax is that of strings in JSON, e.g. backslashes may be used to
368 escape special characters.  The empty string must be represented as a
369 pair of double quotes (\fB""\fR).
370 .IP "UUID"
371 Either a universally unique identifier in the style of RFC 4122,
372 e.g. \fBf81d4fae\-7dec\-11d0\-a765\-00a0c91e6bf6\fR, or an \fB@\fIname\fR
373 defined by a \fBget\fR or \fBcreate\fR command within the same \fBvtep\-ctl\fR
374 invocation.
375 .PP
376 Multiple values in a single column may be separated by spaces or a
377 single comma.  When multiple values are present, duplicates are not
378 allowed, and order is not important.  Conversely, some database
379 columns can have an empty set of values, represented as \fB[]\fR, and
380 square brackets may optionally enclose other non-empty sets or single
381 values as well.
382 .PP
383 A few database columns are ``maps'' of key-value pairs, where the key
384 and the value are each some fixed database type.  These are specified
385 in the form \fIkey\fB=\fIvalue\fR, where \fIkey\fR and \fIvalue\fR
386 follow the syntax for the column's key type and value type,
387 respectively.  When multiple pairs are present (separated by spaces or
388 a comma), duplicate keys are not allowed, and again the order is not
389 important.  Duplicate values are allowed.  An empty map is represented
390 as \fB{}\fR.  Curly braces may optionally enclose non-empty maps as
391 well (but use quotes to prevent the shell from expanding
392 \fBother-config={0=x,1=y}\fR into \fBother-config=0=x
393 other-config=1=y\fR, which may not have the desired effect).
394 .
395 .ST "Database Command Syntax"
396 .IP "[\fB\-\-columns=\fIcolumn\fR[\fB,\fIcolumn\fR]...] \fBlist \fItable \fR[\fIrecord\fR]..."
397 Lists the data in each specified \fIrecord\fR.  If no
398 records are specified, lists all the records in \fItable\fR.
399 .IP
400 If \fB\-\-columns\fR is specified, only the requested columns are
401 listed, in the specified order.  Otherwise, all columns are listed, in
402 alphabetical order by column name.
403 .
404 .IP "[\fB\-\-columns=\fIcolumn\fR[\fB,\fIcolumn\fR]...] \fBfind \fItable \fR[\fIcolumn\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR]..."
405 Lists the data in each record in \fItable\fR whose \fIcolumn\fR equals
406 \fIvalue\fR or, if \fIkey\fR is specified, whose \fIcolumn\fR contains
407 a \fIkey\fR with the specified \fIvalue\fR.  The following operators
408 may be used where \fB=\fR is written in the syntax summary:
409 .RS
410 .IP "\fB= != < > <= >=\fR"
411 Selects records in which \fIcolumn\fR[\fB:\fIkey\fR] equals, does not
412 equal, is less than, is greater than, is less than or equal to, or is
413 greater than or equal to \fIvalue\fR, respectively.
414 .IP
415 Consider \fIcolumn\fR[\fB:\fIkey\fR] and \fIvalue\fR as sets of
416 elements.  Identical sets are considered equal.  Otherwise, if the
417 sets have different numbers of elements, then the set with more
418 elements is considered to be larger.  Otherwise, consider a element
419 from each set pairwise, in increasing order within each set.  The
420 first pair that differs determines the result.  (For a column that
421 contains key-value pairs, first all the keys are compared, and values
422 are considered only if the two sets contain identical keys.)
423 .IP "\fB{=} {!=}\fR"
424 Test for set equality or inequality, respectively.
425 .IP "\fB{<=}\fR"
426 Selects records in which \fIcolumn\fR[\fB:\fIkey\fR] is a subset of
427 \fIvalue\fR.  For example, \fBflood-vlans{<=}1,2\fR selects records in
428 which the \fBflood-vlans\fR column is the empty set or contains 1 or 2
429 or both.
430 .IP "\fB{<}\fR"
431 Selects records in which \fIcolumn\fR[\fB:\fIkey\fR] is a proper
432 subset of \fIvalue\fR.  For example, \fBflood-vlans{<}1,2\fR selects
433 records in which the \fBflood-vlans\fR column is the empty set or
434 contains 1 or 2 but not both.
435 .IP "\fB{>=} {>}\fR"
436 Same as \fB{<=}\fR and \fB{<}\fR, respectively, except that the
437 relationship is reversed.  For example, \fBflood-vlans{>=}1,2\fR
438 selects records in which the \fBflood-vlans\fR column contains both 1
439 and 2.
440 .RE
441 .IP
442 For arithmetic operators (\fB= != < > <= >=\fR), when \fIkey\fR is
443 specified but a particular record's \fIcolumn\fR does not contain
444 \fIkey\fR, the record is always omitted from the results.  Thus, the
445 condition \fBother-config:mtu!=1500\fR matches records that have a
446 \fBmtu\fR key whose value is not 1500, but not those that lack an
447 \fBmtu\fR key.
448 .IP
449 For the set operators, when \fIkey\fR is specified but a particular
450 record's \fIcolumn\fR does not contain \fIkey\fR, the comparison is
451 done against an empty set.  Thus, the condition
452 \fBother-config:mtu{!=}1500\fR matches records that have a \fBmtu\fR
453 key whose value is not 1500 and those that lack an \fBmtu\fR key.
454 .IP
455 Don't forget to escape \fB<\fR or \fB>\fR from interpretation by the
456 shell.
457 .IP
458 If \fB\-\-columns\fR is specified, only the requested columns are
459 listed, in the specified order.  Otherwise all columns are listed, in
460 alphabetical order by column name.
461 .IP
462 The UUIDs shown for rows created in the same \fBvtep\-ctl\fR
463 invocation will be wrong.
464 .
465 .IP "[\fB\-\-id=@\fIname\fR] [\fB\-\-if\-exists\fR] \fBget \fItable record \fR[\fIcolumn\fR[\fB:\fIkey\fR]]..."
466 Prints the value of each specified \fIcolumn\fR in the given
467 \fIrecord\fR in \fItable\fR.  For map columns, a \fIkey\fR may
468 optionally be specified, in which case the value associated with
469 \fIkey\fR in the column is printed, instead of the entire map.
470 .IP
471 For a map column, without \fB\-\-if\-exists\fR it is an error if
472 \fIkey\fR does not exist; with it, a blank line is printed.  If
473 \fIcolumn\fR is not a map column or if \fIkey\fR is not specified,
474 \fB\-\-if\-exists\fR has no effect.
475 .IP
476 If \fB@\fIname\fR is specified, then the UUID for \fIrecord\fR may be
477 referred to by that name later in the same \fBvtep\-ctl\fR
478 invocation in contexts where a UUID is expected.
479 .IP
480 Both \fB\-\-id\fR and the \fIcolumn\fR arguments are optional, but
481 usually at least one or the other should be specified.  If both are
482 omitted, then \fBget\fR has no effect except to verify that
483 \fIrecord\fR exists in \fItable\fR.
484 .
485 .IP "\fBset \fItable record column\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR..."
486 Sets the value of each specified \fIcolumn\fR in the given
487 \fIrecord\fR in \fItable\fR to \fIvalue\fR.  For map columns, a
488 \fIkey\fR may optionally be specified, in which case the value
489 associated with \fIkey\fR in that column is changed (or added, if none
490 exists), instead of the entire map.
491 .
492 .IP "\fBadd \fItable record column \fR[\fIkey\fB=\fR]\fIvalue\fR..."
493 Adds the specified value or key-value pair to \fIcolumn\fR in
494 \fIrecord\fR in \fItable\fR.  If \fIcolumn\fR is a map, then \fIkey\fR
495 is required, otherwise it is prohibited.  If \fIkey\fR already exists
496 in a map column, then the current \fIvalue\fR is not replaced (use the
497 \fBset\fR command to replace an existing value).
498 .
499 .IP "\fBremove \fItable record column \fR\fIvalue\fR..."
500 .IQ "\fBremove \fItable record column \fR\fIkey\fR..."
501 .IQ "\fBremove \fItable record column \fR\fIkey\fB=\fR\fIvalue\fR..."
502 Removes the specified values or key-value pairs from \fIcolumn\fR in
503 \fIrecord\fR in \fItable\fR.  The first form applies to columns that
504 are not maps: each specified \fIvalue\fR is removed from the column.
505 The second and third forms apply to map columns: if only a \fIkey\fR
506 is specified, then any key-value pair with the given \fIkey\fR is
507 removed, regardless of its value; if a \fIvalue\fR is given then a
508 pair is removed only if both key and value match.
509 .IP
510 It is not an error if the column does not contain the specified key or
511 value or pair.
512 .
513 .IP "\fBclear\fR \fItable record column\fR..."
514 Sets each \fIcolumn\fR in \fIrecord\fR in \fItable\fR to the empty set
515 or empty map, as appropriate.  This command applies only to columns
516 that are allowed to be empty.
517 .
518 .IP "[\fB\-\-id=@\fIname\fR] \fBcreate\fR \fItable column\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR..."
519 Creates a new record in \fItable\fR and sets the initial values of
520 each \fIcolumn\fR.  Columns not explicitly set will receive their
521 default values.  Outputs the UUID of the new row.
522 .IP
523 If \fB@\fIname\fR is specified, then the UUID for the new row may be
524 referred to by that name elsewhere in the same \fBvtep\-ctl\fR
525 invocation in contexts where a UUID is expected.  Such references may
526 precede or follow the \fBcreate\fR command.
527 .IP
528 Records in the Open vSwitch database are significant only when they
529 can be reached directly or indirectly from the \fBOpen_vSwitch\fR
530 table.  Except for records in the \fBQoS\fR or \fBQueue\fR tables,
531 records that are not reachable from the \fBOpen_vSwitch\fR table are
532 automatically deleted from the database.  This deletion happens
533 immediately, without waiting for additional \fBvtep\-ctl\fR commands
534 or other database activity.  Thus, a \fBcreate\fR command must
535 generally be accompanied by additional commands \fIwithin the same
536 \fBvtep\-ctl\fI invocation\fR to add a chain of references to the
537 newly created record from the top-level \fBOpen_vSwitch\fR record.
538 The \fBEXAMPLES\fR section gives some examples that show how to do
539 this.
540 .
541 .IP "\fR[\fB\-\-if\-exists\fR] \fBdestroy \fItable record\fR..."
542 Deletes each specified \fIrecord\fR from \fItable\fR.  Unless
543 \fB\-\-if\-exists\fR is specified, each \fIrecord\fRs must exist.
544 .IP "\fB\-\-all destroy \fItable\fR"
545 Deletes all records from the \fItable\fR.
546 .IP
547 The \fBdestroy\fR command is only useful for records in the \fBQoS\fR
548 or \fBQueue\fR tables.  Records in other tables are automatically
549 deleted from the database when they become unreachable from the
550 \fBOpen_vSwitch\fR table.  This means that deleting the last reference
551 to a record is sufficient for deleting the record itself.  For records
552 in these tables, \fBdestroy\fR is silently ignored.  See the
553 \fBEXAMPLES\fR section below for more information.
554 .
555 .IP "\fBwait\-until \fItable record \fR[\fIcolumn\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR]..."
556 Waits until \fItable\fR contains a record named \fIrecord\fR whose
557 \fIcolumn\fR equals \fIvalue\fR or, if \fIkey\fR is specified, whose
558 \fIcolumn\fR contains a \fIkey\fR with the specified \fIvalue\fR.  Any
559 of the operators \fB!=\fR, \fB<\fR, \fB>\fR, \fB<=\fR, or \fB>=\fR may
560 be substituted for \fB=\fR to test for inequality, less than, greater
561 than, less than or equal to, or greater than or equal to,
562 respectively.  (Don't forget to escape \fB<\fR or \fB>\fR from
563 interpretation by the shell.)
564 .IP
565 If no \fIcolumn\fR[\fB:\fIkey\fR]\fB=\fIvalue\fR arguments are given,
566 this command waits only until \fIrecord\fR exists.  If more than one
567 such argument is given, the command waits until all of them are
568 satisfied.
569 .IP
570 Consider specifying \fB\-\-timeout=0\fR along with
571 \fB\-\-wait\-until\fR, to prevent \fBvtep\-ctl\fR from terminating
572 after waiting only at most 5 seconds.
573 .IP "\fBcomment \fR[\fIarg\fR]..."
574 This command has no effect on behavior, but any database log record
575 created by the command will include the command and its arguments.
576 .PP
577 .SH "EXIT STATUS"
578 .IP "0"
579 Successful program execution.
580 .IP "1"
581 Usage, syntax, or configuration file error.
582 .IP "2"
583 The \fIswitch\fR argument to \fBps\-exists\fR specified the name of a
584 physical switch that does not exist.
585 .SH "SEE ALSO"
586 .
587 .BR ovsdb\-server (1),
588 .BR vtep (5).