Subject: Mail Delivery Subsystem: Returned mail: User unknown
To: None <netbsd-bugs@NetBSD.ORG>
From: Peter Berger <peterb@hoopoe.psc.edu>
List: netbsd-bugs
Date: 04/16/1996 08:22:23
------- Forwarded Message
Date: Tue, 16 Apr 1996 08:20:27 -0400 (EDT)
From: Mail Delivery Subsystem <MAILER-DAEMON>
Subject: Returned mail: User unknown
Message-Id: <199604161220.IAA05535@hoopoe.psc.edu>
To: <peterb@hoopoe.psc.edu>
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="IAA05535.829657227/hoopoe.psc.edu"
Auto-Submitted: auto-generated (failure)
This is a MIME-encapsulated message
- --IAA05535.829657227/hoopoe.psc.edu
The original message was received at Tue, 16 Apr 1996 08:19:20 -0400 (EDT)
from peterb@LOCALHOST [127.0.0.1]
----- The following addresses have delivery notifications -----
<netbsd-bug@netbsd.org> (unrecoverable error)
----- Transcript of session follows -----
... while talking to pain.lcs.mit.edu.:
>>> RCPT To:<netbsd-bug@netbsd.org>
<<< 550 <netbsd-bug@netbsd.org>... User unknown
550 <netbsd-bug@netbsd.org>... User unknown
- --IAA05535.829657227/hoopoe.psc.edu
Content-Type: message/delivery-status
Reporting-MTA: dns; hoopoe.psc.edu
Received-From-MTA: dns; LOCALHOST
Arrival-Date: Tue, 16 Apr 1996 08:19:20 -0400 (EDT)
Final-Recipient: rfc822; netbsd-bug@netbsd.org
Action: failed
Status: 5.2.0
Remote-MTA: dns; pain.lcs.mit.edu
Diagnostic-Code: smtp; 550 <netbsd-bug@netbsd.org>... User unknown
Last-Attempt-Date: Tue, 16 Apr 1996 08:19:55 -0400 (EDT)
- --IAA05535.829657227/hoopoe.psc.edu
Content-Type: message/rfc822
Message-Id: <199604161219.IAA05533@hoopoe.psc.edu>
To: netbsd-bug@netbsd.org
Cc: freebsd-hackers@freebsd.org
Subject: NetBSD Kernel not RFC compliant.
Reply-To: peterb@psc.edu
Date: Tue, 16 Apr 1996 08:19:20 -0400
From: Peter Berger <peterb@hoopoe.psc.edu>
Actually, this is a bug in 4.4 BSD; BSDi has the same problem. I
would guess that it affects FreeBSD also.
I originally thought this was a bug in ISODE, but they point the
finger at the kernel, and looking at the code (for example in
net/if_ethersubr.c, among others,) I see that they are right --
if_lastchange is given the value of "time" as each packet comes in (or
goes out!), which is just wrong, as the mere arrival or sending of a
packet shouldn't count as a state change for purposes of this
variable.
We encountered this non-compliance when setting up automated
monitoring of our network.
I look forward to this being fixed in the next release!
Peter
> > Dear ISODE folks:
> >
> > Unless I am mistaken, the Isode-8.0 snmpd does not properly handle the
> > ifLastChange variable.
> >
> > Regarding the ifLastChange variable, RFC 1156 says:
> >
> > OBJECT:
> > -------
> > ifLastChange { ifEntry 9 }
> >
> > Syntax:
> > TimeTicks
> >
> > Definition:
> > The value of sysUpTime at the time the interface entered
> > its current operational state. If the current state was
> > entered prior to the last re-initialization of the local
> > network management subsystem, then this object contains a
> > zero value.
> >
> > Access:
> > read-only.
> >
> > Status:
> > mandatory.
> >
> > As you can see, the RFC calls for the variable to contain the value of
> > sysUpTime, in timeticks, -at the time the interface became
> > operational-. Currently, the ISODE-8.0 snmpd seems to assign this
> > variable the number of timeticks SINCE the interface became
> > operational. Although the difference is subtle, this has an extremely
> > negative effect on SNMP monitors which depend on the value of
> > ifLastChange being RFC-compliant in order to perform traffic analysis
> > or decide when to clear their counters.
> >
> > If there has been an update to RFC 1156 that changes this requirement,
> > or a patch to ISODE that fixes this problem, I would be very glad to
> > know about it.
> >
> > Thanks very much,
> >
> > Pete Berger
> > Coordinator, Regional Information Infrastructure
> > Pittsburgh Supercomputing Center
>
> Thank you for this report.
>
> I don't have ISODE 8.0 sources available (it is very old now).
>
> The current IC release has the following code for ifLastChange, in
> interfaces.c:
>
> #ifdef ifLastChange
> case ifLastChange:
> if ((diff = (ifn -> if_lastchange.tv_sec - my_boottime.tv_sec)
> * 100
> + ((ifn -> if_lastchange.tv_usec -
> my_boottime.tv_usec)
> / 10000))
> < 0)
> diff = 0;
> return o_number (oi, v, (caddr_t) &diff);
> #endif
>
> This code is only included if ifLastChange is defined, and it is only defined
> if BSD44 is defined. As the Reference Platform (SunOS 5) is not compatible
> with this, our reference platform does not have this feature.
>
> I also note that the if_lastchange time is not set anywhere in the snmp code.
> It must therefore be provided by the system code. not having a BSD44 system.
> I don't know what the semantics of if_lastchange are, i.e. what time it
> returns,
> but if the result of this operation does give the difference between the
> interface's 'lastchange' time and the 'my_boottime', which seems to fit the
> definition you give from the RFC. I.e. the code just reports back from the
> interface the difference between this timer and the boot time. If this timer
> is not what you expect, this is not a result of the snmp code.
>
> regards
>
- --IAA05535.829657227/hoopoe.psc.edu--
------- End of Forwarded Message