@@ -12,50 +12,16 @@
<h1>General Commands</h1>
<dl>
- <dt><code>show [<var>lswitch</var> | <var>lrouter</var>]</code></dt>
+ <dt><code>show [<var>lswitch</var> | <var>router</var>]</code></dt>
<dd>
Prints a brief overview of the database contents. If
<var>lswitch</var> is provided, only records related to that
logical switch are shown. If
- <var>lrouter</var> is provided, only records related to that
+ <var>router</var> is provided, only records related to that
logical router are shown.
</dd>
</dl>
- <h1>Logical Router Commands</h1>
-
- <dl>
- <dt>[<code>--may-exist</code> | <code>--add-duplicate</code>] <code>lrouter-add</code> <var>lrouter</var></dt>
- <dd>
- <p>
- Creates a new logical router named <var>lrouter</var>, which
- initially has no router ports.
- </p>
-
- <p>
- The OVN northbound database schema does not require logical router
- names to be unique, but the whole point to the names is to provide an
- easy way for humans to refer to the routers, making duplicate names
- unhelpful. Thus, without any options, this command regards it as an
- error if <var>lrouter</var> is a duplicate name. With
- <code>--may-exist</code>, adding a duplicate name succeeds but does
- not create a new logical router. With <code>--add-duplicate</code>,
- the command really creates a new logical router with a duplicate
- name. It is an error to specify both options.
- </p>
- </dd>
-
- <dt>[<code>--if-exists</code>] <code>lrouter-del</code> <var>lrouter</var></dt>
- <dd>
- Deletes <var>lrouter</var>. It is an error if <var>lrouter</var> does
- not exist, unless <code>--if-exists</code> is specified.
- </dd>
-
- <dt><code>lrouter-list</code></dt>
- <dd>
- Lists all existing logical routers on standard output, one per line.
- </dd>
- </dl>
<h1>Logical Switch Commands</h1>
<dl>
@@ -127,12 +93,14 @@
Lists the ACLs on <var>lswitch</var>.
</dd>
</dl>
+
<h1>Logical Router Port Commands</h1>
+
<dl>
- <dt>[<code>--may-exist</code>] <code>lrport-add</code> <var>lrouter</var> <var>lrport</var></dt>
+ <dt>[<code>--may-exist</code>] <code>lrport-add</code> <var>router</var> <var>lrport</var></dt>
<dd>
<p>
- Creates on <var>lrouter</var> a new logical router port named
+ Creates on <var>router</var> a new logical router port named
<var>lrport</var>.
</p>
@@ -141,7 +109,7 @@
already exists, unless <code>--may-exist</code> is specified.
Regardless of <code>--may-exist</code>, it is an error if the
existing router port is in some logical router other than
- <var>lrouter</var>.
+ <var>router</var>.
</p>
</dd>
@@ -151,9 +119,9 @@
not exist, unless <code>--if-exists</code> is specified.
</dd>
- <dt><code>lrport-list</code> <var>lrouter</var></dt>
+ <dt><code>lrport-list</code> <var>router</var></dt>
<dd>
- Lists all the logical router ports within <var>lrouter</var> on
+ Lists all the logical router ports within <var>router</var> on
standard output, one per line.
</dd>
@@ -333,6 +301,50 @@
</dl>
+ <h1>Logical Router Commands</h1>
+
+ <dl>
+ <dt><code>lr-add</code></dt>
+ <dd>
+ <p>
+ Creates a new, unnamed logical router, which initially has no ports.
+ The router does not have a name, other commands must refer to this
+ router by its UUID.
+ </p>
+ </dd>
+
+ <dt>[<code>--may-exist</code> | <code>--add-duplicate</code>] <code>lr-add</code> <var>router</var></dt>
+ <dd>
+ <p>
+ Creates a new logical router named <var>router</var>, which
+ initially has no ports.
+ </p>
+
+ <p>
+ The OVN northbound database schema does not require logical router
+ names to be unique, but the whole point to the names is to provide an
+ easy way for humans to refer to the routers, making duplicate names
+ unhelpful. Thus, without any options, this command regards it as an
+ error if <var>router</var> is a duplicate name. With
+ <code>--may-exist</code>, adding a duplicate name succeeds but does
+ not create a new logical router. With <code>--add-duplicate</code>,
+ the command really creates a new logical router with a duplicate
+ name. It is an error to specify both options.
+ </p>
+ </dd>
+
+ <dt>[<code>--if-exists</code>] <code>lr-del</code> <var>router</var></dt>
+ <dd>
+ Deletes <var>router</var>. It is an error if <var>router</var> does
+ not exist, unless <code>--if-exists</code> is specified.
+ </dd>
+
+ <dt><code>lr-list</code></dt>
+ <dd>
+ Lists all existing routers on standard output, one per line.
+ </dd>
+ </dl>
+
<h1>Database Commands</h1>
<p>These commands query and modify the contents of <code>ovsdb</code> tables.
They are a slight abstraction of the <code>ovsdb</code> interface and
@@ -293,18 +293,13 @@ usage: %s [OPTIONS] COMMAND [ARG...]\n\
General commands:\n\
show print overview of database contents\n\
show LSWITCH print overview of database contents for LSWITCH\n\
- show LROUTER print overview of database contents for LROUTER\n\
+ show ROUTER print overview of database contents for ROUTER\n\
\n\
Logical switch commands:\n\
lswitch-add [LSWITCH] create a logical switch named LSWITCH\n\
lswitch-del LSWITCH delete LSWITCH and all its ports\n\
lswitch-list print the names of all logical switches\n\
\n\
-Logical router commands:\n\
- lrouter-add [LROUTER] create a logical router named LROUTER\n\
- lrouter-del LROUTER delete LROUTER and all its ports\n\
- lrouter-list print the names of all logical routers\n\
-\n\
ACL commands:\n\
acl-add LSWITCH DIRECTION PRIORITY MATCH ACTION [log]\n\
add an ACL to LSWITCH\n\
@@ -313,9 +308,9 @@ ACL commands:\n\
acl-list LSWITCH print ACLs for LSWITCH\n\
\n\
Logical router port commands:\n\
- lrport-add LROUTER LRPORT add logical router port LRPORT to LROUTER\n\
- lrport-del LRPORT delete LRPORT from its attached router\n\
- lrport-list LROUTER print the names of all logical ports on LROUTER\n\
+ lrport-add ROUTER LRPORT add logical router port LRPORT to ROUTER\n\
+ lrport-del LRPORT delete LRPORT from its attached router\n\
+ lrport-list ROUTER print the names of all logical ports on ROUTER\n\
lrport-set-mac-address LRPORT [ADDRESS]\n\
set MAC address for LRPORT.\n\
lrport-get-mac-address LRPORT get MAC addresses on LRPORT\n\
@@ -352,6 +347,11 @@ Logical port commands:\n\
Set options related to the type of LPORT\n\
lport-get-options LPORT Get the type specific options for LPORT\n\
\n\
+Logical router commands:\n\
+ lr-add [ROUTER] create a logical router named ROUTER\n\
+ lr-del ROUTER delete ROUTER and all its ports\n\
+ lr-list print the names of all logical routers\n\
+\n\
%s\
\n\
Options:\n\
@@ -372,41 +372,40 @@ Other options:\n\
}
-/* Find an lrouter given its id. */
+/* Find a logical router given its id. */
static const struct nbrec_logical_router *
-lrouter_by_name_or_uuid(struct ctl_context *ctx, const char *id,
+lr_by_name_or_uuid(struct ctl_context *ctx, const char *id,
bool must_exist)
{
- const struct nbrec_logical_router *lrouter = NULL;
+ const struct nbrec_logical_router *lr = NULL;
bool is_uuid = false;
- struct uuid lrouter_uuid;
+ struct uuid lr_uuid;
- if (uuid_from_string(&lrouter_uuid, id)) {
+ if (uuid_from_string(&lr_uuid, id)) {
is_uuid = true;
- lrouter = nbrec_logical_router_get_for_uuid(ctx->idl,
- &lrouter_uuid);
+ lr = nbrec_logical_router_get_for_uuid(ctx->idl, &lr_uuid);
}
- if (!lrouter) {
+ if (!lr) {
const struct nbrec_logical_router *iter;
NBREC_LOGICAL_ROUTER_FOR_EACH(iter, ctx->idl) {
if (strcmp(iter->name, id)) {
continue;
}
- if (lrouter) {
+ if (lr) {
ctl_fatal("Multiple logical routers named '%s'. "
"Use a UUID.", id);
}
- lrouter = iter;
+ lr = iter;
}
}
- if (!lrouter && must_exist) {
- ctl_fatal("%s: lrouter %s not found", id, is_uuid ? "UUID" : "name");
+ if (!lr && must_exist) {
+ ctl_fatal("%s: router %s not found", id, is_uuid ? "UUID" : "name");
}
- return lrouter;
+ return lr;
}
static const struct nbrec_logical_switch *
@@ -443,15 +442,16 @@ lswitch_by_name_or_uuid(struct ctl_context *ctx, const char *id,
return lswitch;
}
-/* Given pointer to lrouter, this routine prints the lrouter information. */
+/* Given pointer to logical router, this routine prints the router
+ * information. */
static void
-print_lrouter(const struct nbrec_logical_router *lrouter, struct ds *s)
+print_lr(const struct nbrec_logical_router *lr, struct ds *s)
{
- ds_put_format(s, " lrouter "UUID_FMT" (%s)\n",
- UUID_ARGS(&lrouter->header_.uuid), lrouter->name);
+ ds_put_format(s, " router "UUID_FMT" (%s)\n",
+ UUID_ARGS(&lr->header_.uuid), lr->name);
- for (size_t i = 0; i < lrouter->n_ports; i++) {
- const struct nbrec_logical_router_port *lrport = lrouter->ports[i];
+ for (size_t i = 0; i < lr->n_ports; i++) {
+ const struct nbrec_logical_router_port *lrport = lr->ports[i];
ds_put_format(s, " lrport %s\n", lrport->name);
if (lrport->mac) {
ds_put_cstr(s, " mac: ");
@@ -504,95 +504,20 @@ nbctl_show(struct ctl_context *ctx)
print_lswitch(lswitch, &ctx->output);
}
}
- const struct nbrec_logical_router *lrouter;
+ const struct nbrec_logical_router *lr;
if (ctx->argc == 2) {
- lrouter = lrouter_by_name_or_uuid(ctx, ctx->argv[1], false);
- if (lrouter) {
- print_lrouter(lrouter, &ctx->output);
+ lr = lr_by_name_or_uuid(ctx, ctx->argv[1], false);
+ if (lr) {
+ print_lr(lr, &ctx->output);
}
} else {
- NBREC_LOGICAL_ROUTER_FOR_EACH(lrouter, ctx->idl) {
- print_lrouter(lrouter, &ctx->output);
+ NBREC_LOGICAL_ROUTER_FOR_EACH(lr, ctx->idl) {
+ print_lr(lr, &ctx->output);
}
}
}
-/* Add an lrouter. */
-static void
-nbctl_lrouter_add(struct ctl_context *ctx)
-{
- const char *lrouter_name = ctx->argc == 2 ? ctx->argv[1] : NULL;
-
- bool may_exist = shash_find(&ctx->options, "--may-exist") != NULL;
- bool add_duplicate = shash_find(&ctx->options, "--add-duplicate") != NULL;
- if (may_exist && add_duplicate) {
- ctl_fatal("--may-exist and --add-duplicate may not be used together");
- }
-
- if (lrouter_name) {
- if (!add_duplicate) {
- const struct nbrec_logical_router *lrouter;
- NBREC_LOGICAL_ROUTER_FOR_EACH (lrouter, ctx->idl) {
- if (!strcmp(lrouter->name, lrouter_name)) {
- if (may_exist) {
- return;
- }
- ctl_fatal("%s: an lrouter with this name already exists",
- lrouter_name);
- }
- }
- }
- } else if (may_exist) {
- ctl_fatal("--may-exist requires specifying a name");
- } else if (add_duplicate) {
- ctl_fatal("--add-duplicate requires specifying a name");
- }
-
- struct nbrec_logical_router *lrouter;
- lrouter = nbrec_logical_router_insert(ctx->txn);
- if (lrouter_name) {
- nbrec_logical_router_set_name(lrouter, lrouter_name);
- }
-}
-
-/* Delete an lrouter. */
-static void
-nbctl_lrouter_del(struct ctl_context *ctx)
-{
- bool must_exist = !shash_find(&ctx->options, "--if-exists");
- const char *id = ctx->argv[1];
- const struct nbrec_logical_router *lrouter;
-
- lrouter = lrouter_by_name_or_uuid(ctx, id, must_exist);
- if (!lrouter) {
- return;
- }
-
- nbrec_logical_router_delete(lrouter);
-}
-
-/* Print list of lrouters. */
-static void
-nbctl_lrouter_list(struct ctl_context *ctx)
-{
- const struct nbrec_logical_router *lrouter;
- struct smap lrouters;
-
- smap_init(&lrouters);
- NBREC_LOGICAL_ROUTER_FOR_EACH (lrouter, ctx->idl) {
- smap_add_format(&lrouters, lrouter->name, UUID_FMT " (%s)",
- UUID_ARGS(&lrouter->header_.uuid), lrouter->name);
- }
- const struct smap_node **nodes = smap_sort(&lrouters);
- for (size_t i = 0; i < smap_count(&lrouters); i++) {
- const struct smap_node *node = nodes[i];
- ds_put_format(&ctx->output, "%s\n", node->value);
- }
- smap_destroy(&lrouters);
- free(nodes);
-}
-
static void
nbctl_lswitch_add(struct ctl_context *ctx)
{
@@ -742,16 +667,16 @@ lport_to_lswitch(const struct ovsdb_idl *idl,
lport->name);
}
-/* Returns the lrouter that contains 'lport'. */
+/* Returns the logical router that contains 'lport'. */
static const struct nbrec_logical_router *
-lrport_to_lrouter(const struct ovsdb_idl *idl,
- const struct nbrec_logical_router_port *lrport)
+lrport_to_lr(const struct ovsdb_idl *idl,
+ const struct nbrec_logical_router_port *lrport)
{
- const struct nbrec_logical_router *lrouter;
- NBREC_LOGICAL_ROUTER_FOR_EACH (lrouter, idl) {
- for (size_t i = 0; i < lrouter->n_ports; i++) {
- if (lrouter->ports[i] == lrport) {
- return lrouter;
+ const struct nbrec_logical_router *lr;
+ NBREC_LOGICAL_ROUTER_FOR_EACH (lr, idl) {
+ for (size_t i = 0; i < lr->n_ports; i++) {
+ if (lr->ports[i] == lrport) {
+ return lr;
}
}
}
@@ -773,13 +698,13 @@ lswitch_get_name(const struct nbrec_logical_switch *lswitch,
}
static const char *
-lrouter_get_name(const struct nbrec_logical_router *lrouter,
- char uuid_s[UUID_LEN + 1], size_t uuid_s_size)
+lr_get_name(const struct nbrec_logical_router *lr,
+ char uuid_s[UUID_LEN + 1], size_t uuid_s_size)
{
- if (lrouter->name[0]) {
- return lrouter->name;
+ if (lr->name[0]) {
+ return lr->name;
}
- snprintf(uuid_s, uuid_s_size, UUID_FMT, UUID_ARGS(&lrouter->header_.uuid));
+ snprintf(uuid_s, uuid_s_size, UUID_FMT, UUID_ARGS(&lr->header_.uuid));
return uuid_s;
}
@@ -869,20 +794,20 @@ nbctl_lport_add(struct ctl_context *ctx)
free(new_ports);
}
-/* Removes lrport 'lrouter->ports[idx]' from lrouter. */
+/* Removes lrport 'lr->ports[idx]' from logical router. */
static void
-remove_lrport(const struct nbrec_logical_router *lrouter, size_t idx)
+remove_lrport(const struct nbrec_logical_router *lr, size_t idx)
{
- const struct nbrec_logical_router_port *lrport = lrouter->ports[idx];
+ const struct nbrec_logical_router_port *lrport = lr->ports[idx];
/* First remove 'lrport' from the array of ports. This is what will
* actually cause the logical port to be deleted when the transaction is
* sent to the database server (due to garbage collection). */
struct nbrec_logical_router_port **new_ports
- = xmemdup(lrouter->ports, sizeof *new_ports * lrouter->n_ports);
- new_ports[idx] = new_ports[lrouter->n_ports - 1];
- nbrec_logical_router_verify_ports(lrouter);
- nbrec_logical_router_set_ports(lrouter, new_ports, lrouter->n_ports - 1);
+ = xmemdup(lr->ports, sizeof *new_ports * lr->n_ports);
+ new_ports[idx] = new_ports[lr->n_ports - 1];
+ nbrec_logical_router_verify_ports(lr);
+ nbrec_logical_router_set_ports(lr, new_ports, lr->n_ports - 1);
free(new_ports);
/* Delete 'lrport' from the IDL. */
@@ -1423,6 +1348,78 @@ nbctl_acl_del(struct ctl_context *ctx)
}
}
+static void
+nbctl_lr_add(struct ctl_context *ctx)
+{
+ const char *lr_name = ctx->argc == 2 ? ctx->argv[1] : NULL;
+
+ bool may_exist = shash_find(&ctx->options, "--may-exist") != NULL;
+ bool add_duplicate = shash_find(&ctx->options, "--add-duplicate") != NULL;
+ if (may_exist && add_duplicate) {
+ ctl_fatal("--may-exist and --add-duplicate may not be used together");
+ }
+
+ if (lr_name) {
+ if (!add_duplicate) {
+ const struct nbrec_logical_router *lr;
+ NBREC_LOGICAL_ROUTER_FOR_EACH (lr, ctx->idl) {
+ if (!strcmp(lr->name, lr_name)) {
+ if (may_exist) {
+ return;
+ }
+ ctl_fatal("%s: a router with this name already exists",
+ lr_name);
+ }
+ }
+ }
+ } else if (may_exist) {
+ ctl_fatal("--may-exist requires specifying a name");
+ } else if (add_duplicate) {
+ ctl_fatal("--add-duplicate requires specifying a name");
+ }
+
+ struct nbrec_logical_router *lr;
+ lr = nbrec_logical_router_insert(ctx->txn);
+ if (lr_name) {
+ nbrec_logical_router_set_name(lr, lr_name);
+ }
+}
+
+static void
+nbctl_lr_del(struct ctl_context *ctx)
+{
+ bool must_exist = !shash_find(&ctx->options, "--if-exists");
+ const char *id = ctx->argv[1];
+ const struct nbrec_logical_router *lr;
+
+ lr = lr_by_name_or_uuid(ctx, id, must_exist);
+ if (!lr) {
+ return;
+ }
+
+ nbrec_logical_router_delete(lr);
+}
+
+static void
+nbctl_lr_list(struct ctl_context *ctx)
+{
+ const struct nbrec_logical_router *lr;
+ struct smap lrs;
+
+ smap_init(&lrs);
+ NBREC_LOGICAL_ROUTER_FOR_EACH(lr, ctx->idl) {
+ smap_add_format(&lrs, lr->name, UUID_FMT " (%s)",
+ UUID_ARGS(&lr->header_.uuid), lr->name);
+ }
+ const struct smap_node **nodes = smap_sort(&lrs);
+ for (size_t i = 0; i < smap_count(&lrs); i++) {
+ const struct smap_node *node = nodes[i];
+ ds_put_format(&ctx->output, "%s\n", node->value);
+ }
+ smap_destroy(&lrs);
+ free(nodes);
+}
+
static const struct ctl_table_class tables[] = {
{&nbrec_table_logical_switch,
{{&nbrec_table_logical_switch, &nbrec_logical_switch_col_name, NULL},
@@ -1657,15 +1654,15 @@ static void
nbctl_lrport_list(struct ctl_context *ctx)
{
const char *id = ctx->argv[1];
- const struct nbrec_logical_router *lrouter;
+ const struct nbrec_logical_router *lr;
struct smap lports;
size_t i;
- lrouter = lrouter_by_name_or_uuid(ctx, id, true);
+ lr = lr_by_name_or_uuid(ctx, id, true);
smap_init(&lports);
- for (i = 0; i < lrouter->n_ports; i++) {
- const struct nbrec_logical_router_port *lport = lrouter->ports[i];
+ for (i = 0; i < lr->n_ports; i++) {
+ const struct nbrec_logical_router_port *lport = lr->ports[i];
smap_add_format(&lports, lport->name, UUID_FMT " (%s)",
UUID_ARGS(&lport->header_.uuid), lport->name);
}
@@ -1678,14 +1675,14 @@ nbctl_lrport_list(struct ctl_context *ctx)
free(nodes);
}
-/* Add an lrport to the lrouter. */
+/* Add an lrport to the logical router. */
static void
nbctl_lrport_add(struct ctl_context *ctx)
{
bool may_exist = shash_find(&ctx->options, "--may-exist") != NULL;
- const struct nbrec_logical_router *lrouter;
- lrouter = lrouter_by_name_or_uuid(ctx, ctx->argv[1], true);
+ const struct nbrec_logical_router *lr;
+ lr = lr_by_name_or_uuid(ctx, ctx->argv[1], true);
const char *lrport_name = ctx->argv[2];
const struct nbrec_logical_router_port *lrport;
@@ -1697,13 +1694,13 @@ nbctl_lrport_add(struct ctl_context *ctx)
lrport_name);
}
- const struct nbrec_logical_router *lr;
- lr = lrport_to_lrouter(ctx->idl, lrport);
- if (lr != lrouter) {
+ const struct nbrec_logical_router *bound_lr;
+ bound_lr = lrport_to_lr(ctx->idl, lrport);
+ if (bound_lr != lr) {
char uuid_s[UUID_LEN + 1];
- ctl_fatal("%s: lrport already exists but in lrouter %s",
+ ctl_fatal("%s: lrport already exists but in router %s",
lrport_name,
- lrouter_get_name(lr, uuid_s, sizeof uuid_s));
+ lr_get_name(bound_lr, uuid_s, sizeof uuid_s));
}
return;
@@ -1714,17 +1711,17 @@ nbctl_lrport_add(struct ctl_context *ctx)
nbrec_logical_router_port_set_name(lrport, ctx->argv[2]);
/* Insert the logical port into the logical router. */
- nbrec_logical_router_verify_ports(lrouter);
+ nbrec_logical_router_verify_ports(lr);
struct nbrec_logical_router_port **new_ports = xmalloc(sizeof *new_ports *
- (lrouter->n_ports + 1));
- memcpy(new_ports, lrouter->ports, sizeof *new_ports * lrouter->n_ports);
- new_ports[lrouter->n_ports] = CONST_CAST(
+ (lr->n_ports + 1));
+ memcpy(new_ports, lr->ports, sizeof *new_ports * lr->n_ports);
+ new_ports[lr->n_ports] = CONST_CAST(
struct nbrec_logical_router_port *, lrport);
- nbrec_logical_router_set_ports(lrouter, new_ports, lrouter->n_ports + 1);
+ nbrec_logical_router_set_ports(lr, new_ports, lr->n_ports + 1);
free(new_ports);
}
-/* Deletes an lrport from an lrouter. */
+/* Deletes an lrport from a logical router. */
static void
nbctl_lrport_del(struct ctl_context *ctx)
{
@@ -1737,11 +1734,11 @@ nbctl_lrport_del(struct ctl_context *ctx)
}
/* Find the router that contains 'lrport', then delete it. */
- const struct nbrec_logical_router *lrouter;
- NBREC_LOGICAL_ROUTER_FOR_EACH (lrouter, ctx->idl) {
- for (size_t i = 0; i < lrouter->n_ports; i++) {
- if (lrouter->ports[i] == lrport) {
- remove_lrport(lrouter, i);
+ const struct nbrec_logical_router *lr;
+ NBREC_LOGICAL_ROUTER_FOR_EACH (lr, ctx->idl) {
+ for (size_t i = 0; i < lr->n_ports; i++) {
+ if (lr->ports[i] == lrport) {
+ remove_lrport(lr, i);
return;
}
}
@@ -1761,13 +1758,6 @@ static const struct ctl_command_syntax nbctl_commands[] = {
NULL, "--if-exists", RW },
{ "lswitch-list", 0, 0, "", NULL, nbctl_lswitch_list, NULL, "", RO },
- /* lrouter commands. */
- { "lrouter-add", 0, 1, "[LROUTER]", NULL, nbctl_lrouter_add,
- NULL, "--may-exist,--add-duplicate", RW },
- { "lrouter-del", 1, 1, "LROUTER", NULL, nbctl_lrouter_del,
- NULL, "--if-exists", RW },
- { "lrouter-list", 0, 0, "", NULL, nbctl_lrouter_list, NULL, "", RO },
-
/* acl commands. */
{ "acl-add", 5, 5, "LSWITCH DIRECTION PRIORITY MATCH ACTION", NULL,
nbctl_acl_add, NULL, "--log", RW },
@@ -1776,10 +1766,10 @@ static const struct ctl_command_syntax nbctl_commands[] = {
{ "acl-list", 1, 1, "LSWITCH", NULL, nbctl_acl_list, NULL, "", RO },
/* lrport commands. */
- { "lrport-add", 2, 2, "LROUTER LRPORT", NULL, nbctl_lrport_add,
+ { "lrport-add", 2, 2, "ROUTER LRPORT", NULL, nbctl_lrport_add,
NULL, "--may-exist", RW },
{ "lrport-del", 1, 1, "LRPORT", NULL, nbctl_lrport_del, NULL, "", RO },
- { "lrport-list", 1, 1, "LROUTER", NULL, nbctl_lrport_list, NULL, "", RO },
+ { "lrport-list", 1, 1, "ROUTER", NULL, nbctl_lrport_list, NULL, "", RO },
{ "lrport-set-mac-address", 1, 2, "LRPORT [ADDRESS]", NULL,
nbctl_lrport_set_mac, NULL, "", RW },
{ "lrport-get-mac-address", 1, 1, "LRPORT", NULL,
@@ -1823,6 +1813,12 @@ static const struct ctl_command_syntax nbctl_commands[] = {
{ "lport-get-options", 1, 1, "LPORT", NULL, nbctl_lport_get_options, NULL,
"", RO },
+ /* logical router commands. */
+ { "lr-add", 0, 1, "[ROUTER]", NULL, nbctl_lr_add, NULL,
+ "--may-exist,--add-duplicate", RW },
+ { "lr-del", 1, 1, "ROUTER", NULL, nbctl_lr_del, NULL, "--if-exists", RW },
+ { "lr-list", 0, 0, "", NULL, nbctl_lr_list, NULL, "", RO },
+
{NULL, 0, 0, NULL, NULL, NULL, NULL, "", RO},
};
@@ -234,56 +234,56 @@ AT_CLEANUP
dnl ---------------------------------------------------------------------
-AT_SETUP([ovn-nbctl - basic lrouter commands])
+AT_SETUP([ovn-nbctl - basic logical router commands])
OVN_NBCTL_TEST_START
-AT_CHECK([ovn-nbctl lrouter-add lr0])
-AT_CHECK([ovn-nbctl lrouter-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
+AT_CHECK([ovn-nbctl lr-add lr0])
+AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lr0)
])
-AT_CHECK([ovn-nbctl lrouter-add lr1])
-AT_CHECK([ovn-nbctl lrouter-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
+AT_CHECK([ovn-nbctl lr-add lr1])
+AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lr0)
<1> (lr1)
])
-AT_CHECK([ovn-nbctl lrouter-del lr0])
-AT_CHECK([ovn-nbctl lrouter-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
+AT_CHECK([ovn-nbctl lr-del lr0])
+AT_CHECK([ovn-nbctl lr-list | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<0> (lr1)
])
AT_CHECK([ovn-nbctl show lr0])
-AT_CHECK([ovn-nbctl lrouter-add lr0])
+AT_CHECK([ovn-nbctl lr-add lr0])
AT_CHECK([ovn-nbctl show lr0 | ${PERL} $srcdir/uuidfilt.pl], [0],
- [ lrouter <0> (lr0)
+ [ router <0> (lr0)
])
-AT_CHECK([ovn-nbctl lrouter-add lr0], [1], [],
- [ovn-nbctl: lr0: an lrouter with this name already exists
+AT_CHECK([ovn-nbctl lr-add lr0], [1], [],
+ [ovn-nbctl: lr0: a router with this name already exists
])
-AT_CHECK([ovn-nbctl --may-exist lrouter-add lr0])
+AT_CHECK([ovn-nbctl --may-exist lr-add lr0])
AT_CHECK([ovn-nbctl show lr0 | ${PERL} $srcdir/uuidfilt.pl], [0],
- [ lrouter <0> (lr0)
+ [ router <0> (lr0)
])
-AT_CHECK([ovn-nbctl --add-duplicate lrouter-add lr0])
-AT_CHECK([ovn-nbctl --may-exist --add-duplicate lrouter-add lr0], [1], [],
+AT_CHECK([ovn-nbctl --add-duplicate lr-add lr0])
+AT_CHECK([ovn-nbctl --may-exist --add-duplicate lr-add lr0], [1], [],
[ovn-nbctl: --may-exist and --add-duplicate may not be used together
])
-AT_CHECK([ovn-nbctl lrouter-del lr0], [1], [],
+AT_CHECK([ovn-nbctl lr-del lr0], [1], [],
[ovn-nbctl: Multiple logical routers named 'lr0'. Use a UUID.
])
-AT_CHECK([ovn-nbctl lrouter-del lr2], [1], [],
- [ovn-nbctl: lr2: lrouter name not found
+AT_CHECK([ovn-nbctl lr-del lr2], [1], [],
+ [ovn-nbctl: lr2: router name not found
])
-AT_CHECK([ovn-nbctl --if-exists lrouter-del lr2])
+AT_CHECK([ovn-nbctl --if-exists lr-del lr2])
-AT_CHECK([ovn-nbctl lrouter-add])
-AT_CHECK([ovn-nbctl lrouter-add])
-AT_CHECK([ovn-nbctl --add-duplicate lrouter-add], [1], [],
+AT_CHECK([ovn-nbctl lr-add])
+AT_CHECK([ovn-nbctl lr-add])
+AT_CHECK([ovn-nbctl --add-duplicate lr-add], [1], [],
[ovn-nbctl: --add-duplicate requires specifying a name
])
-AT_CHECK([ovn-nbctl --may-exist lrouter-add], [1], [],
+AT_CHECK([ovn-nbctl --may-exist lr-add], [1], [],
[ovn-nbctl: --may-exist requires specifying a name
])
@@ -295,7 +295,7 @@ dnl ---------------------------------------------------------------------
AT_SETUP([ovn-nbctl - basic lrport commands])
OVN_NBCTL_TEST_START
-AT_CHECK([ovn-nbctl lrouter-add lr0])
+AT_CHECK([ovn-nbctl lr-add lr0])
AT_CHECK([ovn-nbctl lrport-add lr0 lrp0])
AT_CHECK([ovn-nbctl lrport-add lr0 lrp0], [1], [],
[ovn-nbctl: lrp0: an lrport with this name already exists
@@ -311,12 +311,12 @@ AT_CHECK([ovn-nbctl lrport-list lr0 | ${PERL} $srcdir/uuidfilt.pl], [0], [dnl
<1> (lrp1)
])
-AT_CHECK([ovn-nbctl lrouter-add lr1])
+AT_CHECK([ovn-nbctl lr-add lr1])
AT_CHECK([ovn-nbctl lrport-add lr0 lrp1], [1], [],
[ovn-nbctl: lrp1: an lrport with this name already exists
])
AT_CHECK([ovn-nbctl --may-exist lrport-add lr1 lrp1], [1], [],
- [ovn-nbctl: lrp1: lrport already exists but in lrouter lr0
+ [ovn-nbctl: lrp1: lrport already exists but in router lr0
])
AT_CHECK([ovn-nbctl lrport-del lrp1])
@@ -332,7 +332,7 @@ dnl ---------------------------------------------------------------------
AT_SETUP([ovn-nbctl - lrport addresses])
OVN_NBCTL_TEST_START
-AT_CHECK([ovn-nbctl lrouter-add lr0])
+AT_CHECK([ovn-nbctl lr-add lr0])
AT_CHECK([ovn-nbctl lrport-add lr0 lrp0])
AT_CHECK([ovn-nbctl lrport-get-mac-address lrp0], [0], [
])
@@ -353,7 +353,7 @@ dnl ---------------------------------------------------------------------
AT_SETUP([ovn-nbctl - lrport enable and disable])
OVN_NBCTL_TEST_START
-AT_CHECK([ovn-nbctl lrouter-add lr0])
+AT_CHECK([ovn-nbctl lr-add lr0])
AT_CHECK([ovn-nbctl lrport-add lr0 lrp0])
AT_CHECK([ovn-nbctl lrport-get-enabled lrp0], [0], [enabled
])
@@ -1263,7 +1263,7 @@ for i in 1 2 3; do
done
done
-ovn-nbctl create Logical_Router name=lr0
+ovn-nbctl lr-add lr0
for i in 1 2 3; do
for j in 1 2 3; do
lrp_uuid=`ovn-nbctl \
@@ -2077,8 +2077,8 @@ ovn_start
# network. R1 has a switchs ls1 (191.168.1.0/24) connected to it.
# R2 has ls2 (172.16.1.0/24) connected to it.
-ovn-nbctl create Logical_Router name=R1
-ovn-nbctl create Logical_Router name=R2
+ovn-nbctl lr-add R1
+ovn-nbctl lr-add R2
ovn-nbctl lswitch-add ls1
ovn-nbctl lswitch-add ls2
@@ -2234,7 +2234,7 @@ ovn_start
# One LR - R1 has switch ls1 (191.168.1.0/24) connected to it,
# and has switch ls2 (172.16.1.0/24) connected to it.
-ovn-nbctl create Logical_Router name=R1
+ovn-nbctl lr-add R1
ovn-nbctl lswitch-add ls1
ovn-nbctl lswitch-add ls2
@@ -2377,8 +2377,8 @@ ovn_start
# connected to it.
# R2 has alice (172.16.1.0/24) and bob (172.16.2.0/24) connected to it.
-ovn-nbctl create Logical_Router name=R1
-ovn-nbctl create Logical_Router name=R2
+ovn-nbctl lr-add R1
+ovn-nbctl lr-add R2
ovn-nbctl lswitch-add foo
ovn-nbctl lswitch-add alice
@@ -2645,9 +2645,9 @@ ovn_start
# connected to it. R2 has alice (172.16.1.0/24) and R3 has bob (10.32.1.0/24)
# connected to it.
-ovn-nbctl create Logical_Router name=R1
-ovn-nbctl create Logical_Router name=R2
-ovn-nbctl create Logical_Router name=R3
+ovn-nbctl lr-add R1
+ovn-nbctl lr-add R2
+ovn-nbctl lr-add R3
ovn-nbctl lswitch-add foo
ovn-nbctl lswitch-add alice
@@ -3064,7 +3064,7 @@ ovn_start
# One LR - R1 has switch ls1 (191.168.1.0/24) connected to it,
# and has switch ls2 (172.16.1.0/24) connected to it.
-ovn-nbctl create Logical_Router name=R1
+ovn-nbctl lr-add R1
ovn-nbctl lswitch-add ls1
ovn-nbctl lswitch-add ls2
A few minor changes related to router commands: - Use "lr" instead of "lrouter" to be more consistent with later changes. - Use the commands where possible in ovn unit tests. - Move documentation to group router commands together. - Update references from "lrouter" to "router". Signed-off-by: Justin Pettit <jpettit@ovn.org> --- ovn/utilities/ovn-nbctl.8.xml | 94 +++++++------ ovn/utilities/ovn-nbctl.c | 318 +++++++++++++++++++++--------------------- tests/ovn-nbctl.at | 56 ++++---- tests/ovn.at | 20 +-- 4 files changed, 248 insertions(+), 240 deletions(-)