Skip to content

Commit

Permalink
vswitchd: Factor code to configure netdevs out of iface_create().
Browse files Browse the repository at this point in the history
An upcoming patch will need the same code in another function.

Signed-off-by: Ben Pfaff <[email protected]>
  • Loading branch information
blp committed Apr 25, 2012
1 parent b54441b commit 2a485ee
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions vswitchd/bridge.c
Original file line number Diff line number Diff line change
Expand Up @@ -1144,6 +1144,29 @@ iface_set_ofp_port(struct iface *iface, int ofp_port)
iface_set_ofport(iface->cfg, ofp_port);
}

/* Configures 'netdev' based on the "options" column in 'iface_cfg'.
* Returns 0 if successful, otherwise a positive errno value. */
static int
iface_set_netdev_config(const struct ovsrec_interface *iface_cfg,
struct netdev *netdev)
{
struct shash args;
int error;

shash_init(&args);
shash_from_ovs_idl_map(iface_cfg->key_options,
iface_cfg->value_options,
iface_cfg->n_options, &args);
error = netdev_set_config(netdev, &args);
shash_destroy(&args);

if (error) {
VLOG_WARN("could not configure network device %s (%s)",
iface_cfg->name, strerror(error));
}
return error;
}

static void
bridge_ofproto_port_del(struct bridge *br, struct ofproto_port ofproto_port)
{
Expand Down Expand Up @@ -1279,18 +1302,8 @@ iface_create(struct bridge *br, struct if_cfg *if_cfg, int ofp_port)

/* Configure the netdev. */
if (iface->netdev) {
struct shash args;

shash_init(&args);
shash_from_ovs_idl_map(iface->cfg->key_options,
iface->cfg->value_options,
iface->cfg->n_options, &args);
error = netdev_set_config(iface->netdev, &args);
shash_destroy(&args);

int error = iface_set_netdev_config(iface->cfg, iface->netdev);
if (error) {
VLOG_WARN("could not configure network device %s (%s)",
iface->name, strerror(error));
netdev_close(iface->netdev);
iface->netdev = NULL;
}
Expand Down

0 comments on commit 2a485ee

Please sign in to comment.