Return to ngx_inet.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / nginx / src / core |
1.1 ! misho 1: ! 2: /* ! 3: * Copyright (C) Igor Sysoev ! 4: * Copyright (C) Nginx, Inc. ! 5: */ ! 6: ! 7: ! 8: #ifndef _NGX_INET_H_INCLUDED_ ! 9: #define _NGX_INET_H_INCLUDED_ ! 10: ! 11: ! 12: #include <ngx_config.h> ! 13: #include <ngx_core.h> ! 14: ! 15: ! 16: /* ! 17: * TODO: autoconfigure NGX_SOCKADDRLEN and NGX_SOCKADDR_STRLEN as ! 18: * sizeof(struct sockaddr_storage) ! 19: * sizeof(struct sockaddr_un) ! 20: * sizeof(struct sockaddr_in6) ! 21: * sizeof(struct sockaddr_in) ! 22: */ ! 23: ! 24: #define NGX_INET_ADDRSTRLEN (sizeof("255.255.255.255") - 1) ! 25: #define NGX_INET6_ADDRSTRLEN \ ! 26: (sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") - 1) ! 27: #define NGX_UNIX_ADDRSTRLEN \ ! 28: (sizeof(struct sockaddr_un) - offsetof(struct sockaddr_un, sun_path)) ! 29: ! 30: #if (NGX_HAVE_UNIX_DOMAIN) ! 31: #define NGX_SOCKADDR_STRLEN (sizeof("unix:") - 1 + NGX_UNIX_ADDRSTRLEN) ! 32: #else ! 33: #define NGX_SOCKADDR_STRLEN (NGX_INET6_ADDRSTRLEN + sizeof("[]:65535") - 1) ! 34: #endif ! 35: ! 36: #if (NGX_HAVE_UNIX_DOMAIN) ! 37: #define NGX_SOCKADDRLEN sizeof(struct sockaddr_un) ! 38: #else ! 39: #define NGX_SOCKADDRLEN 512 ! 40: #endif ! 41: ! 42: ! 43: typedef struct { ! 44: in_addr_t addr; ! 45: in_addr_t mask; ! 46: } ngx_in_cidr_t; ! 47: ! 48: ! 49: #if (NGX_HAVE_INET6) ! 50: ! 51: typedef struct { ! 52: struct in6_addr addr; ! 53: struct in6_addr mask; ! 54: } ngx_in6_cidr_t; ! 55: ! 56: #endif ! 57: ! 58: ! 59: typedef struct { ! 60: ngx_uint_t family; ! 61: union { ! 62: ngx_in_cidr_t in; ! 63: #if (NGX_HAVE_INET6) ! 64: ngx_in6_cidr_t in6; ! 65: #endif ! 66: } u; ! 67: } ngx_cidr_t; ! 68: ! 69: ! 70: typedef struct { ! 71: struct sockaddr *sockaddr; ! 72: socklen_t socklen; ! 73: ngx_str_t name; ! 74: } ngx_addr_t; ! 75: ! 76: ! 77: typedef struct { ! 78: ngx_str_t url; ! 79: ngx_str_t host; ! 80: ngx_str_t port_text; ! 81: ngx_str_t uri; ! 82: ! 83: in_port_t port; ! 84: in_port_t default_port; ! 85: int family; ! 86: ! 87: unsigned listen:1; ! 88: unsigned uri_part:1; ! 89: unsigned no_resolve:1; ! 90: unsigned one_addr:1; /* compatibility */ ! 91: ! 92: unsigned no_port:1; ! 93: unsigned wildcard:1; ! 94: ! 95: socklen_t socklen; ! 96: u_char sockaddr[NGX_SOCKADDRLEN]; ! 97: ! 98: ngx_addr_t *addrs; ! 99: ngx_uint_t naddrs; ! 100: ! 101: char *err; ! 102: } ngx_url_t; ! 103: ! 104: ! 105: in_addr_t ngx_inet_addr(u_char *text, size_t len); ! 106: #if (NGX_HAVE_INET6) ! 107: ngx_int_t ngx_inet6_addr(u_char *p, size_t len, u_char *addr); ! 108: size_t ngx_inet6_ntop(u_char *p, u_char *text, size_t len); ! 109: #endif ! 110: size_t ngx_sock_ntop(struct sockaddr *sa, u_char *text, size_t len, ! 111: ngx_uint_t port); ! 112: size_t ngx_inet_ntop(int family, void *addr, u_char *text, size_t len); ! 113: ngx_int_t ngx_ptocidr(ngx_str_t *text, ngx_cidr_t *cidr); ! 114: ngx_int_t ngx_parse_addr(ngx_pool_t *pool, ngx_addr_t *addr, u_char *text, ! 115: size_t len); ! 116: ngx_int_t ngx_parse_url(ngx_pool_t *pool, ngx_url_t *u); ! 117: ngx_int_t ngx_inet_resolve_host(ngx_pool_t *pool, ngx_url_t *u); ! 118: ! 119: ! 120: #endif /* _NGX_INET_H_INCLUDED_ */