rt_metrics: Change msl unit to millisecond
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Sun, 20 Nov 2011 06:53:09 +0000 (14:53 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Sun, 20 Nov 2011 06:53:09 +0000 (14:53 +0800)
sbin/route/route.c
sys/net/route.h
sys/netinet/tcp_input.c

index fadfc3a..b1236bb 100644 (file)
@@ -1529,7 +1529,7 @@ print_getmsg(struct rt_msghdr *rtm, int msglen)
 #define msec(u)        (((u) + 500) / 1000)            /* usec to msec */
 
        printf("\n%s\n", "\
- recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire      msl");
+ recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire  msl,msec");
        printf("%8ld%c ", rtm->rtm_rmx.rmx_recvpipe, lock(RPIPE));
        printf("%8ld%c ", rtm->rtm_rmx.rmx_sendpipe, lock(SPIPE));
        printf("%8ld%c ", rtm->rtm_rmx.rmx_ssthresh, lock(SSTHRESH));
index c42c8f9..f778712 100644 (file)
@@ -116,7 +116,7 @@ struct rt_metrics { /* grouped for locality of reference */
        u_long  rmx_hopcount;   /* max hops expected */
        u_short rmx_mssopt;     /* peer's cached MSS */
        u_short rmx_pad;        /* explicit pad */
-       u_long  rmx_msl;        /* maximum segment lifetime */
+       u_long  rmx_msl;        /* maximum segment lifetime, unit: ms */
        u_long  rmx_filler[2];  /* for future expansion */
 };
 
index 360e8b6..44a04f8 100644 (file)
@@ -3217,6 +3217,7 @@ tcp_rmx_msl(const struct tcpcb *tp)
 {
        struct rtentry *rt;
        struct inpcb *inp = tp->t_inpcb;
+       int msl;
 #ifdef INET6
        boolean_t isipv6 = ((inp->inp_vflag & INP_IPV6) ? TRUE : FALSE);
 #else
@@ -3230,5 +3231,9 @@ tcp_rmx_msl(const struct tcpcb *tp)
        if (rt == NULL || rt->rt_rmx.rmx_msl == 0)
                return tcp_msl;
 
-       return (rt->rt_rmx.rmx_msl * hz);
+       msl = (rt->rt_rmx.rmx_msl * hz) / 1000;
+       if (msl == 0)
+               msl = 1;
+
+       return msl;
 }