[ovs-dev] [add-remove 3/7] vswitchd: Create all interfaces at the same time.
Ben Pfaff
blp at nicira.com
Tue Sep 28 11:58:37 PDT 2010
It seems inconsistent to create some early, some late. I hope that
this helps to clarify what is happening.
---
vswitchd/bridge.c | 28 +++++++++++-----------------
1 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 622a9fe..357cc2f 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -683,12 +683,21 @@ bridge_reconfigure(const struct ovsrec_open_vswitch *ovs_cfg)
reconfigure_iface_netdev(iface);
}
} else {
- /* Need to add to datapath. */
bool internal;
int error;
- /* Add to datapath. */
+ /* Create interface if it doesn't already exist. */
internal = iface_is_internal(br, if_name);
+ if (!internal) {
+ error = create_iface_netdev(iface);
+ if (error) {
+ VLOG_WARN("could not create iface %s: %s", iface->name,
+ strerror(error));
+ }
+ continue;
+ }
+
+ /* Add to datapath. */
error = dpif_port_add(br->dpif, if_name,
internal ? ODP_PORT_INTERNAL : 0, NULL);
if (error == EFBIG) {
@@ -3691,7 +3700,6 @@ iface_create(struct port *port, const struct ovsrec_interface *if_cfg)
struct bridge *br = port->bridge;
struct iface *iface;
char *name = if_cfg->name;
- int error;
iface = xzalloc(sizeof *iface);
iface->port = port;
@@ -3705,20 +3713,6 @@ iface_create(struct port *port, const struct ovsrec_interface *if_cfg)
shash_add_assert(&br->iface_by_name, iface->name, iface);
- /* Attempt to create the network interface in case it doesn't exist yet. */
- if (!iface_is_internal(br, iface->name)) {
- error = create_iface_netdev(iface);
- if (error) {
- VLOG_WARN("could not create iface %s: %s", iface->name,
- strerror(error));
-
- shash_find_and_delete_assert(&br->iface_by_name, iface->name);
- free(iface->name);
- free(iface);
- return NULL;
- }
- }
-
if (port->n_ifaces >= port->allocated_ifaces) {
port->ifaces = x2nrealloc(port->ifaces, &port->allocated_ifaces,
sizeof *port->ifaces);
--
1.7.1
More information about the dev
mailing list