blob: be78142ea59d915098de269f9b6d1ce94f656a24 [file] [log] [blame]
Igor Sysoevd90282d2004-09-28 08:34:51 +00001
2/*
Igor Sysoevff8da912004-09-29 16:00:49 +00003 * Copyright (C) Igor Sysoev
Igor Sysoevd90282d2004-09-28 08:34:51 +00004 */
5
6
Igor Sysoev42feecb2002-12-15 06:25:09 +00007#ifndef _NGX_INET_H_INCLUDED_
8#define _NGX_INET_H_INCLUDED_
9
10
Igor Sysoev02025fd2005-01-18 13:03:58 +000011#include <ngx_config.h>
12#include <ngx_core.h>
13
14
Igor Sysoev6a750192008-08-21 18:47:23 +000015#define NGX_INET_ADDRSTRLEN (sizeof("255.255.255.255") - 1)
16
17
Igor Sysoev822834e2004-05-25 15:28:46 +000018typedef struct {
Igor Sysoev3d2fd182006-12-04 16:46:13 +000019 in_addr_t addr;
20 in_addr_t mask;
Igor Sysoev822834e2004-05-25 15:28:46 +000021} ngx_inet_cidr_t;
22
23
Igor Sysoev20bf47b2006-10-24 13:06:55 +000024typedef union {
Igor Sysoev3d2fd182006-12-04 16:46:13 +000025 in_addr_t in_addr;
Igor Sysoev20bf47b2006-10-24 13:06:55 +000026} ngx_url_addr_t;
27
28
Igor Sysoev6f134cc2006-05-23 14:54:58 +000029typedef struct {
Igor Sysoev3d2fd182006-12-04 16:46:13 +000030 struct sockaddr *sockaddr;
31 socklen_t socklen;
32 ngx_str_t name;
33} ngx_peer_addr_t;
Igor Sysoev6f134cc2006-05-23 14:54:58 +000034
Igor Sysoev6f134cc2006-05-23 14:54:58 +000035
Igor Sysoev3d2fd182006-12-04 16:46:13 +000036typedef struct {
Igor Sysoev3d2fd182006-12-04 16:46:13 +000037 ngx_str_t url;
38 ngx_str_t host;
Igor Sysoev00e03772007-11-28 19:55:31 +000039 ngx_str_t port_text;
Igor Sysoev3d2fd182006-12-04 16:46:13 +000040 ngx_str_t uri;
Igor Sysoev6f134cc2006-05-23 14:54:58 +000041
Igor Sysoevbf3aaac2006-12-12 16:46:16 +000042 in_port_t port;
43 in_port_t default_port;
Igor Sysoevc9491d12008-08-26 14:24:14 +000044 int family;
Igor Sysoev6f134cc2006-05-23 14:54:58 +000045
Igor Sysoev3d2fd182006-12-04 16:46:13 +000046 unsigned listen:1;
47 unsigned uri_part:1;
Igor Sysoev3d2fd182006-12-04 16:46:13 +000048 unsigned no_resolve:1;
49 unsigned one_addr:1;
Igor Sysoev6f134cc2006-05-23 14:54:58 +000050
Igor Sysoev3d2fd182006-12-04 16:46:13 +000051 unsigned no_port:1;
Igor Sysoev20bf47b2006-10-24 13:06:55 +000052
Igor Sysoev3d2fd182006-12-04 16:46:13 +000053 ngx_url_addr_t addr;
54
55 ngx_peer_addr_t *addrs;
56 ngx_uint_t naddrs;
57
58 char *err;
Igor Sysoev6f134cc2006-05-23 14:54:58 +000059} ngx_url_t;
60
61
Igor Sysoev36b634c2007-11-23 16:59:24 +000062in_addr_t ngx_inet_addr(u_char *text, size_t len);
Igor Sysoevc5849a62008-08-21 19:24:07 +000063size_t ngx_sock_ntop(struct sockaddr *sa, u_char *text, size_t len);
Igor Sysoev9c610952004-03-16 13:35:20 +000064size_t ngx_inet_ntop(int family, void *addr, u_char *text, size_t len);
Igor Sysoev822834e2004-05-25 15:28:46 +000065ngx_int_t ngx_ptocidr(ngx_str_t *text, void *cidr);
Igor Sysoev7ed63ee2007-10-08 08:55:12 +000066ngx_int_t ngx_parse_url(ngx_pool_t *pool, ngx_url_t *u);
67ngx_int_t ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u);
Igor Sysoev3d2fd182006-12-04 16:46:13 +000068
Igor Sysoev02025fd2005-01-18 13:03:58 +000069
Igor Sysoev42feecb2002-12-15 06:25:09 +000070
71#endif /* _NGX_INET_H_INCLUDED_ */