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