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
prev parent 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