diff options
| author | Poul-Henning Kamp <phk@FreeBSD.org> | 2004-01-31 10:40:25 +0000 |
|---|---|---|
| committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2004-01-31 10:40:25 +0000 |
| commit | be8a62e8214b3cdd0e4d182389cbd42451fc04ea (patch) | |
| tree | 541f152b903334a9cf726d3180613df082ab33ba /sys/netinet/ip_input.c | |
| parent | f191a0bcf6631e482e13c801c06a1a542454bd42 (diff) | |
Notes
Diffstat (limited to 'sys/netinet/ip_input.c')
| -rw-r--r-- | sys/netinet/ip_input.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/sys/netinet/ip_input.c b/sys/netinet/ip_input.c index bb4271e616808..0900202a50377 100644 --- a/sys/netinet/ip_input.c +++ b/sys/netinet/ip_input.c @@ -2062,14 +2062,25 @@ ip_savecontrol(inp, mp, ip, m) register struct ip *ip; register struct mbuf *m; { - if (inp->inp_socket->so_options & SO_TIMESTAMP) { - struct timeval tv; + if (inp->inp_socket->so_options & (SO_BINTIME | SO_TIMESTAMP)) { + struct bintime bt; - microtime(&tv); - *mp = sbcreatecontrol((caddr_t) &tv, sizeof(tv), - SCM_TIMESTAMP, SOL_SOCKET); - if (*mp) - mp = &(*mp)->m_next; + bintime(&bt); + if (inp->inp_socket->so_options & SO_BINTIME) { + *mp = sbcreatecontrol((caddr_t) &bt, sizeof(bt), + SCM_BINTIME, SOL_SOCKET); + if (*mp) + mp = &(*mp)->m_next; + } + if (inp->inp_socket->so_options & SO_TIMESTAMP) { + struct timeval tv; + + bintime2timeval(&bt, &tv); + *mp = sbcreatecontrol((caddr_t) &tv, sizeof(tv), + SCM_TIMESTAMP, SOL_SOCKET); + if (*mp) + mp = &(*mp)->m_next; + } } if (inp->inp_flags & INP_RECVDSTADDR) { *mp = sbcreatecontrol((caddr_t) &ip->ip_dst, |
