📄 ngx_resolver.h
字号:
/* * Copyright (C) Igor Sysoev */#include <ngx_config.h>#include <ngx_core.h>#ifndef _NGX_RESOLVER_H_INCLUDED_#define _NGX_RESOLVER_H_INCLUDED_#define NGX_RESOLVE_A 1#define NGX_RESOLVE_CNAME 5#define NGX_RESOLVE_PTR 12#define NGX_RESOLVE_MX 15#define NGX_RESOLVE_TXT 16#define NGX_RESOLVE_DNAME 39#define NGX_RESOLVE_FORMERR 1#define NGX_RESOLVE_SERVFAIL 2#define NGX_RESOLVE_NXDOMAIN 3#define NGX_RESOLVE_NOTIMP 4#define NGX_RESOLVE_REFUSED 5#define NGX_RESOLVE_TIMEDOUT NGX_ETIMEDOUT#define NGX_NO_RESOLVER (void *) -1#define NGX_RESOLVER_MAX_RECURSION 50typedef struct { ngx_connection_t *connection; struct sockaddr *sockaddr; socklen_t socklen; ngx_str_t server; ngx_log_t *log;} ngx_udp_connection_t;typedef struct ngx_resolver_ctx_s ngx_resolver_ctx_t;typedef void (*ngx_resolver_handler_pt)(ngx_resolver_ctx_t *ctx);typedef struct { ngx_rbtree_node_t node; ngx_queue_t queue; /* PTR: resolved name, A: name to resolve */ u_char *name; u_short nlen; u_short qlen; u_char *query; union { in_addr_t addr; in_addr_t *addrs; u_char *cname; } u; u_short naddrs; u_short cnlen; time_t expire; time_t valid; ngx_resolver_ctx_t *waiting;} ngx_resolver_node_t;typedef struct { /* has to be pointer because of "incomplete type" */ ngx_event_t *event; /* TODO: DNS peers balancer */ /* STUB */ ngx_udp_connection_t *udp_connection; ngx_log_t *log; /* ident must be after 3 pointers */ ngx_int_t ident; ngx_rbtree_t name_rbtree; ngx_rbtree_node_t name_sentinel; ngx_rbtree_t addr_rbtree; ngx_rbtree_node_t addr_sentinel; ngx_queue_t name_resend_queue; ngx_queue_t addr_resend_queue; ngx_queue_t name_expire_queue; ngx_queue_t addr_expire_queue; time_t resend_timeout; time_t expire; time_t valid; ngx_uint_t log_level;} ngx_resolver_t;struct ngx_resolver_ctx_s { ngx_resolver_ctx_t *next; ngx_resolver_t *resolver; ngx_udp_connection_t *udp_connection; /* ident must be after 3 pointers */ ngx_int_t ident; ngx_int_t state; ngx_int_t type; ngx_str_t name; ngx_uint_t naddrs; in_addr_t *addrs; in_addr_t addr; /* TODO: DNS peers balancer ctx */ ngx_resolver_handler_pt handler; void *data; ngx_msec_t timeout; ngx_uint_t quick; /* unsigned quick:1; */ ngx_uint_t recursion; ngx_event_t *event;};ngx_resolver_t *ngx_resolver_create(ngx_conf_t *cf, ngx_peer_addr_t *addr);ngx_resolver_ctx_t *ngx_resolve_start(ngx_resolver_t *r, ngx_resolver_ctx_t *temp);ngx_int_t ngx_resolve_name(ngx_resolver_ctx_t *ctx);void ngx_resolve_name_done(ngx_resolver_ctx_t *ctx);ngx_int_t ngx_resolve_addr(ngx_resolver_ctx_t *ctx);void ngx_resolve_addr_done(ngx_resolver_ctx_t *ctx);char *ngx_resolver_strerror(ngx_int_t err);#endif /* _NGX_RESOLVER_H_INCLUDED_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -