[ovs-dev] [PATCH] BFD: Reconfigure BFD on port deletion.

Pavithra Ramesh paramesh at vmware.com
Tue May 28 19:35:06 UTC 2013


Invoke the function to reconfigure BFD when a port/interface
is deleted.

Signed-off-by: Pavithra Ramesh <paramesh at vmware.com>
---
 lib/bfd.c              |    5 +++--
 ofproto/ofproto-dpif.c |    2 ++
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/bfd.c b/lib/bfd.c
index 95dad2d..761c91c 100644
--- a/lib/bfd.c
+++ b/lib/bfd.c
@@ -229,7 +229,8 @@ bfd_get_status(const struct bfd *bfd, struct smap *smap)
 /* Initializes, destroys, or reconfigures the BFD session 'bfd' (named 'name'),
  * according to the database configuration contained in 'cfg'.  Takes ownership
  * of 'bfd', which may be NULL.  Returns a BFD object which may be used as a
- * handle for the session, or NULL if BFD is not enabled according to 'cfg'. */
+ * handle for the session, or NULL if BFD is not enabled according to 'cfg'.
+ * Also returns NULL if cfg is NULL. */
 struct bfd *
 bfd_configure(struct bfd *bfd, const char *name,
               const struct smap *cfg)
@@ -246,7 +247,7 @@ bfd_configure(struct bfd *bfd, const char *name,
         init = true;
     }
 
-    if (!smap_get_bool(cfg, "enable", false)) {
+    if (!cfg || !smap_get_bool(cfg, "enable", false)) {
         if (bfd) {
             hmap_remove(&all_bfds, &bfd->node);
             free(bfd->name);
diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index c4f7d25..6eaa348 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -606,6 +606,7 @@ ofport_dpif_cast(const struct ofport *ofport)
 static void port_run(struct ofport_dpif *);
 static void port_run_fast(struct ofport_dpif *);
 static void port_wait(struct ofport_dpif *);
+static int set_bfd(struct ofport *, const struct smap *);
 static int set_cfm(struct ofport *, const struct cfm_settings *);
 static void ofport_clear_priorities(struct ofport_dpif *);
 static void run_fast_rl(void);
@@ -1869,6 +1870,7 @@ port_destruct(struct ofport *port_)
     ofproto->backer->need_revalidate = REV_RECONFIGURE;
     bundle_remove(port_);
     set_cfm(port_, NULL);
+    set_bfd(port_, NULL);
     if (ofproto->sflow) {
         dpif_sflow_del_port(ofproto->sflow, port->odp_port);
     }
-- 
1.7.0.4




More information about the dev mailing list