亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dns.h.svn-base

?? 域名解析器的實現
?? SVN-BASE
?? 第 1 頁 / 共 2 頁
字號:
#ifndef __DNS_H__
#define __DNS_H__

#include <inc/ctypes.h>      

#include <l3/ap/dnsr/h/dnsr_if.h>

/*
 * Well-known port number for DNS service over TCP and UDP.
 */

#define DNS_NAMESERVER_PORT     53
#define MAX_STATIC_DNS_NAME     32

/* define declaration */
/*
 * RFC-1123 specifies minimum values for these timeouts:
 *
 * DNS_TIMEOUT_FLOOR must be at least 5 seconds.
 *
 * DNS_TIMEOUT_CEILING must be at least twice the Internet MSL, plus
 * an unspecified fudge factor to allow for processing on the remote
 * server.  For lack of a better plan, we use the floor value as the
 * fudge factor, on the theory that the floor represents the amount
 * of time the server would have if transmission were instantaneous.
 *
 * The Internet MSL is defined in RFC-1122, among other places.
 */
#define DNS_MSL                 (120000L)						  /* msec */
#define DNS_TIMEOUT_FLOOR       (2000L)							  /* msec */
#define DNS_TIMEOUT_CEILING     (2 * DNS_MSL + DNS_TIMEOUT_FLOOR) /* msec */

/*
 * Macros to get and set header fields.  These assume that the first
 * argument is a big-endian UI32_T.
 *
 * Implementation note: the expression (x & (1 + ~x)) returns the
 * least significant bit that is turned on in the unsigned value x.
 */

#define DNS_LDB(_word_,_mask_) \
  (((_word_) & (_mask_)) / ((_mask_) & (1 + ~(_mask_))))

#define DNS_FLD(_newval_,_mask_) \
  (((_newval_) * (((_mask_) & (1 + ~(_mask_))))) & (_mask_))

#define dns_decode_bits32(x) \
  ((((UI32_T)((x)[0])) << 24) | \
   (((UI32_T)((x)[1])) << 16) | \
   (((UI32_T)((x)[2])) <<  8) | \
   (((UI32_T)((x)[3])) <<  0))

#define dns_decode_bits16(x) \
  ((((UI16_T)((x)[0])) << 8) | \
   (((UI16_T)((x)[1])) << 0))

/*register UI32_T _y32_;*/
/*register UI16_T  _y16_;*/
#define dns_encode_bits32(x,y){ \
    (x)[0] = (unsigned char) (((y) >> 24) & 0xFF); \
    (x)[1] = (unsigned char) (((y) >> 16) & 0xFF); \
    (x)[2] = (unsigned char) (((y) >>  8) & 0xFF); \
    (x)[3] = (unsigned char) (((y) >>  0) & 0xFF); \
    }
  
#define dns_encode_bits16(x,y){ \
    (x)[0] = (unsigned char) (((y) >>  8) & 0xFF); \
    (x)[1] = (unsigned char) (((y) >>  0) & 0xFF); \
    }
    
    
/* End of Header Macros */       

/*-------------------------------------*/
/*
 * Known DNS classes.
 */
enum dns_c {
  DNS_C_IN = 1,                 /* Internet */
  /*DNS_C_CS = 2,*/                 /* CSNET (obsolete) */ 
  DNS_C_CH = 3,                 /* Chaosnet */
  DNS_C_HS = 4,                 /* Hesiod */
  DNS_C_ANY = 255               /* "*" wildcard */
};

/*
 * Known DNS types.
 */

enum dns_t {
  DNS_T_A = 1,                  /* Address */
  DNS_T_NS = 2,                 /* Name Server */
  /*DNS_T_MD = 3,*/               /* Mail Destination (obsolete, forbidden) */
  /*DNS_T_MF = 4,*/               /* Mail Forwarder (obsolete, forbidden) */
  DNS_T_CNAME = 5,              /* Canonnical Name */
  DNS_T_SOA = 6,                /* Start Of Authority */
  DNS_T_MB = 7,                 /* MailBox */
  DNS_T_MG = 8,                 /* MailGroup */
  DNS_T_MR = 9,                 /* MailRename */
  DNS_T_NULL = 10,              /* Null */
  DNS_T_WKS = 11,               /* Well-Known-Service */
  DNS_T_PTR = 12,               /* Pointer */
  DNS_T_HINFO = 13,             /* Host Information */
  DNS_T_MINFO = 14,             /* Mail Information */
  DNS_T_MX = 15,                /* Mail Exchange */
  DNS_T_TXT = 16,               /* Text */
  DNS_T_AXFR = 252,             /* Zone transfer */
  DNS_T_MAILB = 253,            /* Mailbox semi-wildcard */
  DNS_T_MAILA = 254,            /* Mailagent semi-wildcard */
  DNS_T_ANY = 255               /* "*" wildcard */
};

/*
 * Known DNS operation codes.
 */

enum dns_opcode {
  DNS_OPCODE_QUERY = 0,         /* Normal query */
  DNS_OPCODE_IQUERY = 1,        /* Inverse query */
  DNS_OPCODE_STATUS = 2         /* Server status request */
};

/*
 * Known DNS response codes.
 */

enum dns_rcode {
  DNS_RCODE_OK = 0,             /* No error */
  DNS_RCODE_FORMAT = 1,         /* Server didn't like our message format */
  DNS_RCODE_SERVER = 2,         /* Server claims to be buggy */
  DNS_RCODE_NAME = 3,           /* Name does not exist */
  DNS_RCODE_NIY = 4,            /* Server doesn't implement operation */
  DNS_RCODE_REFUSED = 5         /* Server refuses to perform operation */
};

/*
 * Masks for DNS header fields, big-endian word layout.
 */

#define DNS_HDR_ID      0xFFFF0000L /* Query ID */
#define DNS_HDR_RESP    0x00008000L /* Is reponse? */
#define DNS_HDR_OP      0x00007800L /* Query opcode */
#define DNS_HDR_AA      0x00000400L /* Responding server is authority? */
#define DNS_HDR_TC      0x00000200L /* Message truncated? */
#define DNS_HDR_RD      0x00000100L /* Recursion desired? */
#define DNS_HDR_RA      0x00000080L /* Recursion available? */
/*                      0x00000070L    unused bits, should be zero */
#define DNS_HDR_RCODE   0x0000000FL /* Response code */

/*
 * Positions of flag word and count halfwords, expressed as offsets
 * from start of header.  Flag word is 32 bits, counts are 16 bits each.
 */

#define DNS_HDR_FLAGS   0
#define DNS_HDR_QDCOUNT 4
#define DNS_HDR_ANCOUNT 6
#define DNS_HDR_NSCOUNT 8
#define DNS_HDR_ARCOUNT 10

/*
 * Length of packet header.  A valid packet must be at least this long.
 */

#define DNS_HDR_LENGTH  12
#define DNS_QS_QUERY_TYPE_LENGTH  2
#define DNS_QS_QUERY_CLASS_LENGTH 2

/*
 * Compressed DNS name magic numbers.
 */

#define DNS_COMPRESSION_MASK    0300
#define DNS_COMPRESSION_POINTER 0300

/*
 * Size limits on DNS names, from RFC-1035.
 */

#define DNS_MAX_DOMAIN_NAME     (255)
#define DNS_MAX_DOMAIN_LABEL    (63)
#define DNS_MAX_DOMAIN_LABELS   (DNS_MAX_DNAME/2)

/*
 * Size of auto arrays of RRs used in cache lookups and message decoding.
 * Eventually the code should be able to allocate bigger arrays from free
 * space when needed, but this will do for now.
 */

#define DNS_MAX_RRS_PER_MSG     30

/*
 * Maximum RR TTL we can handle.  TTLs are in seconds, Attache's clock
 * is in milliseconds.  With the current implementation, this implies
 * that we can't keep cached RRs for more than about 24 days.  If
 * someday we really need to keep RRs longer than that, we can do so
 * by dividing the range of possible clock values in some more
 * complicated way (e.g. 3/4 "future" and 1/4 "past").  This would
 * mean that we'd have to GC the cache once a week instead of once
 * every two weeks.  Whoopie.
 */

#define DNS_MAX_TTL     (0x7FFFFFFFL/1000)



/*
 * Error codes.  These must be negative numbers, since some of them are
 * returned by routines which normally return a non-negative count.
 * Routines which only return these codes should have a return type
 * of "enum dns_error", but routines which might also need to return
 * a positive number should have a return type of "int".
 */

enum dns_error {
  DNS_ERROR_OK = 0,
  DNS_ERROR_NAME_TOO_LONG = -1,
  DNS_ERROR_BAD_NAME = -2,
  DNS_ERROR_BAD_ARGS = -3,
  DNS_ERROR_LABEL_TOO_LONG = -4,
  DNS_ERROR_ALLOCATION_FAILURE = -5,
  DNS_ERROR_TIMEOUT = -6,
  DNS_ERROR_UNREACHABLE = -7,
  DNS_ERROR_FORMAT = -8,
  DNS_ERROR_SERVER_FAILURE = -9,
  DNS_ERROR_NONEXISTANT_NAME = -10,
  DNS_ERROR_NIY = -11,
  DNS_ERROR_REFUSED = -12,
  DNS_ERROR_IMPOSSIBLE = -13,
  DNS_ERROR_NO_RRS = -14,
  DNS_ERROR_ABORTED = -15,
  DNS_ERROR_BAD_PROTOCOL = -16,
  DNS_ERROR_TRUNCATED = -17,
  DNS_ERROR_NO_RECURSION = -18,
  DNS_ERROR_IRRELEVANT = -19,
  DNS_ERROR_NOT_IN_LOCAL_CACHE = -20,
  DNS_ERROR_NO_PORT = -21,  
  DNS_ERROR_QUERY_SELF = -22,
  DNS_ERROR_BINDTIMER_FAILURE = -23,
  DNS_ERROR_UNBINDTIMER_FAILURE = -24
};

/*
 * This should be the total number of error codes defined, ie,
 * one greater than the absolute value of the last error code.
 */
#define DNS_N_ERRORS    (22)

/*
 * Structures of query list
 */
struct query_table {
   UI16_T     query_id;   /* recursive server query id */
   UI32_T    claddr;     /* client ip address */   
   UI16_T     clid;       /* client query id */
   BOOLEAN_T valid;      /* indicate the entry whether is used or not */
   UI32_T    now;        /* record the current time */
   void*  ptr;           /* query pointer */      
};


/*
 * Structures to hold decoded RRs and DNS header.
 */

struct dns_rr {
  unsigned char *name;          /* RR name */
  UI16_T  class;                /* DNS class of RR */
  UI16_T  type;                 /* DNS type of RR */
  UI32_T ttl;                   /* RR's Time To Live */
  UI16_T  rdcount;              /* Length of RDATA portion of RR */
  unsigned char *rdata;         /* RDATA portion of RR */
  struct dns_rr *next;          /* Next RR in this bucket */
  UI32_T birthdate;             /* When this RR was received */
  UI32_T source;                /* Who sent us this RR */
  unsigned expired : 1;         /* RR has expired? */
  unsigned negative : 1;        /* Negative cache entry? */
  unsigned answer : 1;          /* From Answer section of RR? */
  unsigned authoritative : 1;   /* AA && answer && RNAME == QNAME? */
  enum dns_error errcode;       /* Negative cache error code */
};

struct dns_header {
  UI16_T  id;                  /* Query id */
  unsigned resp : 1;            /* Is response? */
  unsigned op : 4;              /* Kind of query */
  unsigned aa : 1;              /* Responding nameserver claims authority? */
  unsigned tc : 1;              /* Message was truncated? */
  unsigned rd : 1;              /* Recursion desired? */
  unsigned ra : 1;              /* Recursion available? */
  unsigned rcode : 4;           /* Response code */
  UI16_T  qdcount;             /* Question section count */
  UI16_T  ancount;             /* Answer section count */
  UI16_T  nscount;             /* Authority section count */
  UI16_T  arcount;             /* Additional section count */
};


/*
 * Defined in dns_recu.c
/*

/*------------------------------------------------------------------------
 * BOOLEAN_T  dns_static_host_init()
 * Purpose: intialize Static DNS Table
 *
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */                    
void dns_static_host_init(void);

/*------------------------------------------------------------------------
 * BOOLEAN_T  dns_set_static_host()
 * Purpose: Set Static DNS Table
 *
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */                    
BOOLEAN_T dns_set_static_host(UI32_T addr,UI8_T *name,UI32_T name_size,BOOLEAN_T status ,UI32_T index);

/*------------------------------------------------------------------------
 * BOOLEAN_T  dns_response_tx()
 * Purpose: direct to response DNS request packet without sending packet 
 *          to server
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */                    
BOOLEAN_T dns_response_tx(PENDING_DNSR_MSG_PTR pMsg,   
                     int len, unsigned long addrs[],                     
                     unsigned char *name,
                     unsigned long ttls[]                     
                     );
                     
                     
                     
/*------------------------------------------------------------------------
 * void  dns_request_receive()
 * Purpose: parse DNS request packet
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
void dns_request_receive(PENDING_DNSR_MSG_PTR pMsg,   
                        struct dns_header	 *hdr);
                        
/*------------------------------------------------------------------------
 * int  dns_response_rx()
 * Purpose: Handle the reply packets from network
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */
void dns_response_rx(PENDING_DNSR_MSG_PTR pMsg, struct dns_header *hdr);                    
/*                        
 * Defined in dns_ask.c.
 */
/*------------------------------------------------------------------------
 * I16_T  dnsr_init_query_db()
 * Purpose:   initialize query List
 *          
 * Parameters:
 *    Input:
 *    Output:
 * returns :
 *------------------------------------------------------------------------
 */                     
void dnsr_init_query_db(void);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线视频网站| av在线这里只有精品| 国产最新精品免费| 91国产成人在线| 久久久久久97三级| 日韩av中文在线观看| 色香蕉成人二区免费| 精品88久久久久88久久久| 亚洲一本大道在线| 一本色道亚洲精品aⅴ| 久久免费国产精品| 日本不卡高清视频| 色8久久精品久久久久久蜜| 久久女同精品一区二区| 日本大胆欧美人术艺术动态| 99精品欧美一区二区三区小说 | 五月天丁香久久| 国产91精品露脸国语对白| 日韩欧美中文字幕制服| 亚洲国产日产av| 91国偷自产一区二区开放时间 | 99久久99久久综合| 久久久久久久综合| 久久精品国产亚洲5555| 日韩欧美专区在线| 麻豆精品国产传媒mv男同| 欧美色视频一区| 亚洲精品免费电影| 欧美三级韩国三级日本三斤| 亚洲欧美日韩国产另类专区| av欧美精品.com| 自拍av一区二区三区| 国产不卡视频一区二区三区| 337p粉嫩大胆色噜噜噜噜亚洲| 日韩高清在线电影| 日韩一区二区三区电影| 美女mm1313爽爽久久久蜜臀| 日韩亚洲欧美成人一区| 老司机午夜精品| 精品久久久网站| 国产高清亚洲一区| 国产精品久久久久久亚洲伦| 99视频在线观看一区三区| 国产精品久久99| 色八戒一区二区三区| 亚洲在线成人精品| 7777精品伊人久久久大香线蕉超级流畅 | 欧美日韩亚洲另类| 日韩国产精品久久久| 欧美大黄免费观看| 国产成人一级电影| 亚洲欧洲av在线| 欧美午夜电影一区| 亚洲第一搞黄网站| 久久综合久久久久88| 成人黄动漫网站免费app| 一区二区三区日韩欧美| 在线播放国产精品二区一二区四区| 天堂在线一区二区| 精品粉嫩超白一线天av| 99久久婷婷国产| 午夜欧美视频在线观看 | 毛片av中文字幕一区二区| 国产午夜精品一区二区三区嫩草 | 色系网站成人免费| 亚洲gay无套男同| 欧美精品一区二区不卡| 国产成人精品亚洲午夜麻豆| 一区av在线播放| 精品久久久久久亚洲综合网| 91在线你懂得| 久久精品国产亚洲a| 国产精品国产馆在线真实露脸| 欧美日本国产视频| 粉嫩av一区二区三区在线播放| 亚洲一区二区在线播放相泽| 精品久久久久一区| 91国内精品野花午夜精品| 国产中文字幕一区| 亚洲一卡二卡三卡四卡| 精品免费日韩av| 在线观看亚洲精品| 成人福利视频在线| 久久黄色级2电影| 亚洲地区一二三色| 中文字幕中文字幕一区二区| 欧美日韩国产成人在线91| 成人免费视频视频在线观看免费| 偷拍日韩校园综合在线| 亚洲日本一区二区三区| 欧美激情一区二区在线| 日韩一级黄色大片| 欧美精品丝袜中出| 色偷偷久久人人79超碰人人澡| 国内精品国产三级国产a久久| 午夜天堂影视香蕉久久| 亚洲激情综合网| 一区二区中文视频| 国产午夜精品福利| 亚洲精品在线一区二区| 欧美一级片免费看| 欧美日韩国产免费一区二区| 91成人在线免费观看| bt欧美亚洲午夜电影天堂| 国产乱人伦偷精品视频免下载| 日韩不卡一二三区| 日本人妖一区二区| 蜜臀va亚洲va欧美va天堂| 香蕉久久一区二区不卡无毒影院| 艳妇臀荡乳欲伦亚洲一区| 综合久久久久久久| 中文欧美字幕免费| 国产精品乱码久久久久久| 久久久久国产精品厨房| 久久久综合激的五月天| 精品国产91洋老外米糕| 日韩你懂的在线观看| 日韩欧美国产一区二区三区 | 久久色在线视频| 久久众筹精品私拍模特| 久久久另类综合| 国产免费久久精品| 中文字幕中文字幕在线一区 | 五月开心婷婷久久| 天堂一区二区在线| 蜜臀久久99精品久久久久久9| 麻豆精品新av中文字幕| 麻豆国产欧美日韩综合精品二区| 日韩一区精品字幕| 久久精品久久综合| 国产99久久久久久免费看农村| 成人免费精品视频| 日本韩国一区二区| 777xxx欧美| 国产日产欧产精品推荐色 | 精品久久久久久久久久久久久久久 | 欧美日韩黄色一区二区| 91精品国产综合久久福利软件| 日韩欧美国产一区二区在线播放 | 91精品国产乱码| 久久久久99精品一区| 18成人在线观看| 亚洲一区二区三区视频在线 | 国产亚洲欧美一区在线观看| 欧美国产精品v| 一片黄亚洲嫩模| 国产真实乱偷精品视频免| av激情综合网| 日韩一级完整毛片| 国产精品天干天干在线综合| 亚洲444eee在线观看| 国产一区福利在线| 91论坛在线播放| 日韩一区二区中文字幕| 中文字幕视频一区二区三区久| 亚洲高清一区二区三区| 国产一区二区三区四区五区入口| 成人黄色av电影| 欧美刺激午夜性久久久久久久 | 99久久精品久久久久久清纯| 欧美日韩小视频| 1区2区3区国产精品| 蜜臀av性久久久久蜜臀aⅴ| 99精品欧美一区二区三区小说 | 国产精品亚洲а∨天堂免在线| 色综合天天综合网国产成人综合天 | 欧美精品日韩精品| 国产精品日日摸夜夜摸av| 日本成人在线看| 欧美在线免费播放| 国产精品不卡一区| 精品一区二区免费视频| 欧美三级三级三级爽爽爽| 欧美激情在线看| 激情小说亚洲一区| 欧美一区二区三区在线看| 中文字幕色av一区二区三区| 日本麻豆一区二区三区视频| 在线观看不卡一区| 国产精品免费视频一区| 青青草精品视频| 欧美特级限制片免费在线观看| 亚洲国产精品传媒在线观看| 久久成人免费电影| 日韩一区二区在线看| 一级日本不卡的影视| eeuss影院一区二区三区| 精品电影一区二区| 久久国产人妖系列| 欧美一区二区三区视频免费| 亚洲自拍偷拍图区| 欧美视频日韩视频| 亚洲一区二区三区四区在线免费观看| 成人成人成人在线视频| 欧美激情中文字幕一区二区| 久久99最新地址| 日韩欧美激情一区| 精品一区二区av| 日韩免费视频线观看| 日韩精品一二三|