comparison src/http/ngx_http_variables.c @ 983:7a8ca436d611

ngx_http_variable_binary_remote_addr()
author Igor Sysoev <igor@sysoev.ru>
date Sun, 07 Jan 2007 13:36:56 +0000
parents 664afe2c1480
children f1d7cf0f68e3
comparison
equal deleted inserted replaced
982:664afe2c1480 983:7a8ca436d611
25 ngx_http_variable_value_t *v, uintptr_t data); 25 ngx_http_variable_value_t *v, uintptr_t data);
26 static ngx_int_t ngx_http_variable_unknown_header(ngx_http_variable_value_t *v, 26 static ngx_int_t ngx_http_variable_unknown_header(ngx_http_variable_value_t *v,
27 ngx_str_t *var, ngx_list_part_t *part, size_t prefix); 27 ngx_str_t *var, ngx_list_part_t *part, size_t prefix);
28 28
29 static ngx_int_t ngx_http_variable_host(ngx_http_request_t *r, 29 static ngx_int_t ngx_http_variable_host(ngx_http_request_t *r,
30 ngx_http_variable_value_t *v, uintptr_t data);
31 static ngx_int_t ngx_http_variable_binary_remote_addr(ngx_http_request_t *r,
30 ngx_http_variable_value_t *v, uintptr_t data); 32 ngx_http_variable_value_t *v, uintptr_t data);
31 static ngx_int_t ngx_http_variable_remote_addr(ngx_http_request_t *r, 33 static ngx_int_t ngx_http_variable_remote_addr(ngx_http_request_t *r,
32 ngx_http_variable_value_t *v, uintptr_t data); 34 ngx_http_variable_value_t *v, uintptr_t data);
33 static ngx_int_t ngx_http_variable_remote_port(ngx_http_request_t *r, 35 static ngx_int_t ngx_http_variable_remote_port(ngx_http_request_t *r,
34 ngx_http_variable_value_t *v, uintptr_t data); 36 ngx_http_variable_value_t *v, uintptr_t data);
114 offsetof(ngx_http_request_t, headers_in.content_type), 0, 0 }, 116 offsetof(ngx_http_request_t, headers_in.content_type), 0, 0 },
115 117
116 { ngx_string("host"), NULL, ngx_http_variable_host, 0, 0, 0 }, 118 { ngx_string("host"), NULL, ngx_http_variable_host, 0, 0, 0 },
117 119
118 { ngx_string("binary_remote_addr"), NULL, 120 { ngx_string("binary_remote_addr"), NULL,
119 ngx_http_variable_remote_addr, 1, 0, 0 }, 121 ngx_http_variable_binary_remote_addr, 0, 0, 0 },
120 122
121 { ngx_string("remote_addr"), NULL, ngx_http_variable_remote_addr, 0, 0, 0 }, 123 { ngx_string("remote_addr"), NULL, ngx_http_variable_remote_addr, 0, 0, 0 },
122 124
123 { ngx_string("remote_port"), NULL, ngx_http_variable_remote_port, 0, 0, 0 }, 125 { ngx_string("remote_port"), NULL, ngx_http_variable_remote_port, 0, 0, 0 },
124 126
697 return NGX_OK; 699 return NGX_OK;
698 } 700 }
699 701
700 702
701 static ngx_int_t 703 static ngx_int_t
704 ngx_http_variable_binary_remote_addr(ngx_http_request_t *r,
705 ngx_http_variable_value_t *v, uintptr_t data)
706 {
707 struct sockaddr_in *sin;
708
709 /* AF_INET only */
710
711 sin = (struct sockaddr_in *) r->connection->sockaddr;
712
713 v->len = sizeof(in_addr_t);
714 v->valid = 1;
715 v->no_cachable = 0;
716 v->not_found = 0;
717 v->data = (u_char *) &sin->sin_addr.s_addr;
718
719 return NGX_OK;
720 }
721
722
723 static ngx_int_t
702 ngx_http_variable_remote_addr(ngx_http_request_t *r, 724 ngx_http_variable_remote_addr(ngx_http_request_t *r,
703 ngx_http_variable_value_t *v, uintptr_t data) 725 ngx_http_variable_value_t *v, uintptr_t data)
704 { 726 {
705 struct sockaddr_in *sin; 727 v->len = r->connection->addr_text.len;
706 728 v->valid = 1;
707 if (data == 0) { 729 v->no_cachable = 0;
708 v->len = r->connection->addr_text.len; 730 v->not_found = 0;
709 v->valid = 1; 731 v->data = r->connection->addr_text.data;
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 }
726 732
727 return NGX_OK; 733 return NGX_OK;
728 } 734 }
729 735
730 736