#include <errno.h>
#include <inttypes.h>
#include <stdlib.h>
+#include "bfd.h"
#include "bitmap.h"
#include "bond.h"
#include "cfm.h"
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_cfm_remote_mpids);
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_cfm_health);
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_cfm_remote_opstate);
+ ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_bfd_status);
ovsdb_idl_omit_alert(idl, &ovsrec_interface_col_lacp_current);
ovsdb_idl_omit(idl, &ovsrec_interface_col_external_ids);
iface_configure_cfm(iface);
iface_configure_qos(iface, port->cfg->qos);
iface_set_mac(iface);
+ ofproto_port_set_bfd(br->ofproto, iface->ofp_port,
+ &iface->cfg->bfd);
}
}
bridge_configure_mirrors(br);
{
const struct ovsrec_interface *iface_cfg = if_cfg->cfg;
const struct ovsrec_port *port_cfg = if_cfg->parent;
- struct netdev *netdev;
+ struct netdev *netdev = NULL;
int error;
+ if (netdev_is_reserved_name(iface_cfg->name)) {
+ VLOG_WARN("could not create interface %s, name is reserved",
+ iface_cfg->name);
+ error = EINVAL;
+ goto error;
+ }
+
error = netdev_open(iface_cfg->name,
iface_get_type(iface_cfg, br->cfg), &netdev);
if (error) {
if ((port_cfg->vlan_mode && !strcmp(port_cfg->vlan_mode, "splinter"))
|| iface_is_internal(iface_cfg, br->cfg)) {
- netdev_turn_flags_on(netdev, NETDEV_UP, true);
+ netdev_turn_flags_on(netdev, NETDEV_UP, NULL);
}
*netdevp = netdev;
HMAP_FOR_EACH (iface, name_node, &br->iface_by_name) {
enum netdev_flags flags;
+ struct smap smap;
const char *link_state;
int64_t link_resets;
int current, error;
ovsrec_interface_set_link_resets(iface->cfg, &link_resets, 1);
iface_refresh_cfm_stats(iface);
+
+ smap_init(&smap);
+ if (!ofproto_port_get_bfd_status(br->ofproto, iface->ofp_port,
+ &smap)) {
+ ovsrec_interface_set_bfd_status(iface->cfg, &smap);
+ smap_destroy(&smap);
+ }
}
}
}
/* Bring up the local interface. */
netdev = local_iface->netdev;
- netdev_turn_flags_on(netdev, NETDEV_UP, true);
+ netdev_turn_flags_on(netdev, NETDEV_UP, NULL);
/* Configure the IP address and netmask. */
if (!c->local_netmask