Annotation of embedaddon/dnsmasq/src/dns-protocol.h, revision 1.1.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>