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
[email protected]
http://openvswitch.org/mailman/listinfo/dev