Mercurial > hg > nginx
diff src/core/ngx_inet.c @ 340:0bf903191ceb
nginx-0.0.3-2004-05-25-19:28:46 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 25 May 2004 15:28:46 +0000 |
parents | 117ccc7c4055 |
children | 15c84a40e87d |
line wrap: on
line diff
--- a/src/core/ngx_inet.c +++ b/src/core/ngx_inet.c @@ -164,3 +164,38 @@ size_t ngx_inet_ntop(int family, void *a "%u.%u.%u.%u", p[0], p[1], p[2], p[3]); #endif } + + +/* AF_INET only */ + +ngx_int_t ngx_ptocidr(ngx_str_t *text, void *cidr) +{ + ngx_uint_t i; + ngx_inet_cidr_t *in_cidr; + + in_cidr = cidr; + + for (i = 0; i < text->len; i++) { + if (text->data[i] == '/') { + break; + } + } + + if (i == text->len) { + return NGX_ERROR; + } + + text->data[i] = '\0'; + in_cidr->addr = inet_addr((char *) text->data); + text->data[i] = '/'; + if (in_cidr->addr == INADDR_NONE) { + return NGX_ERROR; + } + + in_cidr->mask = ngx_atoi(&text->data[i + 1], text->len - (i + 1)); + if (in_cidr->mask == (in_addr_t) NGX_ERROR) { + return NGX_ERROR; + } + + return NGX_OK; +}