OK?

diff --git sys/net/if_bridge.c sys/net/if_bridge.c
index 637dea8..ce8d0d7 100644
--- sys/net/if_bridge.c
+++ sys/net/if_bridge.c
@@ -2181,11 +2181,10 @@ int
 bridge_ipsec(struct bridge_softc *sc, struct ifnet *ifp,
     struct ether_header *eh, int hassnap, struct llc *llc,
     int dir, int af, int hlen, struct mbuf *m)
 {
        union sockaddr_union dst;
-       struct timeval tv;
        struct tdb *tdb;
        u_int32_t spi;
        u_int16_t cpi;
        int error, off, s;
        u_int8_t proto = 0;
@@ -2277,37 +2276,16 @@ bridge_ipsec(struct bridge_softc *sc, struct ifnet *ifp,
                tdb = gettdb(ifp->if_rdomain, spi, &dst, proto);
                if (tdb != NULL && (tdb->tdb_flags & TDBF_INVALID) == 0 &&
                    tdb->tdb_xform != NULL) {
                        if (tdb->tdb_first_use == 0) {
                                tdb->tdb_first_use = time_second;
-
-                               tv.tv_usec = 0;
-
-                               /* Check for wrap-around. */
-                               if (tdb->tdb_exp_first_use + tdb->tdb_first_use
-                                   < tdb->tdb_first_use)
-                                       tv.tv_sec = ((unsigned long)-1) / 2;
-                               else
-                                       tv.tv_sec = tdb->tdb_exp_first_use +
-                                           tdb->tdb_first_use;
-
                                if (tdb->tdb_flags & TDBF_FIRSTUSE)
-                                       timeout_add(&tdb->tdb_first_tmo,
-                                           hzto(&tv));
-
-                               /* Check for wrap-around. */
-                               if (tdb->tdb_first_use +
-                                   tdb->tdb_soft_first_use
-                                   < tdb->tdb_first_use)
-                                       tv.tv_sec = ((unsigned long)-1) / 2;
-                               else
-                                       tv.tv_sec = tdb->tdb_first_use +
-                                           tdb->tdb_soft_first_use;
-
+                                       timeout_add_sec(&tdb->tdb_first_tmo,
+                                           tdb->tdb_exp_first_use);
                                if (tdb->tdb_flags & TDBF_SOFT_FIRSTUSE)
-                                       timeout_add(&tdb->tdb_sfirst_tmo,
-                                           hzto(&tv));
+                                       timeout_add_sec(&tdb->tdb_sfirst_tmo,
+                                           tdb->tdb_soft_first_use);
                        }
 
                        (*(tdb->tdb_xform->xf_input))(m, tdb, hlen, off);
                        splx(s);
                        return (1);
diff --git sys/net/pfkeyv2_convert.c sys/net/pfkeyv2_convert.c
index 9fa4920..6657a51 100644
--- sys/net/pfkeyv2_convert.c
+++ sys/net/pfkeyv2_convert.c
@@ -277,17 +277,13 @@ export_sa(void **p, struct tdb *tdb)
  * Initialize expirations and counters based on lifetime payload.
  */
 void
 import_lifetime(struct tdb *tdb, struct sadb_lifetime *sadb_lifetime, int type)
 {
-       struct timeval tv;
-
        if (!sadb_lifetime)
                return;
 
-       getmicrotime(&tv);
-
        switch (type) {
        case PFKEYV2_LIFETIME_HARD:
                if ((tdb->tdb_exp_allocations =
                    sadb_lifetime->sadb_lifetime_allocations) != 0)
                        tdb->tdb_flags |= TDBF_ALLOCATIONS;
@@ -301,15 +297,12 @@ import_lifetime(struct tdb *tdb, struct sadb_lifetime 
*sadb_lifetime, int type)
                        tdb->tdb_flags &= ~TDBF_BYTES;
 
                if ((tdb->tdb_exp_timeout =
                    sadb_lifetime->sadb_lifetime_addtime) != 0) {
                        tdb->tdb_flags |= TDBF_TIMER;
-                       if (tv.tv_sec + tdb->tdb_exp_timeout < tv.tv_sec)
-                               tv.tv_sec = ((unsigned long) -1) / 2; /* XXX */
-                       else
-                               tv.tv_sec += tdb->tdb_exp_timeout;
-                       timeout_add(&tdb->tdb_timer_tmo, hzto(&tv));
+                       timeout_add_sec(&tdb->tdb_timer_tmo,
+                           tdb->tdb_exp_timeout);
                } else
                        tdb->tdb_flags &= ~TDBF_TIMER;
 
                if ((tdb->tdb_exp_first_use =
                    sadb_lifetime->sadb_lifetime_usetime) != 0)
@@ -332,15 +325,12 @@ import_lifetime(struct tdb *tdb, struct sadb_lifetime 
*sadb_lifetime, int type)
                        tdb->tdb_flags &= ~TDBF_SOFT_BYTES;
 
                if ((tdb->tdb_soft_timeout =
                    sadb_lifetime->sadb_lifetime_addtime) != 0) {
                        tdb->tdb_flags |= TDBF_SOFT_TIMER;
-                       if (tv.tv_sec + tdb->tdb_soft_timeout < tv.tv_sec)
-                               tv.tv_sec = ((unsigned long) -1) / 2; /* XXX */
-                       else
-                               tv.tv_sec += tdb->tdb_soft_timeout;
-                       timeout_add(&tdb->tdb_stimer_tmo, hzto(&tv));
+                       timeout_add_sec(&tdb->tdb_stimer_tmo,
+                           tdb->tdb_soft_timeout);
                } else
                        tdb->tdb_flags &= ~TDBF_SOFT_TIMER;
 
                if ((tdb->tdb_soft_first_use =
                    sadb_lifetime->sadb_lifetime_usetime) != 0)
diff --git sys/netinet/ipsec_input.c sys/netinet/ipsec_input.c
index 7ecab1e..136bdd0 100644
--- sys/netinet/ipsec_input.c
+++ sys/netinet/ipsec_input.c
@@ -117,11 +117,10 @@ ipsec_common_input(struct mbuf *m, int skip, int protoff, 
int af, int sproto,
 {
 #define IPSEC_ISTAT(x,y,z) (sproto == IPPROTO_ESP ? (x)++ : \
                            sproto == IPPROTO_AH ? (y)++ : (z)++)
 
        union sockaddr_union dst_address;
-       struct timeval tv;
        struct tdb *tdbp;
        struct ifnet *encif;
        u_int32_t spi;
        u_int16_t cpi;
        int s, error;
@@ -295,20 +294,16 @@ ipsec_common_input(struct mbuf *m, int skip, int protoff, 
int af, int sproto,
        }
 
        /* Register first use, setup expiration timer. */
        if (tdbp->tdb_first_use == 0) {
                tdbp->tdb_first_use = time_second;
-
-               tv.tv_usec = 0;
-
-               tv.tv_sec = tdbp->tdb_exp_first_use + tdbp->tdb_first_use;
                if (tdbp->tdb_flags & TDBF_FIRSTUSE)
-                       timeout_add(&tdbp->tdb_first_tmo, hzto(&tv));
-
-               tv.tv_sec = tdbp->tdb_first_use + tdbp->tdb_soft_first_use;
+                       timeout_add_sec(&tdbp->tdb_first_tmo,
+                           tdbp->tdb_exp_first_use);
                if (tdbp->tdb_flags & TDBF_SOFT_FIRSTUSE)
-                       timeout_add(&tdbp->tdb_sfirst_tmo, hzto(&tv));
+                       timeout_add_sec(&tdbp->tdb_sfirst_tmo,
+                           tdbp->tdb_soft_first_use);
        }
 
        /*
         * Call appropriate transform and return -- callback takes care of
         * everything else.
diff --git sys/netinet/ipsec_output.c sys/netinet/ipsec_output.c
index b6bb451..25c5b25 100644
--- sys/netinet/ipsec_output.c
+++ sys/netinet/ipsec_output.c
@@ -63,11 +63,10 @@ int udpencap_port = 4500;   /* triggers decapsulation */
  * place.
  */
 int
 ipsp_process_packet(struct mbuf *m, struct tdb *tdb, int af, int tunalready)
 {
-       struct timeval tv;
        int i, off, error;
        struct mbuf *mp;
 #ifdef INET6
        struct ip6_ext ip6e;
        int nxt;
@@ -133,22 +132,16 @@ ipsp_process_packet(struct mbuf *m, struct tdb *tdb, int 
af, int tunalready)
        /*
         * Register first use if applicable, setup relevant expiration timer.
         */
        if (tdb->tdb_first_use == 0) {
                tdb->tdb_first_use = time_second;
-
-               tv.tv_usec = 0;
-
-               tv.tv_sec = tdb->tdb_first_use + tdb->tdb_exp_first_use;
                if (tdb->tdb_flags & TDBF_FIRSTUSE)
-                       timeout_add(&tdb->tdb_first_tmo,
-                           hzto(&tv));
-
-               tv.tv_sec = tdb->tdb_first_use + tdb->tdb_soft_first_use;
+                       timeout_add_sec(&tdb->tdb_first_tmo,
+                           tdb->tdb_exp_first_use);
                if (tdb->tdb_flags & TDBF_SOFT_FIRSTUSE)
-                       timeout_add(&tdb->tdb_sfirst_tmo,
-                           hzto(&tv));
+                       timeout_add_sec(&tdb->tdb_sfirst_tmo,
+                           tdb->tdb_soft_first_use);
        }
 
        /*
         * Check for tunneling if we don't have the first header in place.
         * When doing Ethernet-over-IP, we are handed an already-encapsulated

Reply via email to