OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/tools/quic/quic_packet_reader.h" | 5 #include "net/tools/quic/quic_packet_reader.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #ifndef __APPLE__ | 8 #ifndef __APPLE__ |
9 // This is a GNU header that is not present in /usr/include on MacOS | 9 // This is a GNU header that is not present in /usr/include on MacOS |
10 #include <features.h> | 10 #include <features.h> |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 | 123 |
124 // This isn't particularly desirable, but not all platforms support socket | 124 // This isn't particularly desirable, but not all platforms support socket |
125 // timestamping. | 125 // timestamping. |
126 if (packet_walltimestamp.IsZero()) { | 126 if (packet_walltimestamp.IsZero()) { |
127 if (fallback_walltimestamp.IsZero()) { | 127 if (fallback_walltimestamp.IsZero()) { |
128 fallback_walltimestamp = clock.WallNow(); | 128 fallback_walltimestamp = clock.WallNow(); |
129 } | 129 } |
130 packet_walltimestamp = fallback_walltimestamp; | 130 packet_walltimestamp = fallback_walltimestamp; |
131 } | 131 } |
132 QuicTime timestamp = clock.ConvertWallTimeToQuicTime(packet_walltimestamp); | 132 QuicTime timestamp = clock.ConvertWallTimeToQuicTime(packet_walltimestamp); |
| 133 int ttl = 0; |
| 134 bool has_ttl = |
| 135 QuicSocketUtils::GetTtlFromMsghdr(&mmsg_hdr_[i].msg_hdr, &ttl); |
133 QuicReceivedPacket packet(reinterpret_cast<char*>(packets_[i].iov.iov_base), | 136 QuicReceivedPacket packet(reinterpret_cast<char*>(packets_[i].iov.iov_base), |
134 mmsg_hdr_[i].msg_len, timestamp, false); | 137 mmsg_hdr_[i].msg_len, timestamp, false, ttl, |
| 138 has_ttl); |
135 IPEndPoint server_address(server_ip, port); | 139 IPEndPoint server_address(server_ip, port); |
136 processor->ProcessPacket(server_address, client_address, packet); | 140 processor->ProcessPacket(server_address, client_address, packet); |
137 } | 141 } |
138 | 142 |
139 if (packets_dropped != nullptr) { | 143 if (packets_dropped != nullptr) { |
140 QuicSocketUtils::GetOverflowFromMsghdr(&mmsg_hdr_[0].msg_hdr, | 144 QuicSocketUtils::GetOverflowFromMsghdr(&mmsg_hdr_[0].msg_hdr, |
141 packets_dropped); | 145 packets_dropped); |
142 } | 146 } |
143 | 147 |
144 // We may not have read all of the packets available on the socket. | 148 // We may not have read all of the packets available on the socket. |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 IPEndPoint server_address(server_ip, port); | 187 IPEndPoint server_address(server_ip, port); |
184 processor->ProcessPacket(server_address, client_address, packet); | 188 processor->ProcessPacket(server_address, client_address, packet); |
185 | 189 |
186 // The socket read was successful, so return true even if packet dispatch | 190 // The socket read was successful, so return true even if packet dispatch |
187 // failed. | 191 // failed. |
188 return true; | 192 return true; |
189 } | 193 } |
190 | 194 |
191 | 195 |
192 } // namespace net | 196 } // namespace net |
OLD | NEW |