Welcome! Log In Create A New Profile

Advanced

[nginx] Modules compatibility: removed unneeded IPV6_V6ONLY checks.

October 03, 2016 09:02AM
details: http://hg.nginx.org/nginx/rev/cebf5fed00bf
branches:
changeset: 6719:cebf5fed00bf
user: Maxim Dounin <mdounin@mdounin.ru>
date: Mon Oct 03 15:58:25 2016 +0300
description:
Modules compatibility: removed unneeded IPV6_V6ONLY checks.

The IPV6_V6ONLY macro is now checked only while parsing appropriate flag
and when using the macro.

The ipv6only field in listen structures is always initialized to 1,
even if not supported on a given platform. This is expected to prevent
a module compiled without IPV6_V6ONLY from accidentally creating dual
sockets if loaded into main binary with proper IPV6_V6ONLY support.

diffstat:

src/core/ngx_connection.h | 2 +-
src/core/ngx_module.h | 4 -
src/http/ngx_http.c | 134 ++++++++++++++++++------------------
src/http/ngx_http_core_module.c | 2 +-
src/http/ngx_http_core_module.h | 2 +-
src/mail/ngx_mail.c | 2 +-
src/mail/ngx_mail.h | 2 +-
src/mail/ngx_mail_core_module.c | 2 +-
src/stream/ngx_stream.c | 2 +-
src/stream/ngx_stream.h | 2 +-
src/stream/ngx_stream_core_module.c | 2 +-
11 files changed, 76 insertions(+), 80 deletions(-)

diffs (281 lines):

diff -r bdf64ae3376b -r cebf5fed00bf src/core/ngx_connection.h
--- a/src/core/ngx_connection.h Mon Oct 03 15:58:22 2016 +0300
+++ b/src/core/ngx_connection.h Mon Oct 03 15:58:25 2016 +0300
@@ -66,7 +66,7 @@ struct ngx_listening_s {
unsigned addr_ntop:1;
unsigned wildcard:1;

-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
+#if (NGX_HAVE_INET6)
unsigned ipv6only:1;
#endif
#if (NGX_HAVE_REUSEPORT)
diff -r bdf64ae3376b -r cebf5fed00bf src/core/ngx_module.h
--- a/src/core/ngx_module.h Mon Oct 03 15:58:22 2016 +0300
+++ b/src/core/ngx_module.h Mon Oct 03 15:58:25 2016 +0300
@@ -71,11 +71,7 @@
#define NGX_MODULE_SIGNATURE_8 "0"
#endif

-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
#define NGX_MODULE_SIGNATURE_9 "1"
-#else
-#define NGX_MODULE_SIGNATURE_9 "0"
-#endif

#if (NGX_HAVE_REUSEPORT)
#define NGX_MODULE_SIGNATURE_10 "1"
diff -r bdf64ae3376b -r cebf5fed00bf src/http/ngx_http.c
--- a/src/http/ngx_http.c Mon Oct 03 15:58:22 2016 +0300
+++ b/src/http/ngx_http.c Mon Oct 03 15:58:25 2016 +0300
@@ -1756,7 +1756,7 @@ ngx_http_add_listening(ngx_conf_t *cf, n
ls->deferred_accept = addr->opt.deferred_accept;
#endif

-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
+#if (NGX_HAVE_INET6)
ls->ipv6only = addr->opt.ipv6only;
#endif

@@ -1824,72 +1824,7 @@ ngx_http_add_addrs(ngx_conf_t *cf, ngx_h
return NGX_ERROR;
}

- addrs[i].conf.virtual_names = vn;
-
- vn->names.hash = addr[i].hash;
- vn->names.wc_head = addr[i].wc_head;
- vn->names.wc_tail = addr[i].wc_tail;
-#if (NGX_PCRE)
- vn->nregex = addr[i].nregex;
- vn->regex = addr[i].regex;
-#endif
- }
-
- return NGX_OK;
-}
-
-
-#if (NGX_HAVE_INET6)
-
-static ngx_int_t
-ngx_http_add_addrs6(ngx_conf_t *cf, ngx_http_port_t *hport,
- ngx_http_conf_addr_t *addr)
-{
- ngx_uint_t i;
- ngx_http_in6_addr_t *addrs6;
- struct sockaddr_in6 *sin6;
- ngx_http_virtual_names_t *vn;
-
- hport->addrs = ngx_pcalloc(cf->pool,
- hport->naddrs * sizeof(ngx_http_in6_addr_t));
- if (hport->addrs == NULL) {
- return NGX_ERROR;
- }
-
- addrs6 = hport->addrs;
-
- for (i = 0; i < hport->naddrs; i++) {
-
- sin6 = &addr[i].opt.sockaddr.sockaddr_in6;
- addrs6[i].addr6 = sin6->sin6_addr;
- addrs6[i].conf.default_server = addr[i].default_server;
-#if (NGX_HTTP_SSL)
- addrs6[i].conf.ssl = addr[i].opt.ssl;
-#endif
-#if (NGX_HTTP_V2)
- addrs6[i].conf.http2 = addr[i].opt.http2;
-#endif
- addrs6[i].conf.proxy_protocol = addr[i].opt.proxy_protocol;
-
- if (addr[i].hash.buckets == NULL
- && (addr[i].wc_head == NULL
- || addr[i].wc_head->hash.buckets == NULL)
- && (addr[i].wc_tail == NULL
- || addr[i].wc_tail->hash.buckets == NULL)
-#if (NGX_PCRE)
- && addr[i].nregex == 0
-#endif
- )
- {
- continue;
- }
-
- vn = ngx_palloc(cf->pool, sizeof(ngx_http_virtual_names_t));
- if (vn == NULL) {
- return NGX_ERROR;
- }
-
- addrs6[i].conf.virtual_names = vn;
+ addrs[i].conf.virtual_names = vn;

vn->names.hash = addr[i].hash;
vn->names.wc_head = addr[i].wc_head;
@@ -1903,6 +1838,71 @@ ngx_http_add_addrs6(ngx_conf_t *cf, ngx_
return NGX_OK;
}

+
+#if (NGX_HAVE_INET6)
+
+static ngx_int_t
+ngx_http_add_addrs6(ngx_conf_t *cf, ngx_http_port_t *hport,
+ ngx_http_conf_addr_t *addr)
+{
+ ngx_uint_t i;
+ ngx_http_in6_addr_t *addrs6;
+ struct sockaddr_in6 *sin6;
+ ngx_http_virtual_names_t *vn;
+
+ hport->addrs = ngx_pcalloc(cf->pool,
+ hport->naddrs * sizeof(ngx_http_in6_addr_t));
+ if (hport->addrs == NULL) {
+ return NGX_ERROR;
+ }
+
+ addrs6 = hport->addrs;
+
+ for (i = 0; i < hport->naddrs; i++) {
+
+ sin6 = &addr[i].opt.sockaddr.sockaddr_in6;
+ addrs6[i].addr6 = sin6->sin6_addr;
+ addrs6[i].conf.default_server = addr[i].default_server;
+#if (NGX_HTTP_SSL)
+ addrs6[i].conf.ssl = addr[i].opt.ssl;
+#endif
+#if (NGX_HTTP_V2)
+ addrs6[i].conf.http2 = addr[i].opt.http2;
+#endif
+ addrs6[i].conf.proxy_protocol = addr[i].opt.proxy_protocol;
+
+ if (addr[i].hash.buckets == NULL
+ && (addr[i].wc_head == NULL
+ || addr[i].wc_head->hash.buckets == NULL)
+ && (addr[i].wc_tail == NULL
+ || addr[i].wc_tail->hash.buckets == NULL)
+#if (NGX_PCRE)
+ && addr[i].nregex == 0
+#endif
+ )
+ {
+ continue;
+ }
+
+ vn = ngx_palloc(cf->pool, sizeof(ngx_http_virtual_names_t));
+ if (vn == NULL) {
+ return NGX_ERROR;
+ }
+
+ addrs6[i].conf.virtual_names = vn;
+
+ vn->names.hash = addr[i].hash;
+ vn->names.wc_head = addr[i].wc_head;
+ vn->names.wc_tail = addr[i].wc_tail;
+#if (NGX_PCRE)
+ vn->nregex = addr[i].nregex;
+ vn->regex = addr[i].regex;
+#endif
+ }
+
+ return NGX_OK;
+}
+
#endif


diff -r bdf64ae3376b -r cebf5fed00bf src/http/ngx_http_core_module.c
--- a/src/http/ngx_http_core_module.c Mon Oct 03 15:58:22 2016 +0300
+++ b/src/http/ngx_http_core_module.c Mon Oct 03 15:58:25 2016 +0300
@@ -3939,7 +3939,7 @@ ngx_http_core_listen(ngx_conf_t *cf, ngx
lsopt.fastopen = -1;
#endif
lsopt.wildcard = u.wildcard;
-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
+#if (NGX_HAVE_INET6)
lsopt.ipv6only = 1;
#endif

diff -r bdf64ae3376b -r cebf5fed00bf src/http/ngx_http_core_module.h
--- a/src/http/ngx_http_core_module.h Mon Oct 03 15:58:22 2016 +0300
+++ b/src/http/ngx_http_core_module.h Mon Oct 03 15:58:25 2016 +0300
@@ -69,7 +69,7 @@ typedef struct {
unsigned ssl:1;
#endif
unsigned http2:1;
-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
+#if (NGX_HAVE_INET6)
unsigned ipv6only:1;
#endif
#if (NGX_HAVE_REUSEPORT)
diff -r bdf64ae3376b -r cebf5fed00bf src/mail/ngx_mail.c
--- a/src/mail/ngx_mail.c Mon Oct 03 15:58:22 2016 +0300
+++ b/src/mail/ngx_mail.c Mon Oct 03 15:58:25 2016 +0300
@@ -341,7 +341,7 @@ ngx_mail_optimize_servers(ngx_conf_t *cf
ls->keepcnt = addr[i].opt.tcp_keepcnt;
#endif

-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
+#if (NGX_HAVE_INET6)
ls->ipv6only = addr[i].opt.ipv6only;
#endif

diff -r bdf64ae3376b -r cebf5fed00bf src/mail/ngx_mail.h
--- a/src/mail/ngx_mail.h Mon Oct 03 15:58:22 2016 +0300
+++ b/src/mail/ngx_mail.h Mon Oct 03 15:58:25 2016 +0300
@@ -38,7 +38,7 @@ typedef struct {
#if (NGX_MAIL_SSL)
unsigned ssl:1;
#endif
-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
+#if (NGX_HAVE_INET6)
unsigned ipv6only:1;
#endif
unsigned so_keepalive:2;
diff -r bdf64ae3376b -r cebf5fed00bf src/mail/ngx_mail_core_module.c
--- a/src/mail/ngx_mail_core_module.c Mon Oct 03 15:58:22 2016 +0300
+++ b/src/mail/ngx_mail_core_module.c Mon Oct 03 15:58:25 2016 +0300
@@ -353,7 +353,7 @@ ngx_mail_core_listen(ngx_conf_t *cf, ngx
ls->wildcard = u.wildcard;
ls->ctx = cf->ctx;

-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
+#if (NGX_HAVE_INET6)
ls->ipv6only = 1;
#endif

diff -r bdf64ae3376b -r cebf5fed00bf src/stream/ngx_stream.c
--- a/src/stream/ngx_stream.c Mon Oct 03 15:58:22 2016 +0300
+++ b/src/stream/ngx_stream.c Mon Oct 03 15:58:25 2016 +0300
@@ -506,7 +506,7 @@ ngx_stream_optimize_servers(ngx_conf_t *
ls->keepcnt = addr[i].opt.tcp_keepcnt;
#endif

-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
+#if (NGX_HAVE_INET6)
ls->ipv6only = addr[i].opt.ipv6only;
#endif

diff -r bdf64ae3376b -r cebf5fed00bf src/stream/ngx_stream.h
--- a/src/stream/ngx_stream.h Mon Oct 03 15:58:22 2016 +0300
+++ b/src/stream/ngx_stream.h Mon Oct 03 15:58:25 2016 +0300
@@ -52,7 +52,7 @@ typedef struct {
#if (NGX_STREAM_SSL)
unsigned ssl:1;
#endif
-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
+#if (NGX_HAVE_INET6)
unsigned ipv6only:1;
#endif
#if (NGX_HAVE_REUSEPORT)
diff -r bdf64ae3376b -r cebf5fed00bf src/stream/ngx_stream_core_module.c
--- a/src/stream/ngx_stream_core_module.c Mon Oct 03 15:58:22 2016 +0300
+++ b/src/stream/ngx_stream_core_module.c Mon Oct 03 15:58:25 2016 +0300
@@ -624,7 +624,7 @@ ngx_stream_core_listen(ngx_conf_t *cf, n
ls->wildcard = u.wildcard;
ls->ctx = cf->ctx;

-#if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
+#if (NGX_HAVE_INET6)
ls->ipv6only = 1;
#endif


_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Modules compatibility: removed unneeded IPV6_V6ONLY checks.

ru@nginx.com 528 October 03, 2016 09:02AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 185
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready