sockets add AF_DIVERT constant.

Allow to bind a socket to a divert port without being concerned
by its address. for ipfw filter purpose (SO_USER_COOKIE constant).
FreeBSD only.

Close GH-10415.
This commit is contained in:
David Carlier 2023-01-22 17:08:28 +00:00
parent cf1d21edbd
commit f8f7fd2db1
4 changed files with 13 additions and 1 deletions

1
NEWS
View file

@ -94,6 +94,7 @@ PHP NEWS
. Added TCP_QUICKACK constant, to give tigher control over . Added TCP_QUICKACK constant, to give tigher control over
ACK delays. (David Carlier) ACK delays. (David Carlier)
. Added DONTFRAGMENT support for path MTU discovery purpose. (David Carlier) . Added DONTFRAGMENT support for path MTU discovery purpose. (David Carlier)
. Added AF_DIVERT for raw socket for divert ports. (David Carlier)
- Standard: - Standard:
. E_NOTICEs emitted by unserialize() have been promoted to E_WARNING. (timwolla) . E_NOTICEs emitted by unserialize() have been promoted to E_WARNING. (timwolla)

View file

@ -132,6 +132,7 @@ PHP 8.3 UPGRADE NOTES
. IP_PMTUDISC_PROBE (Linux only). . IP_PMTUDISC_PROBE (Linux only).
. IP_PMTUDISC_INTERFACE (Linux only). . IP_PMTUDISC_INTERFACE (Linux only).
. IP_PMTUDISC_OMIT (Linux only). . IP_PMTUDISC_OMIT (Linux only).
. AF_DIVERT (FreeBSD only).
======================================== ========================================
11. Changes to INI File Handling 11. Changes to INI File Handling

View file

@ -19,6 +19,13 @@ const AF_INET = UNKNOWN;
*/ */
const AF_INET6 = UNKNOWN; const AF_INET6 = UNKNOWN;
#endif #endif
#ifdef AF_DIVERT
/**
* @var int
* @cvalue AF_DIVERT
*/
const AF_DIVERT = UNKNOWN;
#endif
/** /**
* @var int * @var int
* @cvalue SOCK_STREAM * @cvalue SOCK_STREAM

View file

@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead. /* This is a generated file, edit the .stub.php file instead.
* Stub hash: add91c303eddf7518566bc7e6c1698d7198c0d4c */ * Stub hash: bf1d22072bd147128a33d82f8b3fc441cf95156a */
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_socket_select, 0, 4, MAY_BE_LONG|MAY_BE_FALSE) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_socket_select, 0, 4, MAY_BE_LONG|MAY_BE_FALSE)
ZEND_ARG_TYPE_INFO(1, read, IS_ARRAY, 1) ZEND_ARG_TYPE_INFO(1, read, IS_ARRAY, 1)
@ -340,6 +340,9 @@ static void register_sockets_symbols(int module_number)
REGISTER_LONG_CONSTANT("AF_INET", AF_INET, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("AF_INET", AF_INET, CONST_PERSISTENT);
#if HAVE_IPV6 #if HAVE_IPV6
REGISTER_LONG_CONSTANT("AF_INET6", AF_INET6, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("AF_INET6", AF_INET6, CONST_PERSISTENT);
#endif
#if defined(AF_DIVERT)
REGISTER_LONG_CONSTANT("AF_DIVERT", AF_DIVERT, CONST_PERSISTENT);
#endif #endif
REGISTER_LONG_CONSTANT("SOCK_STREAM", SOCK_STREAM, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SOCK_STREAM", SOCK_STREAM, CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SOCK_DGRAM", SOCK_DGRAM, CONST_PERSISTENT); REGISTER_LONG_CONSTANT("SOCK_DGRAM", SOCK_DGRAM, CONST_PERSISTENT);