view src/core/ngx_inet.h @ 252:644510700914 NGINX_0_4_11

nginx 0.4.11 *) Feature: the POP3 proxy supports the AUTH LOGIN PLAIN and CRAM-MD5. *) Feature: the ngx_http_perl_module supports the $r->allow_ranges method. *) Bugfix: if the APOP was enabled in the POP3 proxy, then the USER/PASS commands might not work; bug appeared in 0.4.10.
author Igor Sysoev <http://sysoev.ru>
date Wed, 25 Oct 2006 00:00:00 +0400
parents 56688ed172c8
children 0effe91f6083
line wrap: on
line source


/*
 * Copyright (C) Igor Sysoev
 */


#ifndef _NGX_INET_H_INCLUDED_
#define _NGX_INET_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>


#define NGX_PARSE_URL_INET   1
#define NGX_PARSE_URL_UNIX   2


typedef struct {
    in_addr_t           addr;
    in_addr_t           mask;
} ngx_inet_cidr_t;


typedef struct {
    struct sockaddr    *sockaddr;
    socklen_t           socklen;

    ngx_str_t           name;
    char               *uri_separator;

    ngx_uint_t          current_weight;
    ngx_uint_t          weight;

    ngx_uint_t          fails;
    time_t              accessed;

    ngx_uint_t          max_fails;
    time_t              fail_timeout;

#if (NGX_SSL)
    ngx_ssl_session_t  *ssl_session;
#endif
} ngx_peer_t;


struct ngx_peers_s {
    ngx_uint_t          current;

    ngx_uint_t          number;
    ngx_uint_t          last_cached;

 /* ngx_mutex_t        *mutex; */
    ngx_connection_t  **cached;

    ngx_peer_t          peer[1];
};


typedef union {
    in_addr_t           in_addr;
} ngx_url_addr_t;


typedef struct {
    ngx_int_t           type;

    ngx_peers_t        *peers;

    ngx_str_t           url;
    ngx_str_t           host;
    ngx_str_t           host_header;
    ngx_str_t           port;
    ngx_str_t           uri;

    in_port_t           portn;
    in_port_t           default_portn;

    unsigned            listen:1;
    unsigned            uri_part:1;
    unsigned            upstream:1;

    unsigned            default_port:1;
    unsigned            wildcard:1;

    ngx_url_addr_t      addr;

    char               *err;
} ngx_url_t;


size_t ngx_sock_ntop(int family, struct sockaddr *sa, u_char *text, size_t len);
size_t ngx_inet_ntop(int family, void *addr, u_char *text, size_t len);
ngx_int_t ngx_ptocidr(ngx_str_t *text, void *cidr);
ngx_int_t ngx_parse_url(ngx_conf_t *cf, ngx_url_t *u);
ngx_peers_t *ngx_inet_resolve_peer(ngx_conf_t *cf, ngx_str_t *name,
    in_port_t port);


#endif /* _NGX_INET_H_INCLUDED_ */