1*6777b538SAndroid Build Coastguard Worker // Copyright 2016 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef NET_BASE_SOCKADDR_STORAGE_H_ 6*6777b538SAndroid Build Coastguard Worker #define NET_BASE_SOCKADDR_STORAGE_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include "base/memory/raw_ptr_exclusion.h" 9*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h" 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_WIN) 12*6777b538SAndroid Build Coastguard Worker #include <winsock2.h> 13*6777b538SAndroid Build Coastguard Worker #include <ws2tcpip.h> 14*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) 15*6777b538SAndroid Build Coastguard Worker #include <sys/socket.h> 16*6777b538SAndroid Build Coastguard Worker #include <sys/types.h> 17*6777b538SAndroid Build Coastguard Worker #endif 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h" 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker namespace net { 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker // Convenience struct for when you need a |struct sockaddr|. 24*6777b538SAndroid Build Coastguard Worker struct NET_EXPORT SockaddrStorage { 25*6777b538SAndroid Build Coastguard Worker SockaddrStorage(); 26*6777b538SAndroid Build Coastguard Worker SockaddrStorage(const SockaddrStorage& other); 27*6777b538SAndroid Build Coastguard Worker void operator=(const SockaddrStorage& other); 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard Worker struct sockaddr_storage addr_storage; 30*6777b538SAndroid Build Coastguard Worker socklen_t addr_len; 31*6777b538SAndroid Build Coastguard Worker // This field is not a raw_ptr<> because of a rewriter issue not adding .get() 32*6777b538SAndroid Build Coastguard Worker // in reinterpret_cast. 33*6777b538SAndroid Build Coastguard Worker RAW_PTR_EXCLUSION struct sockaddr* const addr; 34*6777b538SAndroid Build Coastguard Worker }; 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker } // namespace net 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker #endif // NET_BASE_SOCKADDR_STORAGE_H_ 39