Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(293)

Side by Side Diff: net/tools/quic/quic_socket_utils.cc

Issue 327393002: Land Recent QUIC Changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile error Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/tools/quic/quic_socket_utils.h ('k') | net/tools/quic/quic_spdy_server_stream_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_socket_utils.h" 5 #include "net/tools/quic/quic_socket_utils.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <netinet/in.h> 8 #include <netinet/in.h>
9 #include <string.h> 9 #include <string.h>
10 #include <sys/socket.h> 10 #include <sys/socket.h>
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 sizeof(struct sockaddr_in))); 147 sizeof(struct sockaddr_in)));
148 } else if (raw_address.ss_family == AF_INET6) { 148 } else if (raw_address.ss_family == AF_INET6) {
149 CHECK(peer_address->FromSockAddr( 149 CHECK(peer_address->FromSockAddr(
150 reinterpret_cast<const sockaddr*>(&raw_address), 150 reinterpret_cast<const sockaddr*>(&raw_address),
151 sizeof(struct sockaddr_in6))); 151 sizeof(struct sockaddr_in6)));
152 } 152 }
153 153
154 return bytes_read; 154 return bytes_read;
155 } 155 }
156 156
157 void QuicSocketUtils::SetIpInfoInCmsg(const IPAddressNumber& self_address, 157 size_t QuicSocketUtils::SetIpInfoInCmsg(const IPAddressNumber& self_address,
158 cmsghdr* cmsg) { 158 cmsghdr* cmsg) {
159 if (GetAddressFamily(self_address) == ADDRESS_FAMILY_IPV4) { 159 if (GetAddressFamily(self_address) == ADDRESS_FAMILY_IPV4) {
160 cmsg->cmsg_len = CMSG_LEN(sizeof(in_pktinfo)); 160 cmsg->cmsg_len = CMSG_LEN(sizeof(in_pktinfo));
161 cmsg->cmsg_level = IPPROTO_IP; 161 cmsg->cmsg_level = IPPROTO_IP;
162 cmsg->cmsg_type = IP_PKTINFO; 162 cmsg->cmsg_type = IP_PKTINFO;
163 in_pktinfo* pktinfo = reinterpret_cast<in_pktinfo*>(CMSG_DATA(cmsg)); 163 in_pktinfo* pktinfo = reinterpret_cast<in_pktinfo*>(CMSG_DATA(cmsg));
164 memset(pktinfo, 0, sizeof(in_pktinfo)); 164 memset(pktinfo, 0, sizeof(in_pktinfo));
165 pktinfo->ipi_ifindex = 0; 165 pktinfo->ipi_ifindex = 0;
166 memcpy(&pktinfo->ipi_spec_dst, &self_address[0], self_address.size()); 166 memcpy(&pktinfo->ipi_spec_dst, &self_address[0], self_address.size());
167 return sizeof(in_pktinfo);
167 } else { 168 } else {
168 cmsg->cmsg_len = CMSG_LEN(sizeof(in6_pktinfo)); 169 cmsg->cmsg_len = CMSG_LEN(sizeof(in6_pktinfo));
169 cmsg->cmsg_level = IPPROTO_IPV6; 170 cmsg->cmsg_level = IPPROTO_IPV6;
170 cmsg->cmsg_type = IPV6_PKTINFO; 171 cmsg->cmsg_type = IPV6_PKTINFO;
171 in6_pktinfo* pktinfo = reinterpret_cast<in6_pktinfo*>(CMSG_DATA(cmsg)); 172 in6_pktinfo* pktinfo = reinterpret_cast<in6_pktinfo*>(CMSG_DATA(cmsg));
172 memset(pktinfo, 0, sizeof(in6_pktinfo)); 173 memset(pktinfo, 0, sizeof(in6_pktinfo));
173 memcpy(&pktinfo->ipi6_addr, &self_address[0], self_address.size()); 174 memcpy(&pktinfo->ipi6_addr, &self_address[0], self_address.size());
175 return sizeof(in6_pktinfo);
174 } 176 }
175 } 177 }
176 178
177 // static 179 // static
178 WriteResult QuicSocketUtils::WritePacket(int fd, 180 WriteResult QuicSocketUtils::WritePacket(int fd,
179 const char* buffer, 181 const char* buffer,
180 size_t buf_len, 182 size_t buf_len,
181 const IPAddressNumber& self_address, 183 const IPAddressNumber& self_address,
182 const IPEndPoint& peer_address) { 184 const IPEndPoint& peer_address) {
183 sockaddr_storage raw_address; 185 sockaddr_storage raw_address;
(...skipping 30 matching lines...) Expand all
214 int rc = sendmsg(fd, &hdr, 0); 216 int rc = sendmsg(fd, &hdr, 0);
215 if (rc >= 0) { 217 if (rc >= 0) {
216 return WriteResult(WRITE_STATUS_OK, rc); 218 return WriteResult(WRITE_STATUS_OK, rc);
217 } 219 }
218 return WriteResult((errno == EAGAIN || errno == EWOULDBLOCK) ? 220 return WriteResult((errno == EAGAIN || errno == EWOULDBLOCK) ?
219 WRITE_STATUS_BLOCKED : WRITE_STATUS_ERROR, errno); 221 WRITE_STATUS_BLOCKED : WRITE_STATUS_ERROR, errno);
220 } 222 }
221 223
222 } // namespace tools 224 } // namespace tools
223 } // namespace net 225 } // namespace net
OLDNEW
« no previous file with comments | « net/tools/quic/quic_socket_utils.h ('k') | net/tools/quic/quic_spdy_server_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698