dualstack_socket_posix.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2020 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
20 
22 
23 #ifdef GRPC_POSIX_SOCKET_UTILS_COMMON
24 
25 #include <netinet/in.h>
26 
28 
29 #ifndef GRPC_SET_SOCKET_DUALSTACK_CUSTOM
30 
31 /* This should be 0 in production, but it may be enabled for testing or
32  debugging purposes, to simulate an environment where IPv6 sockets can't
33  also speak IPv4. */
35 
36 int grpc_set_socket_dualstack(int fd) {
38  const int off = 0;
39  return 0 == setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &off, sizeof(off));
40  } else {
41  /* Force an IPv6-only socket, for testing purposes. */
42  const int on = 1;
43  setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on));
44  return 0;
45  }
46 }
47 #endif // GRPC_SET_SOCKET_DUALSTACK_CUSTOM
48 #endif // GRPC_POSIX_SOCKET_UTILS_COMMON
IPV6_V6ONLY
#define IPV6_V6ONLY
Definition: winsock.h:46
grpc_forbid_dualstack_sockets_for_testing
int grpc_forbid_dualstack_sockets_for_testing
port.h
socket_utils_posix.h
grpc_set_socket_dualstack
int grpc_set_socket_dualstack(int fd)
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:13