Mercurial > hg > nginx
comparison src/http/modules/ngx_http_upstream_ip_hash_module.c @ 2512:2e91aecb9e57
a prelimiary IPv6 support, HTTP listen
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sat, 21 Feb 2009 07:02:02 +0000 |
parents | acb1f441e7b2 |
children | 4fc91bae6f83 4919fb357a5d |
comparison
equal
deleted
inserted
replaced
2511:f91c5c964e61 | 2512:2e91aecb9e57 |
---|---|
13 /* the round robin data must be first */ | 13 /* the round robin data must be first */ |
14 ngx_http_upstream_rr_peer_data_t rrp; | 14 ngx_http_upstream_rr_peer_data_t rrp; |
15 | 15 |
16 ngx_uint_t hash; | 16 ngx_uint_t hash; |
17 | 17 |
18 /* AF_INET only */ | |
19 u_char addr[3]; | 18 u_char addr[3]; |
20 | 19 |
21 u_char tries; | 20 u_char tries; |
22 | 21 |
23 ngx_event_get_peer_pt get_rr_peer; | 22 ngx_event_get_peer_pt get_rr_peer; |
109 } | 108 } |
110 | 109 |
111 r->upstream->peer.get = ngx_http_upstream_get_ip_hash_peer; | 110 r->upstream->peer.get = ngx_http_upstream_get_ip_hash_peer; |
112 | 111 |
113 /* AF_INET only */ | 112 /* AF_INET only */ |
114 sin = (struct sockaddr_in *) r->connection->sockaddr; | 113 |
115 p = (u_char *) &sin->sin_addr.s_addr; | 114 if (r->connection->sockaddr->sa_family == AF_INET) { |
116 iphp->addr[0] = p[0]; | 115 |
117 iphp->addr[1] = p[1]; | 116 sin = (struct sockaddr_in *) r->connection->sockaddr; |
118 iphp->addr[2] = p[2]; | 117 p = (u_char *) &sin->sin_addr.s_addr; |
118 iphp->addr[0] = p[0]; | |
119 iphp->addr[1] = p[1]; | |
120 iphp->addr[2] = p[2]; | |
121 | |
122 } else { | |
123 iphp->addr[0] = 0; | |
124 iphp->addr[1] = 0; | |
125 iphp->addr[2] = 0; | |
126 } | |
119 | 127 |
120 iphp->hash = 89; | 128 iphp->hash = 89; |
121 iphp->tries = 0; | 129 iphp->tries = 0; |
122 iphp->get_rr_peer = ngx_http_upstream_get_round_robin_peer; | 130 iphp->get_rr_peer = ngx_http_upstream_get_round_robin_peer; |
123 | 131 |