comparison src/http/ngx_http_variables.c @ 982:664afe2c1480

$binary_remote_addr
author Igor Sysoev <igor@sysoev.ru>
date Sun, 07 Jan 2007 13:35:08 +0000
parents a6fe6bedb9e3
children 7a8ca436d611
comparison
equal deleted inserted replaced
981:6fe76f377a62 982:664afe2c1480
113 { ngx_string("content_type"), NULL, ngx_http_variable_header, 113 { ngx_string("content_type"), NULL, ngx_http_variable_header,
114 offsetof(ngx_http_request_t, headers_in.content_type), 0, 0 }, 114 offsetof(ngx_http_request_t, headers_in.content_type), 0, 0 },
115 115
116 { ngx_string("host"), NULL, ngx_http_variable_host, 0, 0, 0 }, 116 { ngx_string("host"), NULL, ngx_http_variable_host, 0, 0, 0 },
117 117
118 { ngx_string("binary_remote_addr"), NULL,
119 ngx_http_variable_remote_addr, 1, 0, 0 },
120
118 { ngx_string("remote_addr"), NULL, ngx_http_variable_remote_addr, 0, 0, 0 }, 121 { ngx_string("remote_addr"), NULL, ngx_http_variable_remote_addr, 0, 0, 0 },
119 122
120 { ngx_string("remote_port"), NULL, ngx_http_variable_remote_port, 0, 0, 0 }, 123 { ngx_string("remote_port"), NULL, ngx_http_variable_remote_port, 0, 0, 0 },
121 124
122 { ngx_string("server_addr"), NULL, ngx_http_variable_server_addr, 0, 0, 0 }, 125 { ngx_string("server_addr"), NULL, ngx_http_variable_server_addr, 0, 0, 0 },
697 700
698 static ngx_int_t 701 static ngx_int_t
699 ngx_http_variable_remote_addr(ngx_http_request_t *r, 702 ngx_http_variable_remote_addr(ngx_http_request_t *r,
700 ngx_http_variable_value_t *v, uintptr_t data) 703 ngx_http_variable_value_t *v, uintptr_t data)
701 { 704 {
702 v->len = r->connection->addr_text.len; 705 struct sockaddr_in *sin;
703 v->valid = 1; 706
704 v->no_cachable = 0; 707 if (data == 0) {
705 v->not_found = 0; 708 v->len = r->connection->addr_text.len;
706 v->data = r->connection->addr_text.data; 709 v->valid = 1;
710 v->no_cachable = 0;
711 v->not_found = 0;
712 v->data = r->connection->addr_text.data;
713
714 } else {
715
716 /* AF_INET only */
717
718 sin = (struct sockaddr_in *) r->connection->sockaddr;
719
720 v->len = sizeof(in_addr_t);
721 v->valid = 1;
722 v->no_cachable = 0;
723 v->not_found = 0;
724 v->data = (u_char *) &sin->sin_addr.s_addr;
725 }
707 726
708 return NGX_OK; 727 return NGX_OK;
709 } 728 }
710 729
711 730