| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/base/address_list.h" | 5 #include "net/base/address_list.h" |
| 6 | 6 |
| 7 #ifdef OS_WIN | 7 #ifdef OS_WIN |
| 8 #include <ws2tcpip.h> | 8 #include <ws2tcpip.h> |
| 9 #include <wspiapi.h> // Needed for Win2k compat. | 9 #include <wspiapi.h> // Needed for Win2k compat. |
| 10 #else | 10 #else |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 // Otherwise we need to make a copy in order to change the port number. | 120 // Otherwise we need to make a copy in order to change the port number. |
| 121 Copy(src.head()); | 121 Copy(src.head()); |
| 122 SetPort(port); | 122 SetPort(port); |
| 123 } | 123 } |
| 124 } | 124 } |
| 125 | 125 |
| 126 void AddressList::Reset() { | 126 void AddressList::Reset() { |
| 127 data_ = NULL; | 127 data_ = NULL; |
| 128 } | 128 } |
| 129 | 129 |
| 130 // static |
| 131 AddressList AddressList::CreateIPv6Address(unsigned char data[16]) { |
| 132 struct addrinfo* ai = new struct addrinfo; |
| 133 memset(ai, 0, sizeof(struct addrinfo)); |
| 134 |
| 135 ai->ai_family = AF_INET6; |
| 136 ai->ai_socktype = SOCK_STREAM; |
| 137 ai->ai_addrlen = sizeof(sockaddr_in6); |
| 138 |
| 139 struct sockaddr_in6* addr6 = new sockaddr_in6; |
| 140 memset(addr6, 0, sizeof(sockaddr_in6)); |
| 141 |
| 142 ai->ai_addr = reinterpret_cast<sockaddr*>(addr6); |
| 143 addr6->sin6_family = AF_INET6; |
| 144 memcpy(&addr6->sin6_addr, data, 16); |
| 145 |
| 146 return AddressList(new Data(ai, false /*is_system_created*/)); |
| 147 } |
| 148 |
| 130 AddressList::Data::~Data() { | 149 AddressList::Data::~Data() { |
| 131 // Call either freeaddrinfo(head), or FreeMyAddrinfo(head), depending who | 150 // Call either freeaddrinfo(head), or FreeMyAddrinfo(head), depending who |
| 132 // created the data. | 151 // created the data. |
| 133 if (is_system_created) | 152 if (is_system_created) |
| 134 freeaddrinfo(head); | 153 freeaddrinfo(head); |
| 135 else | 154 else |
| 136 FreeMyAddrinfo(head); | 155 FreeMyAddrinfo(head); |
| 137 } | 156 } |
| 138 | 157 |
| 139 } // namespace net | 158 } // namespace net |
| OLD | NEW |