1: 2: 3: /************* 4: * * 5: * SENTINEL * 6: * * 7: *************/ 8: 9: 10: #ifndef WWWI_MIND_MIND_H 11: #define WWWI_MIND_MIND_H 12: 13: 14: /********************** 15: * * 16: * COMPILER INCLUDES * 17: * * 18: **********************/ 19: 20: 21: #include "config.h" 22: #ifdef HAVE_OSTREAM 23: #include <ostream> 24: #endif 25: #ifdef HAVE_OSTREAM_H 26: #include <ostream.h> 27: #endif 28: 29: 30: /********************* 31: * * 32: * PROJECT INCLUDES * 33: * * 34: *********************/ 35: 36: 37: #include "wwwi/types.h" 38: 39: 40: #ifdef USE_DEBUG_POINTERS 41: #include "debugptr.h" 42: #endif 43: 44: 45: using std::endl; 46: using std::ostream; 47: using WWWI::IPAddress; 48: 49: 50: /************ 51: * * 52: * DEFINES * 53: * * 54: ************/ 55: 56: 57: #ifdef USE_DEBUG_POINTERS 58: 59: #define DECL_POINTER_TYPES(CLASS) typedef DebugPtr<CLASS> CLASS##Ptr; \ 60: typedef DebugPtr<const CLASS> CLASS##ConstPtr; 61: 62: #else 63: 64: #define DECL_POINTER_TYPES(CLASS) typedef CLASS *CLASS##Ptr; \ 65: typedef const CLASS *CLASS##ConstPtr; 66: 67: #endif 68: 69: 70: /********************** 71: * * 72: * TYPE DECLARATIONS * 73: * * 74: **********************/ 75: 76: /* 77: * MIND supports QUERY opcodes only. 78: */ 79: 80: typedef enum { OPCODE_QUERY=0, // RFC1035 81: OPCODE_IQUERY=1, // RFC1035 (hopefully soon obsolete) 82: OPCODE_STATUS=2, // RFC1035 (undefined?) 83: OPCODE_NOTIFY=4, // RFC1996 84: OPCODE_UPDATE=5 // RFC2136 85: } Opcode; 86: 87: 88: typedef enum { RCODE_NOERROR=0, // RFC1035: No Error 89: RCODE_FORMERR=1, // RFC1035: Format Error 90: RCODE_SERVFAIL=2, // RFC1035: Server failure 91: RCODE_NXDOMAIN=3, // RFC1035: Non-existent domain 92: RCODE_NOTIMP=4, // RFC1035: Not implemented 93: RCODE_REFUSED=5, // RFC1035: Query refused 94: RCODE_YXDOMAIN=6, // RFC2136: Name exists when it should not 95: RCODE_YXRRSET=7, // RFC2136: RRSet exists when it should not 96: RCODE_NXRRSET=8, // RFC2136: RRSet that should exist does not 97: RCODE_NOTAUTH=9, // RFC2136: Server not authoritative for zone 98: RCODE_NOTZONE=10 // RFC2136: Name not contained in zone 99: } RCode; 100: 101: 102: /* 103: * MIND supports only the IN class. 104: */ 105: enum rr_class_enum { CL_IN=1, 106: CL_CS=2, 107: CL_CH=3, 108: CL_HS=4, 109: CL_QANY=255 }; 110: typedef enum rr_class_enum RRClass; 111: 112: 113: /* 114: * These are the types of RR records. Support is indicated by the RWC 115: * characters, which stand for Yes or No. R means the type will be read 116: * with compression. W means the type will be written with compression. 117: * C means the type may be cached. 118: */ 119: // RWC RFC 120: typedef enum { TY_A=1, // NNY RFC1035 (AddressLens) 121: TY_NS=2, // YYY RFC1035 (NameLens) 122: TY_MD=3, // YYY RFC1035 OBSOLETE (NameLens) 123: TY_MF=4, // YYY RFC1035 OBSOLETE (NameLens) 124: TY_CNAME=5, // YYY RFC1035 (NameLens) 125: TY_SOA=6, // YYY RFC1035 (SOALens) 126: TY_MB=7, // YYY RFC1035 EXPERIMENTAL (NameLens) 127: TY_MG=8, // YYY RFC1035 EXPERIMENTAL (NameLens) 128: TY_MR=9, // YYY RFC1035 EXPERIMENTAL (NameLens) 129: TY_NULL=10, // NNY RFC1035 EXPERIMENTAL (RawLens) 130: TY_WKS=11, // NNY RFC1035 (RawLens) 131: TY_PTR=12, // YYY RFC1035 (NameLens) 132: TY_HINFO=13, // NNY RFC1035 (RawLens) 133: TY_MINFO=14, // NNN RFC1035 EXPERIMENTAL (Not Supported) 134: TY_MX=15, // YYY RFC1035 (MXLens) 135: TY_TXT=16, // NNY RFC1035 (RawLens) 136: TY_AAAA=28, // NNN IANA (RawLens) 137: TY_OPT=41, // NNN RFC2671 (Not Supported) 138: 139: TY_QIXFR=251, // RFC1995 (Not Supported) 140: TY_QAXFR=252, // RFC1035 (Not Supported) 141: TY_QMAILB=253, // RFC1035 EXPERIMENTAL (Not Supported) 142: TY_QMAILA=254, // RFC1035 OBSOLETE (Not Supported) 143: TY_QANY=255 // RFC1035 144: } RRType; 145: 146: 147: /************ 148: * * 149: * THE END * 150: * * 151: ************/ 152: 153: 154: #endif 155: 156: 157: