Thanks, merged to master and branch-1.11
On Mon, Jun 3, 2013 at 2:34 PM, Justin Pettit <[email protected]> wrote: > Looks good. > > --Justin > > > On Jun 3, 2013, at 1:51 PM, Ethan Jackson <[email protected]> wrote: > >> If ofproto decided to change the netdev of a particular ofport, >> cfm_demand mode would improperly continue using the old netdev to >> collect stats. >> >> Bug #17583. >> Signed-off-by: Ethan Jackson <[email protected]> >> --- >> lib/cfm.c | 10 ++++++++++ >> lib/cfm.h | 1 + >> ofproto/ofproto-dpif.c | 4 ++++ >> 3 files changed, 15 insertions(+) >> >> diff --git a/lib/cfm.c b/lib/cfm.c >> index d16e2dd..4d4ebcb 100644 >> --- a/lib/cfm.c >> +++ b/lib/cfm.c >> @@ -567,6 +567,16 @@ cfm_configure(struct cfm *cfm, const struct >> cfm_settings *s) >> return true; >> } >> >> +/* Must be called when the netdev owned by 'cfm' should change. */ >> +void >> +cfm_set_netdev(struct cfm *cfm, const struct netdev *netdev) >> +{ >> + if (cfm->netdev != netdev) { >> + netdev_close(cfm->netdev); >> + cfm->netdev = netdev_ref(netdev); >> + } >> +} >> + >> /* Returns true if 'cfm' should process packets from 'flow'. */ >> bool >> cfm_should_process_flow(const struct cfm *cfm, const struct flow *flow) >> diff --git a/lib/cfm.h b/lib/cfm.h >> index eec9704..057da04 100644 >> --- a/lib/cfm.h >> +++ b/lib/cfm.h >> @@ -71,6 +71,7 @@ bool cfm_should_send_ccm(struct cfm *); >> void cfm_compose_ccm(struct cfm *, struct ofpbuf *packet, uint8_t >> eth_src[6]); >> void cfm_wait(struct cfm *); >> bool cfm_configure(struct cfm *, const struct cfm_settings *); >> +void cfm_set_netdev(struct cfm *, const struct netdev *); >> bool cfm_should_process_flow(const struct cfm *cfm, const struct flow *); >> void cfm_process_heartbeat(struct cfm *, const struct ofpbuf *packet); >> int cfm_get_fault(const struct cfm *); >> diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c >> index 7c3abec..13e2aad 100644 >> --- a/ofproto/ofproto-dpif.c >> +++ b/ofproto/ofproto-dpif.c >> @@ -1904,6 +1904,10 @@ port_modified(struct ofport *port_) >> if (port->bundle && port->bundle->bond) { >> bond_slave_set_netdev(port->bundle->bond, port, port->up.netdev); >> } >> + >> + if (port->cfm) { >> + cfm_set_netdev(port->cfm, port->up.netdev); >> + } >> } >> >> static void >> -- >> 1.7.9.5 >> >> _______________________________________________ >> dev mailing list >> [email protected] >> http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
