Annotation of embedaddon/dnsmasq/src/dns-protocol.h, revision 1.1

1.1     ! misho       1: /* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
        !             2: 
        !             3:    This program is free software; you can redistribute it and/or modify
        !             4:    it under the terms of the GNU General Public License as published by
        !             5:    the Free Software Foundation; version 2 dated June, 1991, or
        !             6:    (at your option) version 3 dated 29 June, 2007.
        !             7:  
        !             8:    This program is distributed in the hope that it will be useful,
        !             9:    but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            10:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            11:    GNU General Public License for more details.
        !            12:      
        !            13:    You should have received a copy of the GNU General Public License
        !            14:    along with this program.  If not, see <http://www.gnu.org/licenses/>.
        !            15: */
        !            16: 
        !            17: #define NAMESERVER_PORT 53
        !            18: #define TFTP_PORT       69
        !            19: 
        !            20: #define IN6ADDRSZ       16
        !            21: #define INADDRSZ        4
        !            22: 
        !            23: #define PACKETSZ       512             /* maximum packet size */
        !            24: #define MAXDNAME       1025            /* maximum presentation domain name */
        !            25: #define RRFIXEDSZ      10              /* #/bytes of fixed data in r record */
        !            26: #define MAXLABEL        63              /* maximum length of domain label */
        !            27: 
        !            28: #define NOERROR                0               /* no error */
        !            29: #define FORMERR                1               /* format error */
        !            30: #define SERVFAIL       2               /* server failure */
        !            31: #define NXDOMAIN       3               /* non existent domain */
        !            32: #define NOTIMP         4               /* not implemented */
        !            33: #define REFUSED                5               /* query refused */
        !            34: 
        !            35: #define QUERY           0               /* opcode */
        !            36: 
        !            37: #define C_IN            1               /* the arpa internet */
        !            38: #define C_CHAOS         3               /* for chaos net (MIT) */
        !            39: #define C_ANY           255             /* wildcard match */
        !            40: 
        !            41: #define T_A            1
        !            42: #define T_NS            2               
        !            43: #define T_CNAME                5
        !            44: #define T_SOA          6
        !            45: #define T_PTR          12
        !            46: #define T_MX           15
        !            47: #define T_TXT          16
        !            48: #define T_SIG          24
        !            49: #define T_AAAA         28
        !            50: #define T_SRV          33
        !            51: #define T_NAPTR                35
        !            52: #define T_OPT          41
        !            53: #define        T_TKEY          249             
        !            54: #define        T_TSIG          250
        !            55: #define T_AXFR          252
        !            56: #define T_MAILB                253     
        !            57: #define T_ANY          255
        !            58: 
        !            59: struct dns_header {
        !            60:   u16 id;
        !            61:   u8  hb3,hb4;
        !            62:   u16 qdcount,ancount,nscount,arcount;
        !            63: };
        !            64: 
        !            65: #define HB3_QR       0x80
        !            66: #define HB3_OPCODE   0x78
        !            67: #define HB3_AA       0x04
        !            68: #define HB3_TC       0x02
        !            69: #define HB3_RD       0x01
        !            70: 
        !            71: #define HB4_RA       0x80
        !            72: #define HB4_AD       0x20
        !            73: #define HB4_CD       0x10
        !            74: #define HB4_RCODE    0x0f
        !            75: 
        !            76: #define OPCODE(x)          (((x)->hb3 & HB3_OPCODE) >> 3)
        !            77: #define RCODE(x)           ((x)->hb4 & HB4_RCODE)
        !            78: #define SET_RCODE(x, code) (x)->hb4 = ((x)->hb4 & ~HB4_RCODE) | code
        !            79:   
        !            80: #define GETSHORT(s, cp) { \
        !            81:        unsigned char *t_cp = (unsigned char *)(cp); \
        !            82:        (s) = ((u16)t_cp[0] << 8) \
        !            83:            | ((u16)t_cp[1]) \
        !            84:            ; \
        !            85:        (cp) += 2; \
        !            86: }
        !            87: 
        !            88: #define GETLONG(l, cp) { \
        !            89:        unsigned char *t_cp = (unsigned char *)(cp); \
        !            90:        (l) = ((u32)t_cp[0] << 24) \
        !            91:            | ((u32)t_cp[1] << 16) \
        !            92:            | ((u32)t_cp[2] << 8) \
        !            93:            | ((u32)t_cp[3]) \
        !            94:            ; \
        !            95:        (cp) += 4; \
        !            96: }
        !            97: 
        !            98: #define PUTSHORT(s, cp) { \
        !            99:        u16 t_s = (u16)(s); \
        !           100:        unsigned char *t_cp = (unsigned char *)(cp); \
        !           101:        *t_cp++ = t_s >> 8; \
        !           102:        *t_cp   = t_s; \
        !           103:        (cp) += 2; \
        !           104: }
        !           105: 
        !           106: #define PUTLONG(l, cp) { \
        !           107:        u32 t_l = (u32)(l); \
        !           108:        unsigned char *t_cp = (unsigned char *)(cp); \
        !           109:        *t_cp++ = t_l >> 24; \
        !           110:        *t_cp++ = t_l >> 16; \
        !           111:        *t_cp++ = t_l >> 8; \
        !           112:        *t_cp   = t_l; \
        !           113:        (cp) += 4; \
        !           114: }
        !           115: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>