[ovs-discuss] [PATCH] ofproto/ofproto-dpif.c don't forward ofp_port == ctx->flow.in_port

Aaron Rosen arosen at clemson.edu
Wed Feb 8 01:53:31 UTC 2012


Or it might be better to just reject this packet?

Aaron

On Tue, Feb 7, 2012 at 8:22 PM, Aaron Rosen <arosen at clemson.edu> wrote:
> Hello,
>
> This patch corrects the behavior when an OFPAT_PACKET_OUT is received
> and the in_port is in the output action list. In these cases packets
> should not be sent to the corresponding output if it matches the
> in_port (i.e just like in the case with action=OFPP_FLOOD, the packet
> is not also sent to in_port).
>
> Example:
>  OFPT_PACKET_OUT (xid=0x0): in_port=LOCAL actions_len=16
> actions=output:1,LOCAL data_len=60
>
> This packet is output to ports 1 and LOCAL,but should just output to port 1.
>
> Thanks,
>
> Aaron
>
> Signed-off-by: Aaron Rosen <arosen at clemson.edu>
> ---
>  ofproto/ofproto-dpif.c |    5 +++++
>  1 files changed, 5 insertions(+), 0 deletions(-)
>
> diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
> index 28f0434..2fe7a8a 100644
> --- a/ofproto/ofproto-dpif.c
> +++ b/ofproto/ofproto-dpif.c
> @@ -4304,6 +4304,11 @@ compose_output_action__(struct action_xlate_ctx
> *ctx, uint16_t ofp_port,
>     uint8_t flow_nw_tos = ctx->flow.nw_tos;
>     uint16_t out_port;
>
> +    /* If ofp_port equals in_port packet should not be forwarded.
> +     * Only output to OFPP_IN_PORT should output to the in_port. */
> +    if(ofp_port == ctx->flow.in_port) {
> +        return;
> +    }
>     if (ofport) {
>         struct priority_to_dscp *pdscp;
>
> --
> 1.7.3.4
>
>
>
> --
> Aaron O. Rosen
> Masters Student - Network Communication
> 306B Fluor Daniel



-- 
Aaron O. Rosen
Masters Student - Network Communication
306B Fluor Daniel



More information about the discuss mailing list