[ovs-dev] [PATCH] cfm: Update netdev when changed.

Ethan Jackson ethan at nicira.com
Mon Jun 3 21:38:36 UTC 2013


Thanks, merged to master and branch-1.11


On Mon, Jun 3, 2013 at 2:34 PM, Justin Pettit <jpettit at nicira.com> wrote:
> Looks good.
>
> --Justin
>
>
> On Jun 3, 2013, at 1:51 PM, Ethan Jackson <ethan at nicira.com> 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 <ethan at nicira.com>
>> ---
>> 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
>> dev at openvswitch.org
>> http://openvswitch.org/mailman/listinfo/dev
>



More information about the dev mailing list