mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Add SO_BPF_EXTENSIONS
flag to socket.
Returns the supported bpf extensions from the kernel. Linux only. Closes GH-8713.
This commit is contained in:
parent
ed6dab2040
commit
d677cc13ce
5 changed files with 89 additions and 0 deletions
1
NEWS
1
NEWS
|
@ -74,6 +74,7 @@ PHP NEWS
|
|||
options. (David Carlier)
|
||||
. Added ancillary data support for FreeBSD. (David Carlier)
|
||||
. Added ancillary data support for NetBSD. (David Carlier)
|
||||
. Added SO_BPF_EXTENSIONS socket option. (David Carlier)
|
||||
|
||||
- Sodium:
|
||||
. Added sodium_crypto_stream_xchacha20_xor_ic(). (Scott)
|
||||
|
|
|
@ -249,6 +249,7 @@ PHP 8.2 UPGRADE NOTES
|
|||
. LOCAL_CREDS_PERSISTENT (FreeBSD)
|
||||
. SCM_CREDS2 (FreeBSD)
|
||||
. LOCAL_CREDS (NetBSD)
|
||||
. SO_BPF_EXTENSIONS
|
||||
|
||||
========================================
|
||||
11. Changes to INI File Handling
|
||||
|
|
|
@ -395,6 +395,7 @@ fcntl.h \
|
|||
grp.h \
|
||||
ieeefp.h \
|
||||
langinfo.h \
|
||||
linux/filter.h \
|
||||
linux/sock_diag.h \
|
||||
malloc.h \
|
||||
poll.h \
|
||||
|
|
|
@ -60,6 +60,11 @@
|
|||
# else
|
||||
# undef SO_MEMINFO
|
||||
# endif
|
||||
# if defined(HAVE_LINUX_FILTER_H)
|
||||
# include <linux/filter.h>
|
||||
# else
|
||||
# undef SO_BPF_EXTENSIONS
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
|
@ -561,6 +566,64 @@ static PHP_MINIT_FUNCTION(sockets)
|
|||
#ifdef SO_MEMINFO
|
||||
REGISTER_LONG_CONSTANT("SO_MEMINFO", SO_MEMINFO, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SO_BPF_EXTENSIONS
|
||||
REGISTER_LONG_CONSTANT("SO_BPF_EXTENSIONS", SO_BPF_EXTENSIONS, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_OFF
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_OFF", SKF_AD_OFF, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_PROTOCOL
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_PROTOCOL", SKF_AD_PROTOCOL, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_PKTTYPE
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_PKTTYPE", SKF_AD_PKTTYPE, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_IFINDEX
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_IFINDEX", SKF_AD_IFINDEX, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_NLATTR
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_NLATTR", SKF_AD_NLATTR, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_NLATTR_NEST
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_NLATTR_NEST", SKF_AD_NLATTR_NEST, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_MARK
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_MARK", SKF_AD_MARK, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_QUEUE
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_QUEUE", SKF_AD_QUEUE, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_HATYPE
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_HATYPE", SKF_AD_HATYPE, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_RXHASH
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_RXHASH", SKF_AD_RXHASH, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_CPU
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_CPU", SKF_AD_CPU, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_ALU_XOR_X
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_ALU_XOR_X", SKF_AD_ALU_XOR_X, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_VLAN_TAG
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_VLAN_TAG", SKF_AD_VLAN_TAG, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_VLAN_TAG_PRESENT
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_VLAN_TAG_PRESENT", SKF_AD_VLAN_TAG_PRESENT, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_PAY_OFFSET
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_PAY_OFFSET", SKF_AD_PAY_OFFSET, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_RANDOM
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_RANDOM", SKF_AD_RANDOM, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_VLAN_TPID
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_VLAN_TPID", SKF_AD_VLAN_TPID, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef SKF_AD_MAX
|
||||
REGISTER_LONG_CONSTANT("SKF_AD_MAX", SKF_AD_MAX, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
|
||||
#ifdef TCP_NODELAY
|
||||
REGISTER_LONG_CONSTANT("TCP_NODELAY", TCP_NODELAY, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
|
|
23
ext/sockets/tests/socket_bpf_extensions.phpt
Normal file
23
ext/sockets/tests/socket_bpf_extensions.phpt
Normal file
|
@ -0,0 +1,23 @@
|
|||
--TEST--
|
||||
SO_BPF_EXTENSIONS socket_getopt test
|
||||
--EXTENSIONS--
|
||||
sockets
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!defined("SO_BPF_EXTENSIONS")) {
|
||||
die("skip SO_BOF_EXTENSIONS");
|
||||
}
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
|
||||
if (!$socket) {
|
||||
die('Unable to create AF_INET socket [socket]');
|
||||
}
|
||||
$flags = socket_getopt( $socket, SOL_SOCKET, SO_BPF_EXTENSIONS);
|
||||
if ($flags == false) die("socket_getopt");
|
||||
echo "extensions supported flag $flags";
|
||||
socket_close($socket);
|
||||
?>
|
||||
--EXPECTF--
|
||||
extensions supported flag %d
|
Loading…
Add table
Add a link
Reference in a new issue