Netdev List
 help / color / mirror / Atom feed
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
To: Kamala R <kamala@aristanetworks.com>
Cc: netdev@vger.kernel.org, David Miller <davem@davemloft.net>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/1] IPv6: Fixed support for blackhole and prohibit routes
Date: Wed, 20 Nov 2013 05:57:26 +0100	[thread overview]
Message-ID: <20131120045726.GT16541@order.stressinduktion.org> (raw)
In-Reply-To: <1384879773-8800-1-git-send-email-kamala@aristanetwors.com>

On Tue, Nov 19, 2013 at 10:19:33PM +0530, Kamala R wrote:
> From: Kamala R <kamala@aristanetworks.com>
> 
> The behaviour of blackhole and prohibit routes has been corrected by setting the input and output
> function pointers of the dst variable appropriately. For blackhole routes, they are set to
> dst_discard and for prohibit routes they are set to ip6_pkt_prohibit and ip6_pkt_prohbit_out
> respectively.
> 
> Signed-off-by: Kamala R <kamala@aristanetworks.com>
> ---
>  net/ipv6/route.c |   18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/net/ipv6/route.c b/net/ipv6/route.c
> index f54e3a1..f2289fd 100644
> --- a/net/ipv6/route.c
> +++ b/net/ipv6/route.c
> @@ -1564,21 +1564,25 @@ int ip6_route_add(struct fib6_config *cfg)
>  				goto out;
>  			}
>  		}
> -		rt->dst.output = ip6_pkt_discard_out;
> -		rt->dst.input = ip6_pkt_discard;
> +
>  		rt->rt6i_flags = RTF_REJECT|RTF_NONEXTHOP;
> +		rt->dst.error = (cfg->fc_type == RTN_BLACKHOLE) ? -EINVAL
> +				: ((cfg->fc_type == RTN_PROHIBIT ? -EACCES
> +				: ((cfg->fc_type == RTN_THROW ? -EAGAIN
> +				: -ENETUNREACH))));

Uh, sorry, I was a bit too unclear. This is rather ugly. I meant merging
the RTN_THROW and default case and just use one dst.error assignment
with a ternary operator where it makes sense.

>  		switch (cfg->fc_type) {
>  		case RTN_BLACKHOLE:
> -			rt->dst.error = -EINVAL;
> +			rt->dst.output = dst_discard;
> +			rt->dst.input = dst_discard;
>  			break;
>  		case RTN_PROHIBIT:
> -			rt->dst.error = -EACCES;
> +			rt->dst.output = ip6_pkt_prohibit_out;
> +			rt->dst.input = ip6_pkt_prohibit;
>  			break;
>  		case RTN_THROW:
> -			rt->dst.error = -EAGAIN;
> -			break;
>  		default:
> -			rt->dst.error = -ENETUNREACH;
> +			rt->dst.output = ip6_pkt_discard_out;
> +			rt->dst.input = ip6_pkt_discard;
>  			break;

case RTN_THROW:
default:
	rt->dst.error = (cfg->fc_type == ...) ? ... : ...;
	rt->dst.output = ....
	rt->dst.input = ....

I also don't mind if you are more verbose and specify each case
independent. Just have a look how it looks more pleasing. ;)

Greetings,

  Hannes

      reply	other threads:[~2013-11-20  4:57 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-19 16:49 [PATCH 1/1] IPv6: Fixed support for blackhole and prohibit routes Kamala R
2013-11-20  4:57 ` Hannes Frederic Sowa [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131120045726.GT16541@order.stressinduktion.org \
    --to=hannes@stressinduktion.org \
    --cc=davem@davemloft.net \
    --cc=kamala@aristanetworks.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox