Skip to content

Commit f78674b

Browse files
committed
use false case as an alias to detach filter
1 parent 6ae87a9 commit f78674b

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

ext/sockets/sockets.c

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,8 @@ static PHP_MINIT_FUNCTION(sockets)
512512
#endif
513513
#ifdef SO_ATTACH_REUSEPORT_CBPF
514514
REGISTER_LONG_CONSTANT("SO_ATTACH_REUSEPORT_CBPF", SO_ATTACH_REUSEPORT_CBPF, CONST_CS | CONST_PERSISTENT);
515+
REGISTER_LONG_CONSTANT("SO_DETACH_FILTER", SO_DETACH_FILTER, CONST_CS | CONST_PERSISTENT);
516+
REGISTER_LONG_CONSTANT("SO_DETACH_BPF", SO_DETACH_BPF, CONST_CS | CONST_PERSISTENT);
515517
#endif
516518
REGISTER_LONG_CONSTANT("SO_KEEPALIVE", SO_KEEPALIVE, CONST_CS | CONST_PERSISTENT);
517519
REGISTER_LONG_CONSTANT("SO_DONTROUTE", SO_DONTROUTE, CONST_CS | CONST_PERSISTENT);
@@ -2015,18 +2017,22 @@ PHP_FUNCTION(socket_set_option)
20152017
case SO_ATTACH_REUSEPORT_CBPF: {
20162018
convert_to_long(arg4);
20172019
if (!Z_LVAL_P(arg4)) {
2018-
RETURN_FALSE;
2020+
ov = 1;
2021+
optlen = sizeof(ov);
2022+
opt_ptr = &ov;
2023+
optname = SO_DETACH_BPF;
2024+
} else {
2025+
static struct sock_filter cbpf[] = {
2026+
BPF_STMT((BPF_LD|BPF_W|BPF_ABS), (uint32_t)(SKF_AD_OFF+SKF_AD_CPU)),
2027+
BPF_STMT((BPF_RET|BPF_A), 0),
2028+
};
2029+
static struct sock_fprog bpfprog = {
2030+
.len = (sizeof(cbpf) / sizeof(cbpf[0])),
2031+
.filter = cbpf,
2032+
};
2033+
optlen = sizeof(bpfprog);
2034+
opt_ptr = &bpfprog;
20192035
}
2020-
static struct sock_filter cbpf[] = {
2021-
BPF_STMT((BPF_LD|BPF_W|BPF_ABS), (uint32_t)(SKF_AD_OFF+SKF_AD_CPU)),
2022-
BPF_STMT((BPF_RET|BPF_A), 0),
2023-
};
2024-
static struct sock_fprog bpfprog = {
2025-
.len = (sizeof(cbpf) / sizeof(cbpf[0])),
2026-
.filter = cbpf,
2027-
};
2028-
optlen = sizeof(bpfprog);
2029-
opt_ptr = &bpfprog;
20302036
break;
20312037
}
20322038
#endif

0 commit comments

Comments
 (0)