Hi Ethan, On 09/06/2011 10:32 PM, Ethan Jackson wrote: > Before this patch, ofproto-dpif would not forward any LACP or CFM > packets regardless of whether or not the relevant modules were > configured on the in_port. > > Feature #6316. > --- > ofproto/ofproto-dpif.c | 19 ++++++++++++------- > 1 files changed, 12 insertions(+), 7 deletions(-) > > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c > index 478768f..4253202 100644 > --- a/ofproto/ofproto-dpif.c > +++ b/ofproto/ofproto-dpif.c > @@ -1614,16 +1614,21 @@ static bool > process_special(struct ofproto_dpif *ofproto, const struct flow *flow, > const struct ofpbuf *packet) > { > - if (cfm_should_process_flow(flow)) { > - struct ofport_dpif *ofport = get_ofp_port(ofproto, flow->in_port); > - if (packet && ofport && ofport->cfm) { > + struct ofport_dpif *ofport = get_ofp_port(ofproto, flow->in_port); > + > + if (!ofport) { > + return false; > + } > + > + if (ofport->cfm && cfm_should_process_flow(flow)) { > + if (packet) { > cfm_process_heartbeat(ofport->cfm, packet); > } > return true; > - } else if (flow->dl_type == htons(ETH_TYPE_LACP)) { > - struct ofport_dpif *port = get_ofp_port(ofproto, flow->in_port); > - if (packet && port && port->bundle && port->bundle->lacp) { > - lacp_process_packet(port->bundle->lacp, port, packet); > + } else if (ofport && ofport->bundle && ofport->bundle->lacp > + && flow->dl_type == htons(ETH_TYPE_LACP)) { > + if (packet) { > + lacp_process_packet(ofport->bundle->lacp, ofport, packet); > } > return true; > }
You already checked that 'ofport' is valid above, so you don't need to check it again in this 'else' case before de-referencing it, right? -Brian _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev