diff options
| author | Lorenz Kästle <lorenz.kaestle@netways.de> | 2023-03-09 11:03:48 +0100 |
|---|---|---|
| committer | Lorenz Kästle <lorenz.kaestle@netways.de> | 2023-03-09 11:03:48 +0100 |
| commit | d0edb72a0c9bc1a28197ab4566928f7ee63a6d43 (patch) | |
| tree | 6d524fb16d2dd1aa9f2d98529ef1de7a39f52700 /gl/sys_socket.in.h | |
| parent | 9fdc82f0543c6e2891c7079f70297f92e8ef4619 (diff) | |
| parent | 269718094177fb8a7e3d3005d1310495009fe8c4 (diff) | |
| download | monitoring-plugins-d0edb72.tar.gz | |
Merge branch 'master' into RincewindsHat-patch-1
Diffstat (limited to 'gl/sys_socket.in.h')
| -rw-r--r-- | gl/sys_socket.in.h | 138 |
1 files changed, 91 insertions, 47 deletions
diff --git a/gl/sys_socket.in.h b/gl/sys_socket.in.h index b4cf0c39..6705593f 100644 --- a/gl/sys_socket.in.h +++ b/gl/sys_socket.in.h | |||
| @@ -1,20 +1,20 @@ | |||
| 1 | /* Provide a sys/socket header file for systems lacking it (read: MinGW) | 1 | /* Provide a sys/socket header file for systems lacking it (read: MinGW) |
| 2 | and for systems where it is incomplete. | 2 | and for systems where it is incomplete. |
| 3 | Copyright (C) 2005-2013 Free Software Foundation, Inc. | 3 | Copyright (C) 2005-2023 Free Software Foundation, Inc. |
| 4 | Written by Simon Josefsson. | 4 | Written by Simon Josefsson. |
| 5 | 5 | ||
| 6 | This program is free software; you can redistribute it and/or modify | 6 | This file is free software: you can redistribute it and/or modify |
| 7 | it under the terms of the GNU General Public License as published by | 7 | it under the terms of the GNU Lesser General Public License as |
| 8 | the Free Software Foundation; either version 3, or (at your option) | 8 | published by the Free Software Foundation; either version 2.1 of the |
| 9 | any later version. | 9 | License, or (at your option) any later version. |
| 10 | 10 | ||
| 11 | This program is distributed in the hope that it will be useful, | 11 | This file is distributed in the hope that it will be useful, |
| 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 14 | GNU General Public License for more details. | 14 | GNU Lesser General Public License for more details. |
| 15 | 15 | ||
| 16 | You should have received a copy of the GNU General Public License | 16 | You should have received a copy of the GNU Lesser General Public License |
| 17 | along with this program; if not, see <http://www.gnu.org/licenses/>. */ | 17 | along with this program. If not, see <https://www.gnu.org/licenses/>. */ |
| 18 | 18 | ||
| 19 | /* This file is supposed to be used on platforms that lack <sys/socket.h>, | 19 | /* This file is supposed to be used on platforms that lack <sys/socket.h>, |
| 20 | on platforms where <sys/socket.h> cannot be included standalone, and on | 20 | on platforms where <sys/socket.h> cannot be included standalone, and on |
| @@ -63,6 +63,9 @@ | |||
| 63 | #ifndef _@GUARD_PREFIX@_SYS_SOCKET_H | 63 | #ifndef _@GUARD_PREFIX@_SYS_SOCKET_H |
| 64 | #define _@GUARD_PREFIX@_SYS_SOCKET_H | 64 | #define _@GUARD_PREFIX@_SYS_SOCKET_H |
| 65 | 65 | ||
| 66 | #ifndef _GL_INLINE_HEADER_BEGIN | ||
| 67 | #error "Please include config.h first." | ||
| 68 | #endif | ||
| 66 | _GL_INLINE_HEADER_BEGIN | 69 | _GL_INLINE_HEADER_BEGIN |
| 67 | #ifndef _GL_SYS_SOCKET_INLINE | 70 | #ifndef _GL_SYS_SOCKET_INLINE |
| 68 | # define _GL_SYS_SOCKET_INLINE _GL_INLINE | 71 | # define _GL_SYS_SOCKET_INLINE _GL_INLINE |
| @@ -76,7 +79,12 @@ _GL_INLINE_HEADER_BEGIN | |||
| 76 | 79 | ||
| 77 | #if !@HAVE_SA_FAMILY_T@ | 80 | #if !@HAVE_SA_FAMILY_T@ |
| 78 | # if !GNULIB_defined_sa_family_t | 81 | # if !GNULIB_defined_sa_family_t |
| 82 | /* On OS/2 kLIBC, sa_family_t is unsigned char unless TCPV40HDRS is defined. */ | ||
| 83 | # if !defined __KLIBC__ || defined TCPV40HDRS | ||
| 79 | typedef unsigned short sa_family_t; | 84 | typedef unsigned short sa_family_t; |
| 85 | # else | ||
| 86 | typedef unsigned char sa_family_t; | ||
| 87 | # endif | ||
| 80 | # define GNULIB_defined_sa_family_t 1 | 88 | # define GNULIB_defined_sa_family_t 1 |
| 81 | # endif | 89 | # endif |
| 82 | #endif | 90 | #endif |
| @@ -89,7 +97,6 @@ typedef unsigned short sa_family_t; | |||
| 89 | # endif | 97 | # endif |
| 90 | # endif | 98 | # endif |
| 91 | #else | 99 | #else |
| 92 | # include <stdalign.h> | ||
| 93 | /* Code taken from glibc sysdeps/unix/sysv/linux/bits/socket.h on | 100 | /* Code taken from glibc sysdeps/unix/sysv/linux/bits/socket.h on |
| 94 | 2009-05-08, licensed under LGPLv2.1+, plus portability fixes. */ | 101 | 2009-05-08, licensed under LGPLv2.1+, plus portability fixes. */ |
| 95 | # define __ss_aligntype unsigned long int | 102 | # define __ss_aligntype unsigned long int |
| @@ -133,6 +140,15 @@ struct sockaddr_storage | |||
| 133 | # define SHUT_RDWR 2 | 140 | # define SHUT_RDWR 2 |
| 134 | # endif | 141 | # endif |
| 135 | 142 | ||
| 143 | # ifdef __VMS /* OpenVMS */ | ||
| 144 | # ifndef CMSG_SPACE | ||
| 145 | # define CMSG_SPACE(length) _CMSG_SPACE(length) | ||
| 146 | # endif | ||
| 147 | # ifndef CMSG_LEN | ||
| 148 | # define CMSG_LEN(length) _CMSG_LEN(length) | ||
| 149 | # endif | ||
| 150 | # endif | ||
| 151 | |||
| 136 | #else | 152 | #else |
| 137 | 153 | ||
| 138 | # ifdef __CYGWIN__ | 154 | # ifdef __CYGWIN__ |
| @@ -152,7 +168,7 @@ struct sockaddr_storage | |||
| 152 | code may not run on older Windows releases then. My Windows 2000 | 168 | code may not run on older Windows releases then. My Windows 2000 |
| 153 | box was not able to run the code, for example. The situation is | 169 | box was not able to run the code, for example. The situation is |
| 154 | slightly confusing because | 170 | slightly confusing because |
| 155 | <http://msdn.microsoft.com/en-us/library/ms738520> | 171 | <https://docs.microsoft.com/en-us/windows/desktop/api/ws2tcpip/nf-ws2tcpip-getaddrinfo> |
| 156 | suggests that getaddrinfo should be available on all Windows | 172 | suggests that getaddrinfo should be available on all Windows |
| 157 | releases. */ | 173 | releases. */ |
| 158 | 174 | ||
| @@ -178,12 +194,7 @@ struct sockaddr_storage | |||
| 178 | /* Include headers needed by the emulation code. */ | 194 | /* Include headers needed by the emulation code. */ |
| 179 | # include <sys/types.h> | 195 | # include <sys/types.h> |
| 180 | # include <io.h> | 196 | # include <io.h> |
| 181 | 197 | /* If these headers don't define socklen_t, <config.h> does. */ | |
| 182 | # if !GNULIB_defined_socklen_t | ||
| 183 | typedef int socklen_t; | ||
| 184 | # define GNULIB_defined_socklen_t 1 | ||
| 185 | # endif | ||
| 186 | |||
| 187 | # endif | 198 | # endif |
| 188 | 199 | ||
| 189 | /* Rudimentary 'struct msghdr'; this works as long as you don't try to | 200 | /* Rudimentary 'struct msghdr'; this works as long as you don't try to |
| @@ -198,6 +209,15 @@ struct msghdr { | |||
| 198 | 209 | ||
| 199 | #endif | 210 | #endif |
| 200 | 211 | ||
| 212 | /* Ensure SO_REUSEPORT is defined. */ | ||
| 213 | /* For the subtle differences between SO_REUSEPORT and SO_REUSEADDR, see | ||
| 214 | https://stackoverflow.com/questions/14388706/socket-options-so-reuseaddr-and-so-reuseport-how-do-they-differ-do-they-mean-t | ||
| 215 | and https://lwn.net/Articles/542629/ | ||
| 216 | */ | ||
| 217 | #ifndef SO_REUSEPORT | ||
| 218 | # define SO_REUSEPORT SO_REUSEADDR | ||
| 219 | #endif | ||
| 220 | |||
| 201 | /* Fix some definitions from <winsock2.h>. */ | 221 | /* Fix some definitions from <winsock2.h>. */ |
| 202 | 222 | ||
| 203 | #if @HAVE_WINSOCK2_H@ | 223 | #if @HAVE_WINSOCK2_H@ |
| @@ -235,7 +255,7 @@ rpl_fd_isset (SOCKET fd, fd_set * set) | |||
| 235 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 255 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 236 | # undef close | 256 | # undef close |
| 237 | # define close close_used_without_including_unistd_h | 257 | # define close close_used_without_including_unistd_h |
| 238 | # else | 258 | # elif !defined __clang__ |
| 239 | _GL_WARN_ON_USE (close, | 259 | _GL_WARN_ON_USE (close, |
| 240 | "close() used without including <unistd.h>"); | 260 | "close() used without including <unistd.h>"); |
| 241 | # endif | 261 | # endif |
| @@ -320,14 +340,20 @@ _GL_WARN_ON_USE (connect, "connect is not always POSIX compliant - " | |||
| 320 | # define accept rpl_accept | 340 | # define accept rpl_accept |
| 321 | # endif | 341 | # endif |
| 322 | _GL_FUNCDECL_RPL (accept, int, | 342 | _GL_FUNCDECL_RPL (accept, int, |
| 323 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); | 343 | (int fd, |
| 344 | struct sockaddr *restrict addr, | ||
| 345 | socklen_t *restrict addrlen)); | ||
| 324 | _GL_CXXALIAS_RPL (accept, int, | 346 | _GL_CXXALIAS_RPL (accept, int, |
| 325 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); | 347 | (int fd, |
| 348 | struct sockaddr *restrict addr, | ||
| 349 | socklen_t *restrict addrlen)); | ||
| 326 | # else | 350 | # else |
| 327 | /* Need to cast, because on Solaris 10 systems, the third parameter is | 351 | /* Need to cast, because on Solaris 10 systems, the third parameter is |
| 328 | void *addrlen. */ | 352 | void *addrlen. */ |
| 329 | _GL_CXXALIAS_SYS_CAST (accept, int, | 353 | _GL_CXXALIAS_SYS_CAST (accept, int, |
| 330 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); | 354 | (int fd, |
| 355 | struct sockaddr *restrict addr, | ||
| 356 | socklen_t *restrict addrlen)); | ||
| 331 | # endif | 357 | # endif |
| 332 | _GL_CXXALIASWARN (accept); | 358 | _GL_CXXALIASWARN (accept); |
| 333 | #elif @HAVE_WINSOCK2_H@ | 359 | #elif @HAVE_WINSOCK2_H@ |
| @@ -378,15 +404,18 @@ _GL_WARN_ON_USE (bind, "bind is not always POSIX compliant - " | |||
| 378 | # define getpeername rpl_getpeername | 404 | # define getpeername rpl_getpeername |
| 379 | # endif | 405 | # endif |
| 380 | _GL_FUNCDECL_RPL (getpeername, int, | 406 | _GL_FUNCDECL_RPL (getpeername, int, |
| 381 | (int fd, struct sockaddr *addr, socklen_t *addrlen) | 407 | (int fd, struct sockaddr *restrict addr, |
| 408 | socklen_t *restrict addrlen) | ||
| 382 | _GL_ARG_NONNULL ((2, 3))); | 409 | _GL_ARG_NONNULL ((2, 3))); |
| 383 | _GL_CXXALIAS_RPL (getpeername, int, | 410 | _GL_CXXALIAS_RPL (getpeername, int, |
| 384 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); | 411 | (int fd, struct sockaddr *restrict addr, |
| 412 | socklen_t *restrict addrlen)); | ||
| 385 | # else | 413 | # else |
| 386 | /* Need to cast, because on Solaris 10 systems, the third parameter is | 414 | /* Need to cast, because on Solaris 10 systems, the third parameter is |
| 387 | void *addrlen. */ | 415 | void *addrlen. */ |
| 388 | _GL_CXXALIAS_SYS_CAST (getpeername, int, | 416 | _GL_CXXALIAS_SYS_CAST (getpeername, int, |
| 389 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); | 417 | (int fd, struct sockaddr *restrict addr, |
| 418 | socklen_t *restrict addrlen)); | ||
| 390 | # endif | 419 | # endif |
| 391 | _GL_CXXALIASWARN (getpeername); | 420 | _GL_CXXALIASWARN (getpeername); |
| 392 | #elif @HAVE_WINSOCK2_H@ | 421 | #elif @HAVE_WINSOCK2_H@ |
| @@ -407,15 +436,18 @@ _GL_WARN_ON_USE (getpeername, "getpeername is not always POSIX compliant - " | |||
| 407 | # define getsockname rpl_getsockname | 436 | # define getsockname rpl_getsockname |
| 408 | # endif | 437 | # endif |
| 409 | _GL_FUNCDECL_RPL (getsockname, int, | 438 | _GL_FUNCDECL_RPL (getsockname, int, |
| 410 | (int fd, struct sockaddr *addr, socklen_t *addrlen) | 439 | (int fd, struct sockaddr *restrict addr, |
| 440 | socklen_t *restrict addrlen) | ||
| 411 | _GL_ARG_NONNULL ((2, 3))); | 441 | _GL_ARG_NONNULL ((2, 3))); |
| 412 | _GL_CXXALIAS_RPL (getsockname, int, | 442 | _GL_CXXALIAS_RPL (getsockname, int, |
| 413 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); | 443 | (int fd, struct sockaddr *restrict addr, |
| 444 | socklen_t *restrict addrlen)); | ||
| 414 | # else | 445 | # else |
| 415 | /* Need to cast, because on Solaris 10 systems, the third parameter is | 446 | /* Need to cast, because on Solaris 10 systems, the third parameter is |
| 416 | void *addrlen. */ | 447 | void *addrlen. */ |
| 417 | _GL_CXXALIAS_SYS_CAST (getsockname, int, | 448 | _GL_CXXALIAS_SYS_CAST (getsockname, int, |
| 418 | (int fd, struct sockaddr *addr, socklen_t *addrlen)); | 449 | (int fd, struct sockaddr *restrict addr, |
| 450 | socklen_t *restrict addrlen)); | ||
| 419 | # endif | 451 | # endif |
| 420 | _GL_CXXALIASWARN (getsockname); | 452 | _GL_CXXALIASWARN (getsockname); |
| 421 | #elif @HAVE_WINSOCK2_H@ | 453 | #elif @HAVE_WINSOCK2_H@ |
| @@ -435,16 +467,19 @@ _GL_WARN_ON_USE (getsockname, "getsockname is not always POSIX compliant - " | |||
| 435 | # undef getsockopt | 467 | # undef getsockopt |
| 436 | # define getsockopt rpl_getsockopt | 468 | # define getsockopt rpl_getsockopt |
| 437 | # endif | 469 | # endif |
| 438 | _GL_FUNCDECL_RPL (getsockopt, int, (int fd, int level, int optname, | 470 | _GL_FUNCDECL_RPL (getsockopt, int, |
| 439 | void *optval, socklen_t *optlen) | 471 | (int fd, int level, int optname, |
| 440 | _GL_ARG_NONNULL ((4, 5))); | 472 | void *restrict optval, socklen_t *restrict optlen) |
| 441 | _GL_CXXALIAS_RPL (getsockopt, int, (int fd, int level, int optname, | 473 | _GL_ARG_NONNULL ((4, 5))); |
| 442 | void *optval, socklen_t *optlen)); | 474 | _GL_CXXALIAS_RPL (getsockopt, int, |
| 475 | (int fd, int level, int optname, | ||
| 476 | void *restrict optval, socklen_t *restrict optlen)); | ||
| 443 | # else | 477 | # else |
| 444 | /* Need to cast, because on Solaris 10 systems, the fifth parameter is | 478 | /* Need to cast, because on Solaris 10 systems, the fifth parameter is |
| 445 | void *optlen. */ | 479 | void *optlen. */ |
| 446 | _GL_CXXALIAS_SYS_CAST (getsockopt, int, (int fd, int level, int optname, | 480 | _GL_CXXALIAS_SYS_CAST (getsockopt, int, |
| 447 | void *optval, socklen_t *optlen)); | 481 | (int fd, int level, int optname, |
| 482 | void *restrict optval, socklen_t *restrict optlen)); | ||
| 448 | # endif | 483 | # endif |
| 449 | _GL_CXXALIASWARN (getsockopt); | 484 | _GL_CXXALIASWARN (getsockopt); |
| 450 | #elif @HAVE_WINSOCK2_H@ | 485 | #elif @HAVE_WINSOCK2_H@ |
| @@ -491,7 +526,10 @@ _GL_FUNCDECL_RPL (recv, ssize_t, (int fd, void *buf, size_t len, int flags) | |||
| 491 | _GL_ARG_NONNULL ((2))); | 526 | _GL_ARG_NONNULL ((2))); |
| 492 | _GL_CXXALIAS_RPL (recv, ssize_t, (int fd, void *buf, size_t len, int flags)); | 527 | _GL_CXXALIAS_RPL (recv, ssize_t, (int fd, void *buf, size_t len, int flags)); |
| 493 | # else | 528 | # else |
| 494 | _GL_CXXALIAS_SYS (recv, ssize_t, (int fd, void *buf, size_t len, int flags)); | 529 | /* Need to cast, because on HP-UX 11.31 the return type may be |
| 530 | int, | ||
| 531 | depending on compiler options. */ | ||
| 532 | _GL_CXXALIAS_SYS_CAST (recv, ssize_t, (int fd, void *buf, size_t len, int flags)); | ||
| 495 | # endif | 533 | # endif |
| 496 | _GL_CXXALIASWARN (recv); | 534 | _GL_CXXALIASWARN (recv); |
| 497 | #elif @HAVE_WINSOCK2_H@ | 535 | #elif @HAVE_WINSOCK2_H@ |
| @@ -517,8 +555,11 @@ _GL_FUNCDECL_RPL (send, ssize_t, | |||
| 517 | _GL_CXXALIAS_RPL (send, ssize_t, | 555 | _GL_CXXALIAS_RPL (send, ssize_t, |
| 518 | (int fd, const void *buf, size_t len, int flags)); | 556 | (int fd, const void *buf, size_t len, int flags)); |
| 519 | # else | 557 | # else |
| 520 | _GL_CXXALIAS_SYS (send, ssize_t, | 558 | /* Need to cast, because on HP-UX 11.31 the return type may be |
| 521 | (int fd, const void *buf, size_t len, int flags)); | 559 | int, |
| 560 | depending on compiler options. */ | ||
| 561 | _GL_CXXALIAS_SYS_CAST (send, ssize_t, | ||
| 562 | (int fd, const void *buf, size_t len, int flags)); | ||
| 522 | # endif | 563 | # endif |
| 523 | _GL_CXXALIASWARN (send); | 564 | _GL_CXXALIASWARN (send); |
| 524 | #elif @HAVE_WINSOCK2_H@ | 565 | #elif @HAVE_WINSOCK2_H@ |
| @@ -539,18 +580,21 @@ _GL_WARN_ON_USE (send, "send is not always POSIX compliant - " | |||
| 539 | # define recvfrom rpl_recvfrom | 580 | # define recvfrom rpl_recvfrom |
| 540 | # endif | 581 | # endif |
| 541 | _GL_FUNCDECL_RPL (recvfrom, ssize_t, | 582 | _GL_FUNCDECL_RPL (recvfrom, ssize_t, |
| 542 | (int fd, void *buf, size_t len, int flags, | 583 | (int fd, void *restrict buf, size_t len, int flags, |
| 543 | struct sockaddr *from, socklen_t *fromlen) | 584 | struct sockaddr *restrict from, |
| 585 | socklen_t *restrict fromlen) | ||
| 544 | _GL_ARG_NONNULL ((2))); | 586 | _GL_ARG_NONNULL ((2))); |
| 545 | _GL_CXXALIAS_RPL (recvfrom, ssize_t, | 587 | _GL_CXXALIAS_RPL (recvfrom, ssize_t, |
| 546 | (int fd, void *buf, size_t len, int flags, | 588 | (int fd, void *restrict buf, size_t len, int flags, |
| 547 | struct sockaddr *from, socklen_t *fromlen)); | 589 | struct sockaddr *restrict from, |
| 590 | socklen_t *restrict fromlen)); | ||
| 548 | # else | 591 | # else |
| 549 | /* Need to cast, because on Solaris 10 systems, the sixth parameter is | 592 | /* Need to cast, because on Solaris 10 systems, the sixth parameter is |
| 550 | void *fromlen. */ | 593 | void *fromlen. */ |
| 551 | _GL_CXXALIAS_SYS_CAST (recvfrom, ssize_t, | 594 | _GL_CXXALIAS_SYS_CAST (recvfrom, ssize_t, |
| 552 | (int fd, void *buf, size_t len, int flags, | 595 | (int fd, void *restrict buf, size_t len, int flags, |
| 553 | struct sockaddr *from, socklen_t *fromlen)); | 596 | struct sockaddr *restrict from, |
| 597 | socklen_t *restrict fromlen)); | ||
| 554 | # endif | 598 | # endif |
| 555 | _GL_CXXALIASWARN (recvfrom); | 599 | _GL_CXXALIASWARN (recvfrom); |
| 556 | #elif @HAVE_WINSOCK2_H@ | 600 | #elif @HAVE_WINSOCK2_H@ |
| @@ -654,7 +698,7 @@ _GL_WARN_ON_USE (shutdown, "shutdown is not always POSIX compliant - " | |||
| 654 | The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>) | 698 | The flags are a bitmask, possibly including O_CLOEXEC (defined in <fcntl.h>) |
| 655 | and O_TEXT, O_BINARY (defined in "binary-io.h"). | 699 | and O_TEXT, O_BINARY (defined in "binary-io.h"). |
| 656 | See also the Linux man page at | 700 | See also the Linux man page at |
| 657 | <http://www.kernel.org/doc/man-pages/online/pages/man2/accept4.2.html>. */ | 701 | <https://www.kernel.org/doc/man-pages/online/pages/man2/accept4.2.html>. */ |
| 658 | # if @HAVE_ACCEPT4@ | 702 | # if @HAVE_ACCEPT4@ |
| 659 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) | 703 | # if !(defined __cplusplus && defined GNULIB_NAMESPACE) |
| 660 | # define accept4 rpl_accept4 | 704 | # define accept4 rpl_accept4 |
