On 12 September 2013 19:07, Reyk Floeter <r...@openbsd.org> wrote:
> On Thu, Sep 12, 2013 at 06:59:13PM +0200, Mike Belopuhov wrote:
>> > Ok, let's stop this.  I don't think you read what I replied before.  I
>> > didn't say that we're static with if_indexes, just that we shouldn't
>> > make it worse.
>> >
>>
>> or implement persistent indices in the snmpd itself maybe?
>>
>
> Maybe.  But this would create another layer of abstraction.  And
> if_index is not just used by SNMP.
>
>> > I give up, but please read my next comment below.
>> >
>> >> >> > Isn't there any other way to do what you want without stopping to
>> >> >> > reuse the index?  SNMP simply expects that if_indexes are fairly
>> >> >> > static, linear, and without holes.  Why should we change that in
>> >> >> > OpenBSD?  Is there any security reason to "randomize" the indexes -
>> >> >> > No.
>> >> >>
>> >> >> or snmp can simply stop assuming things.  if_index wasn't created
>> >> >> for snmp in the first place.
>> >
>> > Actually, I think this assumption is wrong.  I researched a little bit
>> > in BSD history:
>> >
>> > - RFC 1066 from August 1988 is one of the early SNMP RFC that mention 
>> > IfIndex
>> >
>> > - 4.3BSD-Tahoe from June 1988 doesn't have if_index, I also didn't find
>> >   in other early BSDs.
>> >
>> > - 4.3BSD-Reno from June 1990 does have it.  You can even find a
>> >   new comment "/*  XXX fast fix for SNMP, going away soon */" on top of 
>> > if.h.
>> >
>> > So it seems that if_index was added _for_ SNMP.
>> >
>>
>> i believe this comment refers to the inclusion of sys/time.h.
>>
>
> Yes, I know.  But see:
>
>         1. 1988-06:     4.3BSD-Tahoe without if_index
>         2. 1988-08:     SNMP
>         3. 1990-06:     4.3BSD-Reno with if_index, mentioning SNMP in if.h.
>
> I don't have the commit history, but this might indicate that there
> was some work to support SNMP and many new fields in struct ifnet have
> been added for SNMP.
>
> http://minnie.tuhs.org/cgi-bin/utree.pl?file1=4.3BSD-Reno/src/sys/net/if.h&file2=4.3BSD-Tahoe/usr/src/sys/net/if.h&print=1
>
> reyk

either way, we need to move forward on this.  we want to use if_index
for the purpose of looking up the interface w/o a pointer to the ifnet.
should we implement additional indices for that or snmp problem will
be dealt with?  currently if you reuse an index and reuse the memory
for the ifnet you may suddenly pick a new interface and perform an
operation on it that might not necessarily make sense in the context.

Reply via email to