Subject: Re: [PATCH] Disable rp_filter for IPsec packets

From: Michael Smith <[email-masked]>
Date: Mon, 14 Mar 2011 18:11:24 -0400

David Miller wrote:
>> What would be a less costly way to pass it? Could I just hand it the
>> whole skb?
> 
> I don't see how passing a pointer is better than passing an interger.
> In both cases you're adding an extra argument to the function.

Yeah, I was thinking an sk_buff could replace the mark parameter, 
possibly dev, maybe saddr, daddr, and tos too. On the other hand I can't 
think of anything less onerous than an extra stack argument - unless 
fib_validate_source() didn't exist at all.

> I was trying to get you to think out of the box and come up with
> something clever, but that isn't working. :-)

Yes, I got that, but I don't know what you are looking for, and don't 
expect to succeed by trying something else at random.

> In short, fib_validate_source() is nothing but completely unnecessary
> overhead in the common case.

I'm not entitled to an opinion about fib_validate_source(). It feels 
like it might be trying to do one too many things. If it were my code I 
might split the RPF out from the spec_dst calculation, move the whole 
lot into net/ipv4/route.c, and only do the fib_lookup() if RPF is 
enabled or CONFIG_IP_ROUTE_CLASSID (i.e. we need to know the itag).

If that makes sense I'll give it a shot, but beware, I don't even know 
what an itag is, and I don't see documentation for CONFIG_IP_ROUTE_CLASSID.

Thanks,
Mike