HEADSUP: arp-v2 has been committed
Tijl Coosemans
tijl at ulyssis.org
Sun Dec 28 15:13:52 UTC 2008
On Saturday 27 December 2008 21:21:25 Qing Li wrote:
> Right now I am also a bit leaning towards reintroducing
> the RTF_LLINFO flag bit. This is mainly due to the recent
> discovery of the "route" command issued with the
> "-iface/-interface" option, which conflicts with the
> way how "arp" and "ndp" is handled in the kernel.
>
> I renamed this flag bit to RTF_LLDATA because only the
> "arp" and "ndp" commands need it.
I wouldn't rename it. That breaks old code just the same.
>> I didn't want to speak up because I'm no authority in this
>> area and in the end I'm OK with any outcome, but personnaly I
>> find special-casing {NET_RT_FLAGS,0} to retrieve the L2
>> entries a bit odd.
>
> As I've indicated previously, a few ports already have the
> #ifdef RTF_LLINFO block around the sysctl() setup code.
> Perhaps it's because these ports (such as Wine) run on OS
> that does not support RTF_LLINFO (e.g. Linux?) ?
That's odd, because a quick google shows that for instance NetBSD,
OpenBSD, DragonFly and Mac OS X all define this flag.
Linux is completely different. It doens't use sysctl(3). You have to
read /proc/net/arp and /proc/net/route.
>> Surely, letting {NET_RT_FLAGS,RTF_LLINFO}
>> return L2 entries is exactly the same to implement, is far
>> more descriptive, is fully backwards compatible and
>> compatible with other sysctl operating systems like the other
>> BSDs and Mac OS X, which helps portability.
>
> I believe all of the affected ports have been updated to
> include the conditional blocks around RTF_LLINFO. So
> there is still a level of compatibility, right ?
Yes, and I'm OK with this. It's just that this makes FreeBSD 8
a special case.
>> AFAIK, the other use of RTF_LLINFO was to filter out L2
>> entries from the entire L2+L3 routing table to obtain just
>> the L3 entries. Because the L2 and L3 table have been
>> separated this filtering isn't needed anymore, but what harm
>> would it do to reintroduce RTF_LLINFO? The filtering code
>> would become a useless no-op, but you'd stay fully
>> compatible, again both backwards and with other operating systems.
>>
>> I just think that removing RTF_LLINFO was a bit too
>> aggressive an optimisation with little advantage and too many
>> disadvantages and I'd like to see it return.
>
> I believe examining the impacts of RTF_LLINFO on the ports
> was a good exercise even if we have to rejuvenate it.
>
> I hope we could reach a consensus soon now that we have more
> input from the ports developers.
>
> Please provide your input ...
If it's easy to reintroduce it and become backwards compatible I
would do it. Like Julian said, you can give it the value 0. It
would be nice if the kernel tested for the old value as well,
perhaps behind an #ifdef COMPAT_FREEBSD*. That way when people
upgrade to FreeBSD 8 all their ports compiled under FreeBSD 7
keep working.
More information about the freebsd-current
mailing list