亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
17c精品麻豆一区二区免费| 亚洲黄色免费网站| 亚洲免费观看高清完整版在线观看| 亚洲一区二区不卡免费| 国产91精品一区二区| 欧美二区乱c少妇| 日韩一区中文字幕| 国产一区二区91| 日韩一区和二区| 一区二区三区四区在线免费观看 | 国产精品一区二区久久不卡| 婷婷综合另类小说色区| 99久久99久久精品免费看蜜桃| 91精品国产91久久久久久最新毛片| 亚洲色图另类专区| 国产v综合v亚洲欧| 2020日本不卡一区二区视频| 日本在线不卡视频| 欧美日韩激情一区二区| 亚洲三级在线播放| 成人高清视频在线观看| 久久综合色综合88| 九九精品一区二区| 日韩精品最新网址| 久久国产综合精品| 91精品国产91热久久久做人人| 五月婷婷欧美视频| 欧美人体做爰大胆视频| 午夜欧美电影在线观看| 精品国产91乱码一区二区三区| 一区二区三区欧美亚洲| 国产精品一区二区久久不卡| 91精品国产aⅴ一区二区| 午夜精品一区二区三区免费视频 | 丝袜亚洲精品中文字幕一区| 欧美在线观看一区二区| 亚洲香蕉伊在人在线观| 欧美日韩在线观看一区二区 | 制服丝袜一区二区三区| 天天操天天干天天综合网| 欧美亚一区二区| 亚洲国产综合在线| 欧美精品vⅰdeose4hd| 91精品国产高清一区二区三区蜜臀| 国产精品色眯眯| 99国产精品久| 亚洲美女偷拍久久| 91精品国产日韩91久久久久久| 日本在线不卡视频| 久久视频一区二区| 国产成人一区在线| 亚洲天堂福利av| 欧美在线制服丝袜| 黄页网站大全一区二区| 国产欧美一区二区精品性色| 波多野结衣91| 亚洲一二三级电影| 精品国产乱码久久久久久1区2区| 国产91精品欧美| 一区二区三区四区在线| 日韩欧美中文字幕一区| 不卡的av电影| 日韩电影在线一区二区| 中文字幕乱码亚洲精品一区| 欧美午夜免费电影| 国产另类ts人妖一区二区| 亚洲黄网站在线观看| 日韩你懂的在线播放| 成人黄色综合网站| 亚洲aaa精品| 久久久综合网站| 欧美日韩一卡二卡三卡| 国产一区二区三区久久久 | 欧美色倩网站大全免费| 激情偷乱视频一区二区三区| 综合激情网...| 日韩精品在线看片z| 色综合天天天天做夜夜夜夜做| 秋霞午夜av一区二区三区| 日韩理论电影院| 日韩欧美不卡在线观看视频| 色偷偷成人一区二区三区91| 国产一区视频导航| 夜夜夜精品看看| 国产精品午夜电影| 欧美一级日韩一级| 在线观看av不卡| 国产99久久久久久免费看农村| 日韩中文字幕1| 亚洲毛片av在线| 中文字幕av一区二区三区| 欧美大片日本大片免费观看| 欧美三日本三级三级在线播放| 国产精品888| 亚洲va韩国va欧美va| 日本一区二区三区电影| 亚洲精品一区二区三区蜜桃下载| 欧美日韩一区三区| 91美女片黄在线| 成人综合在线观看| 国产一区二区在线电影| 久久福利视频一区二区| 午夜成人免费电影| 一区二区三区免费网站| 亚洲精选视频在线| 自拍偷拍欧美精品| 日韩久久一区二区| 国产精品国产三级国产aⅴ原创| 久久久久88色偷偷免费| 久久久久久一二三区| 精品成人一区二区三区| 精品国产乱码久久久久久蜜臀| 日韩免费在线观看| 欧美精品一区二区久久久| 精品国产百合女同互慰| 久久久久久久久久久久久久久99| 精品少妇一区二区三区在线视频| 制服.丝袜.亚洲.中文.综合| 91麻豆精品国产91久久久使用方法| 欧美日韩午夜在线| 91麻豆精品国产综合久久久久久| 欧美伊人精品成人久久综合97| 欧美丝袜丝交足nylons图片| 欧美在线制服丝袜| 在线电影院国产精品| 欧美成人一区二区三区片免费 | 成人亚洲精品久久久久软件| 国产91色综合久久免费分享| 99久免费精品视频在线观看 | 7777精品伊人久久久大香线蕉的| 色拍拍在线精品视频8848| 色综合激情久久| 欧美日韩午夜影院| 日韩欧美在线综合网| 久久亚洲私人国产精品va媚药| 国产婷婷色一区二区三区| 亚洲视频免费在线观看| 午夜久久久影院| 国产精品中文字幕一区二区三区| 粉嫩一区二区三区在线看| 色av成人天堂桃色av| 日韩免费电影网站| 亚洲欧美在线高清| 日本va欧美va精品| 成人网在线播放| 精品视频在线免费| 久久久久久久久蜜桃| 亚洲免费观看视频| 久久精品99国产国产精| 99久久精品国产麻豆演员表| 欧美美女直播网站| 国产精品天干天干在线综合| 亚洲曰韩产成在线| 粉嫩aⅴ一区二区三区四区| 99精品在线免费| 一区二区欧美国产| 午夜日韩在线电影| 丁香一区二区三区| 欧美群妇大交群的观看方式| 亚洲国产岛国毛片在线| 日本在线播放一区二区三区| 大胆欧美人体老妇| 日韩精品一区二区三区四区| 综合亚洲深深色噜噜狠狠网站| 午夜精品久久久久久久蜜桃app| 国产乱码字幕精品高清av| 欧美色精品天天在线观看视频| 久久婷婷国产综合国色天香 | 在线观看一区二区视频| 2020日本不卡一区二区视频| 天天亚洲美女在线视频| 从欧美一区二区三区| 日韩精品一区二区三区中文精品| 17c精品麻豆一区二区免费| 国产麻豆视频精品| 日韩欧美色综合| 一区二区高清免费观看影视大全| 福利一区二区在线观看| xnxx国产精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 日本韩国欧美一区二区三区| 国产精品乱码人人做人人爱| 国产一本一道久久香蕉| 制服丝袜一区二区三区| 亚洲成人一二三| 色婷婷国产精品| 亚洲少妇最新在线视频| 东方aⅴ免费观看久久av| 久久奇米777| 国产精品88888| 久久久一区二区| 国产一区二区女| 久久精品日韩一区二区三区| 国产精品资源在线看| 精品电影一区二区三区| 国产一本一道久久香蕉| 国产亚洲欧美日韩日本| 国产精品一区二区久久不卡| 久久久精品黄色| 国产精品1024|