Home | History | Annotate | Download | only in base

Lines Matching full:info

16 // Make a deep copy of |info|. This copy should be deleted using
18 struct addrinfo* CreateCopyOfAddrinfo(const struct addrinfo* info) {
22 memcpy(copy, info, sizeof(addrinfo));
25 if (info->ai_canonname) {
27 copy->ai_canonname = _strdup(info->ai_canonname);
29 copy->ai_canonname = strdup(info->ai_canonname);
34 if (info->ai_addr) {
35 copy->ai_addr = reinterpret_cast<sockaddr *>(new char[info->ai_addrlen]);
36 memcpy(copy->ai_addr, info->ai_addr, info->ai_addrlen);
40 if (info->ai_next)
41 copy->ai_next = CreateCopyOfAddrinfo(info->ai_next);
47 void FreeMyAddrinfo(struct addrinfo* info) {
48 if (info->ai_canonname)
49 free(info->ai_canonname); // Allocated by strdup.
51 if (info->ai_addr)
52 delete [] reinterpret_cast<char*>(info->ai_addr);
54 struct addrinfo* next = info->ai_next;
56 delete info;
63 // Returns the address to port field in |info|.
64 uint16* GetPortField(const struct addrinfo* info) {
65 if (info->ai_family == AF_INET) {
66 DCHECK_EQ(sizeof(sockaddr_in), info->ai_addrlen);
68 reinterpret_cast<struct sockaddr_in*>(info->ai_addr);
70 } else if (info->ai_family == AF_INET6) {
71 DCHECK_EQ(sizeof(sockaddr_in6), info->ai_addrlen);
73 reinterpret_cast<struct sockaddr_in6*>(info->ai_addr);
82 void SetPortRecursive(struct addrinfo* info, int port) {
83 uint16* port_field = GetPortField(info);
87 if (info->ai_next)
88 SetPortRecursive(info->ai_next, port);