Mercurial > hg > nginx-quic
comparison src/stream/ngx_stream_core_module.c @ 6170:c13091e6292c
Stream: embed ngx_stream_listen_t into ngx_stream_conf_addr_t.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Mon, 08 Jun 2015 23:11:42 +0300 |
parents | 4f6efabcb09b |
children | 3e8cddcff381 |
comparison
equal
deleted
inserted
replaced
6169:f654addf0eea | 6170:c13091e6292c |
---|---|
270 | 270 |
271 ls = cmcf->listen.elts; | 271 ls = cmcf->listen.elts; |
272 | 272 |
273 for (i = 0; i < cmcf->listen.nelts; i++) { | 273 for (i = 0; i < cmcf->listen.nelts; i++) { |
274 | 274 |
275 sa = (struct sockaddr *) ls[i].sockaddr; | 275 sa = &ls[i].u.sockaddr; |
276 | 276 |
277 if (sa->sa_family != u.family) { | 277 if (sa->sa_family != u.family) { |
278 continue; | 278 continue; |
279 } | 279 } |
280 | 280 |
282 | 282 |
283 #if (NGX_HAVE_INET6) | 283 #if (NGX_HAVE_INET6) |
284 case AF_INET6: | 284 case AF_INET6: |
285 off = offsetof(struct sockaddr_in6, sin6_addr); | 285 off = offsetof(struct sockaddr_in6, sin6_addr); |
286 len = 16; | 286 len = 16; |
287 sin6 = (struct sockaddr_in6 *) sa; | 287 sin6 = &ls[i].u.sockaddr_in6; |
288 port = sin6->sin6_port; | 288 port = sin6->sin6_port; |
289 break; | 289 break; |
290 #endif | 290 #endif |
291 | 291 |
292 #if (NGX_HAVE_UNIX_DOMAIN) | 292 #if (NGX_HAVE_UNIX_DOMAIN) |
298 #endif | 298 #endif |
299 | 299 |
300 default: /* AF_INET */ | 300 default: /* AF_INET */ |
301 off = offsetof(struct sockaddr_in, sin_addr); | 301 off = offsetof(struct sockaddr_in, sin_addr); |
302 len = 4; | 302 len = 4; |
303 sin = (struct sockaddr_in *) sa; | 303 sin = &ls[i].u.sockaddr_in; |
304 port = sin->sin_port; | 304 port = sin->sin_port; |
305 break; | 305 break; |
306 } | 306 } |
307 | 307 |
308 if (ngx_memcmp(ls[i].sockaddr + off, u.sockaddr + off, len) != 0) { | 308 if (ngx_memcmp(ls[i].u.sockaddr_data + off, u.sockaddr + off, len) |
309 != 0) | |
310 { | |
309 continue; | 311 continue; |
310 } | 312 } |
311 | 313 |
312 if (port != u.port) { | 314 if (port != u.port) { |
313 continue; | 315 continue; |
323 return NGX_CONF_ERROR; | 325 return NGX_CONF_ERROR; |
324 } | 326 } |
325 | 327 |
326 ngx_memzero(ls, sizeof(ngx_stream_listen_t)); | 328 ngx_memzero(ls, sizeof(ngx_stream_listen_t)); |
327 | 329 |
328 ngx_memcpy(ls->sockaddr, u.sockaddr, u.socklen); | 330 ngx_memcpy(&ls->u.sockaddr, u.sockaddr, u.socklen); |
329 | 331 |
330 ls->socklen = u.socklen; | 332 ls->socklen = u.socklen; |
331 ls->wildcard = u.wildcard; | 333 ls->wildcard = u.wildcard; |
332 ls->ctx = cf->ctx; | 334 ls->ctx = cf->ctx; |
333 | 335 |
345 if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) { | 347 if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) { |
346 #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) | 348 #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY) |
347 struct sockaddr *sa; | 349 struct sockaddr *sa; |
348 u_char buf[NGX_SOCKADDR_STRLEN]; | 350 u_char buf[NGX_SOCKADDR_STRLEN]; |
349 | 351 |
350 sa = (struct sockaddr *) ls->sockaddr; | 352 sa = &ls->u.sockaddr; |
351 | 353 |
352 if (sa->sa_family == AF_INET6) { | 354 if (sa->sa_family == AF_INET6) { |
353 | 355 |
354 if (ngx_strcmp(&value[i].data[10], "n") == 0) { | 356 if (ngx_strcmp(&value[i].data[10], "n") == 0) { |
355 ls->ipv6only = 1; | 357 ls->ipv6only = 1; |