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>