Save ip_ttl value and restore it after checksum calculation.
Since ipvoly is used for checksum calculation, part of original IP header is zeroed. This part includes ip_ttl field, that can be used later in IP_MINTTL socket option handling. PR: 239799 MFC after: 1 week
This commit is contained in:
parent
ce02104e38
commit
cdfc67a5b0
@ -554,6 +554,7 @@ tcp_input(struct mbuf **mp, int *offp, int proto)
|
||||
int optlen = 0;
|
||||
#ifdef INET
|
||||
int len;
|
||||
uint8_t ipttl;
|
||||
#endif
|
||||
int tlen = 0, off;
|
||||
int drop_hdrlen;
|
||||
@ -676,6 +677,7 @@ tcp_input(struct mbuf **mp, int *offp, int proto)
|
||||
* Checksum extended TCP header and data.
|
||||
*/
|
||||
len = off0 + tlen;
|
||||
ipttl = ip->ip_ttl;
|
||||
bzero(ipov->ih_x1, sizeof(ipov->ih_x1));
|
||||
ipov->ih_len = htons(tlen);
|
||||
th->th_sum = in_cksum(m, len);
|
||||
@ -684,6 +686,7 @@ tcp_input(struct mbuf **mp, int *offp, int proto)
|
||||
/* Reset TOS bits */
|
||||
ip->ip_tos = iptos;
|
||||
/* Re-initialization for later version check */
|
||||
ip->ip_ttl = ipttl;
|
||||
ip->ip_v = IPVERSION;
|
||||
ip->ip_hl = off0 >> 2;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user