Mercurial > hg > nginx-quic
annotate auto/os/linux @ 8717:e06283038ec8 quic
QUIC: clear SSL_OP_ENABLE_MIDDLEBOX_COMPAT on SSL context switch.
The SSL_OP_ENABLE_MIDDLEBOX_COMPAT option is provided by QuicTLS and enabled
by default in the newly created SSL contexts. SSL_set_quic_method() is used
to clear it, which is required for SSL handshake to work on QUIC connections.
Switching context in the ngx_http_ssl_servername() SNI callback overrides SSL
options from the new SSL context. This results in the option set again.
Fix is to explicitly clear it when switching to another SSL context.
Initially reported here (in Russian):
http://mailman.nginx.org/pipermail/nginx-ru/2021-November/063989.html
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Tue, 07 Dec 2021 15:49:51 +0300 |
parents | bb5152ed045b |
children | 9ec96ceaf484 |
rev | line source |
---|---|
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
355
diff
changeset
|
1 |
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
355
diff
changeset
|
2 # Copyright (C) Igor Sysoev |
4412 | 3 # Copyright (C) Nginx, Inc. |
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
355
diff
changeset
|
4 |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
5 |
509 | 6 have=NGX_LINUX . auto/have_headers |
455 | 7 |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
8 CORE_INCS="$UNIX_INCS" |
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
9 CORE_DEPS="$UNIX_DEPS $LINUX_DEPS" |
249
2a0540287298
nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
248
diff
changeset
|
10 CORE_SRCS="$UNIX_SRCS $LINUX_SRCS" |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
11 |
455 | 12 ngx_spacer=' |
13 ' | |
283
8f65fee68270
nginx-0.0.2-2004-03-10-20:55:19 import
Igor Sysoev <igor@sysoev.ru>
parents:
259
diff
changeset
|
14 |
2599
57b65bcc8da6
fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents:
2598
diff
changeset
|
15 cc_aux_flags="$CC_AUX_FLAGS" |
57b65bcc8da6
fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents:
2598
diff
changeset
|
16 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
17 |
461 | 18 |
351
af4c6b45a687
nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
298
diff
changeset
|
19 # Linux kernel version |
af4c6b45a687
nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
298
diff
changeset
|
20 |
1927
220c2515a9c9
use uname instead of often outdated header file
Igor Sysoev <igor@sysoev.ru>
parents:
1926
diff
changeset
|
21 version=$((`uname -r \ |
4002
4068898a6a7c
Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents:
3286
diff
changeset
|
22 | sed -n -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/ \ |
4068898a6a7c
Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents:
3286
diff
changeset
|
23 \1*256*256+\2*256+\3/p' \ |
4068898a6a7c
Configure: catch up with new Linux version numbering (ticket #5).
Maxim Dounin <mdounin@mdounin.ru>
parents:
3286
diff
changeset
|
24 -e 's/^\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1*256*256+\2*256/p'`)) |
351
af4c6b45a687
nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
298
diff
changeset
|
25 |
477 | 26 version=${version:-0} |
27 | |
351
af4c6b45a687
nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents:
298
diff
changeset
|
28 |
3286
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
29 # posix_fadvise64() had been implemented in 2.5.60 |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
30 |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
31 if [ $version -lt 132412 ]; then |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
32 have=NGX_HAVE_POSIX_FADVISE . auto/nohave |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
33 fi |
7c80f584c3a9
posix_fadvise64() had been implemented in Linux 2.5.60
Igor Sysoev <igor@sysoev.ru>
parents:
3039
diff
changeset
|
34 |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
35 # epoll, EPOLLET version |
245
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
36 |
455 | 37 ngx_feature="epoll" |
469 | 38 ngx_feature_name="NGX_HAVE_EPOLL" |
591 | 39 ngx_feature_run=yes |
455 | 40 ngx_feature_incs="#include <sys/epoll.h>" |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
629
diff
changeset
|
41 ngx_feature_path= |
455 | 42 ngx_feature_libs= |
4543
51744fa997c7
Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents:
4412
diff
changeset
|
43 ngx_feature_test="int efd = 0; |
455 | 44 struct epoll_event ee; |
45 ee.events = EPOLLIN|EPOLLOUT|EPOLLET; | |
46 ee.data.ptr = NULL; | |
6622
e393c0bf53d3
Configure: fix build with -Werror=unused-but-set-variable.
Piotr Sikora <piotrsikora@google.com>
parents:
6126
diff
changeset
|
47 (void) ee; |
455 | 48 efd = epoll_create(100); |
49 if (efd == -1) return 1;" | |
50 . auto/feature | |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
51 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
52 if [ $ngx_found = yes ]; then |
469 | 53 have=NGX_HAVE_CLEAR_EVENT . auto/have |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
54 CORE_SRCS="$CORE_SRCS $EPOLL_SRCS" |
245
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
55 EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE" |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
56 EVENT_FOUND=YES |
5372
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
57 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
58 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
59 # EPOLLRDHUP appeared in Linux 2.6.17, glibc 2.8 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
60 |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
61 ngx_feature="EPOLLRDHUP" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
62 ngx_feature_name="NGX_HAVE_EPOLLRDHUP" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
63 ngx_feature_run=no |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
64 ngx_feature_incs="#include <sys/epoll.h>" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
65 ngx_feature_path= |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
66 ngx_feature_libs= |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
67 ngx_feature_test="int efd = 0, fd = 0; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
68 struct epoll_event ee; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
69 ee.events = EPOLLIN|EPOLLRDHUP|EPOLLET; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
70 ee.data.ptr = NULL; |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
71 epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)" |
36b58ddb566d
Events: support for EPOLLRDHUP (ticket #320).
Valentin Bartenev <vbart@nginx.com>
parents:
5356
diff
changeset
|
72 . auto/feature |
6635
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
73 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
74 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
75 # EPOLLEXCLUSIVE appeared in Linux 4.5, glibc 2.24 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
76 |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
77 ngx_feature="EPOLLEXCLUSIVE" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
78 ngx_feature_name="NGX_HAVE_EPOLLEXCLUSIVE" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
79 ngx_feature_run=no |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
80 ngx_feature_incs="#include <sys/epoll.h>" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
81 ngx_feature_path= |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
82 ngx_feature_libs= |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
83 ngx_feature_test="int efd = 0, fd = 0; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
84 struct epoll_event ee; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
85 ee.events = EPOLLIN|EPOLLEXCLUSIVE; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
86 ee.data.ptr = NULL; |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
87 epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ee)" |
6acaa638fa07
Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents:
6622
diff
changeset
|
88 . auto/feature |
8394
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
89 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
90 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
91 # eventfd() |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
92 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
93 ngx_feature="eventfd()" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
94 ngx_feature_name="NGX_HAVE_EVENTFD" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
95 ngx_feature_run=no |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
96 ngx_feature_incs="#include <sys/eventfd.h>" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
97 ngx_feature_path= |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
98 ngx_feature_libs= |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
99 ngx_feature_test="(void) eventfd(0, 0)" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
100 . auto/feature |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
101 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
102 if [ $ngx_found = yes ]; then |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
103 have=NGX_HAVE_SYS_EVENTFD_H . auto/have |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
104 fi |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
105 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
106 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
107 if [ $ngx_found = no ]; then |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
108 |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
109 ngx_feature="eventfd() (SYS_eventfd)" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
110 ngx_feature_incs="#include <sys/syscall.h>" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
111 ngx_feature_test="(void) SYS_eventfd" |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
112 . auto/feature |
e2e9e0fae747
Configure: fixed --test-build-epoll on FreeBSD 13.
Maxim Dounin <mdounin@mdounin.ru>
parents:
7327
diff
changeset
|
113 fi |
245
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
114 fi |
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
115 |
e6c005b66b3a
nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents:
198
diff
changeset
|
116 |
5356
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
117 # O_PATH and AT_EMPTY_PATH were introduced in 2.6.39, glibc 2.14 |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
118 |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
119 ngx_feature="O_PATH" |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
120 ngx_feature_name="NGX_HAVE_O_PATH" |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
121 ngx_feature_run=no |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
122 ngx_feature_incs="#include <sys/types.h> |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
123 #include <sys/stat.h> |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
124 #include <fcntl.h>" |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
125 ngx_feature_path= |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
126 ngx_feature_libs= |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
127 ngx_feature_test="int fd; struct stat sb; |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
128 fd = openat(AT_FDCWD, \".\", O_PATH|O_DIRECTORY|O_NOFOLLOW); |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
129 if (fstatat(fd, \"\", &sb, AT_EMPTY_PATH) != 0) return 1" |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
130 . auto/feature |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
131 |
acd51b0f6fd4
Disable symlinks: use O_PATH to open path components.
Valentin Bartenev <vbart@nginx.com>
parents:
4549
diff
changeset
|
132 |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
133 # sendfile() |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
134 |
2599
57b65bcc8da6
fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents:
2598
diff
changeset
|
135 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE" |
455 | 136 ngx_feature="sendfile()" |
469 | 137 ngx_feature_name="NGX_HAVE_SENDFILE" |
591 | 138 ngx_feature_run=yes |
139 ngx_feature_incs="#include <sys/sendfile.h> | |
2598 | 140 #include <errno.h>" |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
629
diff
changeset
|
141 ngx_feature_path= |
455 | 142 ngx_feature_libs= |
143 ngx_feature_test="int s = 0, fd = 1; | |
144 ssize_t n; off_t off = 0; | |
591 | 145 n = sendfile(s, fd, &off, 1); |
146 if (n == -1 && errno == ENOSYS) return 1" | |
455 | 147 . auto/feature |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
148 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
149 if [ $ngx_found = yes ]; then |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
150 CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS" |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
151 fi |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
152 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
153 |
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
245
diff
changeset
|
154 # sendfile64() |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
155 |
2599
57b65bcc8da6
fix Linux sendfile32() test broken in 0.3.36
Igor Sysoev <igor@sysoev.ru>
parents:
2598
diff
changeset
|
156 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
455 | 157 ngx_feature="sendfile64()" |
469 | 158 ngx_feature_name="NGX_HAVE_SENDFILE64" |
591 | 159 ngx_feature_run=yes |
160 ngx_feature_incs="#include <sys/sendfile.h> | |
2598 | 161 #include <errno.h>" |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
629
diff
changeset
|
162 ngx_feature_path= |
455 | 163 ngx_feature_libs= |
164 ngx_feature_test="int s = 0, fd = 1; | |
165 ssize_t n; off_t off = 0; | |
591 | 166 n = sendfile(s, fd, &off, 1); |
167 if (n == -1 && errno == ENOSYS) return 1" | |
455 | 168 . auto/feature |
196
11fbd0fc041d
nginx-0.0.1-2003-11-26-18:42:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
169 |
253
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
249
diff
changeset
|
170 |
455 | 171 ngx_include="sys/prctl.h"; . auto/include |
172 | |
253
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
249
diff
changeset
|
173 # prctl(PR_SET_DUMPABLE) |
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
249
diff
changeset
|
174 |
455 | 175 ngx_feature="prctl(PR_SET_DUMPABLE)" |
469 | 176 ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE" |
455 | 177 ngx_feature_run=yes |
178 ngx_feature_incs="#include <sys/prctl.h>" | |
875
7af8276b1c2f
test PCRE in FreeBSD, Linux, and NetBSD
Igor Sysoev <igor@sysoev.ru>
parents:
629
diff
changeset
|
179 ngx_feature_path= |
455 | 180 ngx_feature_libs= |
181 ngx_feature_test="if (prctl(PR_SET_DUMPABLE, 1, 0, 0, 0) == -1) return 1" | |
182 . auto/feature | |
577 | 183 |
184 | |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
185 # prctl(PR_SET_KEEPCAPS) |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
186 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
187 ngx_feature="prctl(PR_SET_KEEPCAPS)" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
188 ngx_feature_name="NGX_HAVE_PR_SET_KEEPCAPS" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
189 ngx_feature_run=yes |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
190 ngx_feature_incs="#include <sys/prctl.h>" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
191 ngx_feature_path= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
192 ngx_feature_libs= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
193 ngx_feature_test="if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) == -1) return 1" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
194 . auto/feature |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
195 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
196 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
197 # capabilities |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
198 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
199 ngx_feature="capabilities" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
200 ngx_feature_name="NGX_HAVE_CAPABILITIES" |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
201 ngx_feature_run=no |
7175
56923e8e01a5
Improved the capabilities feature detection.
Roman Arutyunyan <arut@nginx.com>
parents:
7174
diff
changeset
|
202 ngx_feature_incs="#include <linux/capability.h> |
56923e8e01a5
Improved the capabilities feature detection.
Roman Arutyunyan <arut@nginx.com>
parents:
7174
diff
changeset
|
203 #include <sys/syscall.h>" |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
204 ngx_feature_path= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
205 ngx_feature_libs= |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
206 ngx_feature_test="struct __user_cap_data_struct data; |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
207 struct __user_cap_header_struct header; |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
208 |
7176
7f28b61c92f0
Fixed capabilities version.
Roman Arutyunyan <arut@nginx.com>
parents:
7175
diff
changeset
|
209 header.version = _LINUX_CAPABILITY_VERSION_1; |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
210 data.effective = CAP_TO_MASK(CAP_NET_RAW); |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
211 data.permitted = 0; |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
212 |
7327
f7e79596baf2
Configure: fixed compiler warnings with "-Wall -Wextra".
Sergey Kandaurov <pluknet@nginx.com>
parents:
7176
diff
changeset
|
213 (void) header; |
f7e79596baf2
Configure: fixed compiler warnings with "-Wall -Wextra".
Sergey Kandaurov <pluknet@nginx.com>
parents:
7176
diff
changeset
|
214 (void) data; |
7175
56923e8e01a5
Improved the capabilities feature detection.
Roman Arutyunyan <arut@nginx.com>
parents:
7174
diff
changeset
|
215 (void) SYS_capset" |
7174
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
216 . auto/feature |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
217 |
84e53e4735a4
Retain CAP_NET_RAW capability for transparent proxying.
Roman Arutyunyan <arut@nginx.com>
parents:
7010
diff
changeset
|
218 |
2660
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
219 # crypt_r() |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
220 |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
221 ngx_feature="crypt_r()" |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
222 ngx_feature_name="NGX_HAVE_GNU_CRYPT_R" |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
223 ngx_feature_run=no |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
224 ngx_feature_incs="#include <crypt.h>" |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
225 ngx_feature_path= |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
226 ngx_feature_libs=-lcrypt |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
227 ngx_feature_test="struct crypt_data cd; |
4543
51744fa997c7
Fixed compilation warnings in configuration C tests.
Ruslan Ermilov <ru@nginx.com>
parents:
4412
diff
changeset
|
228 crypt_r(\"key\", \"salt\", &cd);" |
2660
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
229 . auto/feature |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
230 |
2ca36a62c8a1
autoconfigure crypt_r(): uclibc has no crypt_r()
Igor Sysoev <igor@sysoev.ru>
parents:
2615
diff
changeset
|
231 |
2615 | 232 ngx_include="sys/vfs.h"; . auto/include |
233 | |
234 | |
2747
ee5de4f120f4
fix GNU strerror_r() detection, the bug has been inroduced in r2600
Igor Sysoev <igor@sysoev.ru>
parents:
2660
diff
changeset
|
235 CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" |
8268
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
236 |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
237 |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
238 # (E)BPF |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
239 |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
240 ngx_feature="BPF support" |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
241 ngx_feature_name="NGX_HAVE_BPF" |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
242 ngx_feature_run=no |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
243 ngx_feature_incs="#include <linux/bpf.h> |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
244 #include <sys/syscall.h>" |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
245 ngx_feature_path= |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
246 ngx_feature_libs= |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
247 ngx_feature_test=" |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
248 union bpf_attr attr = { 0 }; |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
249 /* only declare BPF support if all required features found */ |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
250 attr.map_flags = 0; |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
251 attr.map_type = BPF_MAP_TYPE_SOCKHASH; |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
252 syscall(__NR_bpf, 0, &attr, 0);" |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
253 |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
254 . auto/feature |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
255 |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
256 if [ $ngx_found = yes ]; then |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
257 BPF_FOUND=YES |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
258 |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
259 CORE_SRCS="$CORE_SRCS src/core/ngx_bpf.c" |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
260 CORE_DEPS="$CORE_DEPS src/core/ngx_bpf.h" |
d3747ba486e7
Core: added interface to linux bpf() system call.
Vladimir Homutov <vl@nginx.com>
parents:
7327
diff
changeset
|
261 fi |
8269
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
262 |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
263 |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
264 # SO_COOKIE socket option |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
265 |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
266 ngx_feature="SO_COOKIE" |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
267 ngx_feature_name="NGX_HAVE_SO_COOKIE" |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
268 ngx_feature_run=no |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
269 ngx_feature_incs="#include <sys/socket.h> |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
270 #include <stdint.h>" |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
271 ngx_feature_path= |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
272 ngx_feature_libs= |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
273 ngx_feature_test="socklen_t optlen = sizeof(uint64_t); |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
274 uint64_t cookie; |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
275 getsockopt(0, SOL_SOCKET, SO_COOKIE, &cookie, &optlen)" |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
276 . auto/feature |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
277 |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
278 if [ $ngx_found = yes ]; then |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
279 SO_COOKIE_FOUND=YES |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
280 have=NGX_HAVE_SO_COOKIE . auto/have |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
281 fi |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
282 |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
283 |
8512
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
284 # UDP_SEGMENT socket option is used for segmentation offloading |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
285 |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
286 ngx_feature="UDP_SEGMENT" |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
287 ngx_feature_name="NGX_HAVE_UDP_SEGMENT" |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
288 ngx_feature_run=no |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
289 ngx_feature_incs="#include <sys/socket.h> |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
290 #include <stdint.h> |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
291 #include <netinet/udp.h>" |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
292 ngx_feature_path= |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
293 ngx_feature_libs= |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
294 ngx_feature_test="socklen_t optlen = sizeof(int); |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
295 int val; |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
296 getsockopt(0, SOL_UDP, UDP_SEGMENT, &val, &optlen)" |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
297 . auto/feature |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
298 |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
299 if [ $ngx_found = yes ]; then |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
300 UDP_SEGMENT_FOUND=YES |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
301 have=NGX_HAVE_UDP_SEGMENT . auto/have |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
302 fi |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
303 |
bb5152ed045b
QUIC: added support for segmentation offloading.
Vladimir Homutov <vl@nginx.com>
parents:
8401
diff
changeset
|
304 |
8269
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
305 # ngx_quic_bpf module uses sockhash to select socket from reuseport group, |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
306 # support appeared in Linux-5.7: |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
307 # |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
308 # commit: 9fed9000c5c6cacfcaaa48aff74818072ae294cc |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
309 # bpf: Allow selecting reuseport socket from a SOCKMAP/SOCKHASH |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
310 # |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
311 if [ $NGX_QUIC_BPF$BPF_FOUND = YESYES ]; then |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
312 echo $ngx_n "checking for kernel with reuseport/BPF support...$ngx_c" |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
313 if [ $version -lt 329472 ]; then |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
314 echo " not found (at least 5.7 is required)" |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
315 NGX_QUIC_BPF=NO |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
316 else |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
317 echo " found" |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
318 fi |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
319 fi |
7df607cb2d11
QUIC: ngx_quic_bpf module.
Vladimir Homutov <vl@nginx.com>
parents:
8268
diff
changeset
|
320 |