comparison src/stream/ngx_stream_variables.c @ 6681:b9f78a4e3597

Stream: $proxy_protocol_addr and $proxy_protocol_port.
author Dmitry Volyntsev <xeioex@nginx.com>
date Tue, 06 Sep 2016 21:28:16 +0300
parents 38143d1abdec
children 8cd97c14b0e2
comparison
equal deleted inserted replaced
6680:7357abd1fa8c 6681:b9f78a4e3597
15 ngx_stream_session_t *s, ngx_stream_variable_value_t *v, uintptr_t data); 15 ngx_stream_session_t *s, ngx_stream_variable_value_t *v, uintptr_t data);
16 static ngx_int_t ngx_stream_variable_remote_addr(ngx_stream_session_t *s, 16 static ngx_int_t ngx_stream_variable_remote_addr(ngx_stream_session_t *s,
17 ngx_stream_variable_value_t *v, uintptr_t data); 17 ngx_stream_variable_value_t *v, uintptr_t data);
18 static ngx_int_t ngx_stream_variable_remote_port(ngx_stream_session_t *s, 18 static ngx_int_t ngx_stream_variable_remote_port(ngx_stream_session_t *s,
19 ngx_stream_variable_value_t *v, uintptr_t data); 19 ngx_stream_variable_value_t *v, uintptr_t data);
20 static ngx_int_t ngx_stream_variable_proxy_protocol_addr(
21 ngx_stream_session_t *s, ngx_stream_variable_value_t *v, uintptr_t data);
22 static ngx_int_t ngx_stream_variable_proxy_protocol_port(
23 ngx_stream_session_t *s, ngx_stream_variable_value_t *v, uintptr_t data);
20 static ngx_int_t ngx_stream_variable_server_addr(ngx_stream_session_t *s, 24 static ngx_int_t ngx_stream_variable_server_addr(ngx_stream_session_t *s,
21 ngx_stream_variable_value_t *v, uintptr_t data); 25 ngx_stream_variable_value_t *v, uintptr_t data);
22 static ngx_int_t ngx_stream_variable_server_port(ngx_stream_session_t *s, 26 static ngx_int_t ngx_stream_variable_server_port(ngx_stream_session_t *s,
23 ngx_stream_variable_value_t *v, uintptr_t data); 27 ngx_stream_variable_value_t *v, uintptr_t data);
24 static ngx_int_t ngx_stream_variable_bytes(ngx_stream_session_t *s, 28 static ngx_int_t ngx_stream_variable_bytes(ngx_stream_session_t *s,
54 { ngx_string("remote_addr"), NULL, 58 { ngx_string("remote_addr"), NULL,
55 ngx_stream_variable_remote_addr, 0, 0, 0 }, 59 ngx_stream_variable_remote_addr, 0, 0, 0 },
56 60
57 { ngx_string("remote_port"), NULL, 61 { ngx_string("remote_port"), NULL,
58 ngx_stream_variable_remote_port, 0, 0, 0 }, 62 ngx_stream_variable_remote_port, 0, 0, 0 },
63
64 { ngx_string("proxy_protocol_addr"), NULL,
65 ngx_stream_variable_proxy_protocol_addr, 0, 0, 0 },
66
67 { ngx_string("proxy_protocol_port"), NULL,
68 ngx_stream_variable_proxy_protocol_port, 0, 0, 0 },
59 69
60 { ngx_string("server_addr"), NULL, 70 { ngx_string("server_addr"), NULL,
61 ngx_stream_variable_server_addr, 0, 0, 0 }, 71 ngx_stream_variable_server_addr, 0, 0, 0 },
62 72
63 { ngx_string("server_port"), NULL, 73 { ngx_string("server_port"), NULL,
406 if (v->data == NULL) { 416 if (v->data == NULL) {
407 return NGX_ERROR; 417 return NGX_ERROR;
408 } 418 }
409 419
410 port = ngx_inet_get_port(s->connection->sockaddr); 420 port = ngx_inet_get_port(s->connection->sockaddr);
421
422 if (port > 0 && port < 65536) {
423 v->len = ngx_sprintf(v->data, "%ui", port) - v->data;
424 }
425
426 return NGX_OK;
427 }
428
429
430 static ngx_int_t
431 ngx_stream_variable_proxy_protocol_addr(ngx_stream_session_t *s,
432 ngx_stream_variable_value_t *v, uintptr_t data)
433 {
434 v->len = s->connection->proxy_protocol_addr.len;
435 v->valid = 1;
436 v->no_cacheable = 0;
437 v->not_found = 0;
438 v->data = s->connection->proxy_protocol_addr.data;
439
440 return NGX_OK;
441 }
442
443
444 static ngx_int_t
445 ngx_stream_variable_proxy_protocol_port(ngx_stream_session_t *s,
446 ngx_stream_variable_value_t *v, uintptr_t data)
447 {
448 ngx_uint_t port;
449
450 v->len = 0;
451 v->valid = 1;
452 v->no_cacheable = 0;
453 v->not_found = 0;
454
455 v->data = ngx_pnalloc(s->connection->pool, sizeof("65535") - 1);
456 if (v->data == NULL) {
457 return NGX_ERROR;
458 }
459
460 port = s->connection->proxy_protocol_port;
411 461
412 if (port > 0 && port < 65536) { 462 if (port > 0 && port < 65536) {
413 v->len = ngx_sprintf(v->data, "%ui", port) - v->data; 463 v->len = ngx_sprintf(v->data, "%ui", port) - v->data;
414 } 464 }
415 465