summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbrooks <brooks@FreeBSD.org>2005-02-25 19:46:41 +0000
committerbrooks <brooks@FreeBSD.org>2005-02-25 19:46:41 +0000
commite5a9c072c1563b17574a8123220f8773afeedcee (patch)
tree5895b9b8e3331ee9dc052b57c4b96c4d23adc658
parentb3f1395f0dd0fa285d4af6993d6562c37844fb6f (diff)
downloadFreeBSD-src-e5a9c072c1563b17574a8123220f8773afeedcee.zip
FreeBSD-src-e5a9c072c1563b17574a8123220f8773afeedcee.tar.gz
Change the definition of struct if_data's member ifi_epoch from wall
clock time to uptime because wall clock time may go backwards. This is a change in the API which will impact SNMP agents who are using ifi_epoch to set RFC2233's ifCounterDiscontinuityTime. None are know to exist today. This will not impact applications that are using the <index, epoch> tuple to verify interface uniqueness except that it eliminates a race which could lead to a false assumption of uniqueness. Because this is a behavior change, bump __FreeBSD_version. Discussed with: re (jhb, scottl) MFC after: 3 days Pointed out by: pkh (way back at EuroBSDCon) Pointy hat: brooks
-rw-r--r--UPDATING8
-rw-r--r--share/man/man9/ifnet.92
-rw-r--r--sys/net/if.c2
-rw-r--r--sys/net/if.h2
-rw-r--r--sys/sys/param.h2
5 files changed, 12 insertions, 4 deletions
diff --git a/UPDATING b/UPDATING
index d7bf823..daa6f78 100644
--- a/UPDATING
+++ b/UPDATING
@@ -21,6 +21,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 6.x IS SLOW:
developers choose to disable these features on build machines
to maximize performance.
+20050225:
+ The ifi_epoch member of struct if_data has been changed to
+ contain the uptime at which the interface was created or the
+ statistics zeroed rather then the wall clock time because
+ wallclock time may go backwards. This should have no impact
+ unless an snmp implementation is using this value (I know of
+ none at this point.)
+
20050223:
The layout of struct image_params has changed. You have to
recompile all compatibility modules (linux, svr4, etc) for use
diff --git a/share/man/man9/ifnet.9 b/share/man/man9/ifnet.9
index 86c9724..9eeb34b 100644
--- a/share/man/man9/ifnet.9
+++ b/share/man/man9/ifnet.9
@@ -729,7 +729,7 @@ the current value of
.Va if_capenable .
.It ifi_epoch
.Pq Vt time_t
-The time the interface was attached or the last time the statistics
+The system uptime when interface was attached or the statistics
below were reset.
This is intended to be used to set the SNMP variable
.Va ifCounterDiscontinuityTime .
diff --git a/sys/net/if.c b/sys/net/if.c
index 82d078e..d257919 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -392,7 +392,7 @@ if_attach(struct ifnet *ifp)
TAILQ_INIT(&ifp->if_multiaddrs);
knlist_init(&ifp->if_klist, NULL);
getmicrotime(&ifp->if_lastchange);
- ifp->if_data.ifi_epoch = time_second;
+ ifp->if_data.ifi_epoch = time_uptime;
#ifdef MAC
mac_init_ifnet(ifp);
diff --git a/sys/net/if.h b/sys/net/if.h
index 0fa63d7..b4d5bdb 100644
--- a/sys/net/if.h
+++ b/sys/net/if.h
@@ -102,7 +102,7 @@ struct if_data {
u_long ifi_iqdrops; /* dropped on input, this interface */
u_long ifi_noproto; /* destined for unsupported protocol */
u_long ifi_hwassist; /* HW offload capabilities */
- time_t ifi_epoch; /* time of attach or stat reset */
+ time_t ifi_epoch; /* uptime at attach or stat reset */
#ifdef __alpha__
u_int ifi_timepad; /* time_t is int, not long on alpha */
#endif
diff --git a/sys/sys/param.h b/sys/sys/param.h
index faa401b..59d10df 100644
--- a/sys/sys/param.h
+++ b/sys/sys/param.h
@@ -57,7 +57,7 @@
* is created, otherwise 1.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 600014 /* Master, propagated to newvers */
+#define __FreeBSD_version 600015 /* Master, propagated to newvers */
#ifndef LOCORE
#include <sys/types.h>
OpenPOWER on IntegriCloud