Stream: the "setfib" parameter of the "listen" directive.

The FreeBSD SO_SETFIB support.
This commit is contained in:
Sergey Kandaurov 2024-03-22 14:53:19 +04:00
parent 04b9bfe55d
commit bd190d825c
3 changed files with 26 additions and 0 deletions

View File

@ -1033,6 +1033,10 @@ ngx_stream_add_listening(ngx_conf_t *cf, ngx_stream_conf_addr_t *addr)
ls->ipv6only = addr->opt.ipv6only; ls->ipv6only = addr->opt.ipv6only;
#endif #endif
#if (NGX_HAVE_SETFIB)
ls->setfib = addr->opt.setfib;
#endif
#if (NGX_HAVE_TCP_FASTOPEN) #if (NGX_HAVE_TCP_FASTOPEN)
ls->fastopen = addr->opt.fastopen; ls->fastopen = addr->opt.fastopen;
#endif #endif

View File

@ -62,6 +62,9 @@ typedef struct {
int rcvbuf; int rcvbuf;
int sndbuf; int sndbuf;
int type; int type;
#if (NGX_HAVE_SETFIB)
int setfib;
#endif
#if (NGX_HAVE_TCP_FASTOPEN) #if (NGX_HAVE_TCP_FASTOPEN)
int fastopen; int fastopen;
#endif #endif

View File

@ -920,6 +920,9 @@ ngx_stream_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
lsopt.type = SOCK_STREAM; lsopt.type = SOCK_STREAM;
lsopt.rcvbuf = -1; lsopt.rcvbuf = -1;
lsopt.sndbuf = -1; lsopt.sndbuf = -1;
#if (NGX_HAVE_SETFIB)
lsopt.setfib = -1;
#endif
#if (NGX_HAVE_TCP_FASTOPEN) #if (NGX_HAVE_TCP_FASTOPEN)
lsopt.fastopen = -1; lsopt.fastopen = -1;
#endif #endif
@ -949,6 +952,22 @@ ngx_stream_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
continue; continue;
} }
#if (NGX_HAVE_SETFIB)
if (ngx_strncmp(value[i].data, "setfib=", 7) == 0) {
lsopt.setfib = ngx_atoi(value[i].data + 7, value[i].len - 7);
lsopt.set = 1;
lsopt.bind = 1;
if (lsopt.setfib == NGX_ERROR) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"invalid setfib \"%V\"", &value[i]);
return NGX_CONF_ERROR;
}
continue;
}
#endif
#if (NGX_HAVE_TCP_FASTOPEN) #if (NGX_HAVE_TCP_FASTOPEN)
if (ngx_strncmp(value[i].data, "fastopen=", 9) == 0) { if (ngx_strncmp(value[i].data, "fastopen=", 9) == 0) {
lsopt.fastopen = ngx_atoi(value[i].data + 9, value[i].len - 9); lsopt.fastopen = ngx_atoi(value[i].data + 9, value[i].len - 9);