24 #ifndef __APP_LAYER_DNS_COMMON_H__ 25 #define __APP_LAYER_DNS_COMMON_H__ 33 #define DNS_MAX_SIZE 256 36 #define DNS_RECORD_TYPE_A 1 37 #define DNS_RECORD_TYPE_NS 2 38 #define DNS_RECORD_TYPE_MD 3 // Obsolete 39 #define DNS_RECORD_TYPE_MF 4 // Obsolete 40 #define DNS_RECORD_TYPE_CNAME 5 41 #define DNS_RECORD_TYPE_SOA 6 42 #define DNS_RECORD_TYPE_MB 7 // Experimental 43 #define DNS_RECORD_TYPE_MG 8 // Experimental 44 #define DNS_RECORD_TYPE_MR 9 // Experimental 45 #define DNS_RECORD_TYPE_NULL 10 // Experimental 46 #define DNS_RECORD_TYPE_WKS 11 47 #define DNS_RECORD_TYPE_PTR 12 48 #define DNS_RECORD_TYPE_HINFO 13 49 #define DNS_RECORD_TYPE_MINFO 14 50 #define DNS_RECORD_TYPE_MX 15 51 #define DNS_RECORD_TYPE_TXT 16 52 #define DNS_RECORD_TYPE_RP 17 53 #define DNS_RECORD_TYPE_AFSDB 18 54 #define DNS_RECORD_TYPE_X25 19 55 #define DNS_RECORD_TYPE_ISDN 20 56 #define DNS_RECORD_TYPE_RT 21 57 #define DNS_RECORD_TYPE_NSAP 22 58 #define DNS_RECORD_TYPE_NSAPPTR 23 59 #define DNS_RECORD_TYPE_SIG 24 60 #define DNS_RECORD_TYPE_KEY 25 61 #define DNS_RECORD_TYPE_PX 26 62 #define DNS_RECORD_TYPE_GPOS 27 63 #define DNS_RECORD_TYPE_AAAA 28 64 #define DNS_RECORD_TYPE_LOC 29 65 #define DNS_RECORD_TYPE_NXT 30 // Obosolete 66 #define DNS_RECORD_TYPE_SRV 33 67 #define DNS_RECORD_TYPE_ATMA 34 68 #define DNS_RECORD_TYPE_NAPTR 35 69 #define DNS_RECORD_TYPE_KX 36 70 #define DNS_RECORD_TYPE_CERT 37 71 #define DNS_RECORD_TYPE_A6 38 // Obsolete 72 #define DNS_RECORD_TYPE_DNAME 39 73 #define DNS_RECORD_TYPE_OPT 41 74 #define DNS_RECORD_TYPE_APL 42 75 #define DNS_RECORD_TYPE_DS 43 76 #define DNS_RECORD_TYPE_SSHFP 44 77 #define DNS_RECORD_TYPE_IPSECKEY 45 78 #define DNS_RECORD_TYPE_RRSIG 46 79 #define DNS_RECORD_TYPE_NSEC 47 80 #define DNS_RECORD_TYPE_DNSKEY 48 81 #define DNS_RECORD_TYPE_DHCID 49 82 #define DNS_RECORD_TYPE_NSEC3 50 83 #define DNS_RECORD_TYPE_NSEC3PARAM 51 84 #define DNS_RECORD_TYPE_TLSA 52 85 #define DNS_RECORD_TYPE_HIP 55 86 #define DNS_RECORD_TYPE_CDS 59 87 #define DNS_RECORD_TYPE_CDNSKEY 60 88 #define DNS_RECORD_TYPE_SPF 99 // Obsolete 89 #define DNS_RECORD_TYPE_TKEY 249 90 #define DNS_RECORD_TYPE_TSIG 250 91 #define DNS_RECORD_TYPE_MAILA 254 // Obsolete 92 #define DNS_RECORD_TYPE_ANY 255 93 #define DNS_RECORD_TYPE_URI 256 95 #define DNS_RCODE_NOERROR 0 96 #define DNS_RCODE_FORMERR 1 97 #define DNS_RCODE_SERVFAIL 2 98 #define DNS_RCODE_NXDOMAIN 3 99 #define DNS_RCODE_NOTIMP 4 100 #define DNS_RCODE_REFUSED 5 101 #define DNS_RCODE_YXDOMAIN 6 102 #define DNS_RCODE_YXRRSET 7 103 #define DNS_RCODE_NXRRSET 8 104 #define DNS_RCODE_NOTAUTH 9 105 #define DNS_RCODE_NOTZONE 10 108 #define DNS_RCODE_BADVERS 16 109 #define DNS_RCODE_BADSIG 16 110 #define DNS_RCODE_BADKEY 17 111 #define DNS_RCODE_BADTIME 18 112 #define DNS_RCODE_BADMODE 19 113 #define DNS_RCODE_BADNAME 20 114 #define DNS_RCODE_BADALG 21 115 #define DNS_RCODE_BADTRUNC 22 228 struct timeval last_req;
229 struct timeval last_resp;
246 #define DNS_CONFIG_DEFAULT_REQUEST_FLOOD 500 247 #define DNS_CONFIG_DEFAULT_STATE_MEMCAP 512*1024 248 #define DNS_CONFIG_DEFAULT_GLOBAL_MEMCAP 16*1024*1024 270 void *
DNSGetTx(
void *alstate, uint64_t tx_id);
294 const uint16_t
type,
const uint16_t
class,
const uint16_t tx_id);
297 const uint16_t fqdn_len,
const uint16_t
type,
const uint16_t
class,
const uint16_t
ttl,
298 const uint8_t *data,
const uint16_t data_len,
const uint16_t tx_id);
301 const uint16_t num,
const DnsListEnum list,
const uint8_t *
const input,
302 const uint32_t input_len,
const uint8_t *data);
305 const uint16_t
offset, uint8_t *fqdn,
const size_t fqdn_size);
struct DNSAnswerEntry_ DNSAnswerEntry
DNS Answer storage. Stored in TX list.
enum AppLayerEventType_ AppLayerEventType
void * DNSGetTx(void *alstate, uint64_t tx_id)
struct DNSState_ DNSState
Per flow DNS state container.
void DNSAppLayerDecoderEventsRegister(int alproto)
DnsListEnum
List types in the TX. Used when storing answers from "Answer" or "Authority".
int DNSGetAlstateProgress(void *tx, uint8_t direction)
void DNSDecrMemcap(uint32_t size, DNSState *state)
struct HtpBodyChunk_ * next
DetectEngineState * DNSGetTxDetectState(void *vtx)
Per flow DNS state container.
int DNSValidateResponseHeader(DNSState *, const DNSHeader *dns_header)
Validation checks for DNS response header.
const uint8_t * DNSReponseParse(DNSState *dns_state, const DNSHeader *const dns_header, const uint16_t num, const DnsListEnum list, const uint8_t *const input, const uint32_t input_len, const uint8_t *data)
uint64_t DNSMemcapGetMemuseCounter(void)
void DNSParserTests(void)
DNS Transaction, request/reply with same TX id.
uint8_t recursion_desired
#define TAILQ_HEAD(name, type)
DNS Answer storage. Stored in TX list.
typedef __attribute__
DNP3 application header.
void DNSStateTransactionFree(void *state, uint64_t tx_id)
dns transaction cleanup callback
void DNSConfigSetRequestFlood(uint32_t value)
uint64_t DNSGetTxCnt(void *alstate)
uint64_t DNSGetTxDetectFlags(void *vtx, uint8_t dir)
DNS Query storage. Stored in TX list.
Data structure to store app layer decoder events.
int DNSValidateRequestHeader(DNSState *, const DNSHeader *dns_header)
Validation checks for DNS request header.
void DNSStateFree(void *s)
int DNSGetAlstateProgressCompletionStatus(uint8_t direction)
get value for 'complete' status in DNS
uint64_t DNSMemcapGetMemcapStateCounter(void)
void DNSSetTxDetectFlags(void *vtx, uint8_t dir, uint64_t detect_flags)
void DNSAppLayerRegisterGetEventInfo(uint8_t ipproto, AppProto alproto)
LoggerId DNSGetTxLogged(void *alstate, void *tx)
void DNSSetTxLogged(void *alstate, void *tx, LoggerId logged)
uint64_t DNSMemcapGetMemcapGlobalCounter(void)
#define TAILQ_ENTRY(type)
void DNSConfigSetStateMemcap(uint32_t value)
int DNSSetTxDetectState(void *vtx, DetectEngineState *s)
void DNSStoreQueryInState(DNSState *dns_state, const uint8_t *fqdn, const uint16_t fqdn_len, const uint16_t type, const uint16_t class, const uint16_t tx_id)
void DNSCreateTypeString(uint16_t type, char *str, size_t str_size)
void DNSSetEvent(DNSState *s, uint8_t e)
DNSTransaction * DNSTransactionFindByTxId(const DNSState *dns_state, const uint16_t tx_id)
void DNSConfigSetGlobalMemcap(uint64_t value)
struct DNSQueryEntry_ DNSQueryEntry
DNS Query storage. Stored in TX list.
void DNSIncrMemcap(uint32_t size, DNSState *state)
struct RSDNSState_ RSDNSState
void DNSStoreAnswerInState(DNSState *dns_state, const int rtype, const uint8_t *fqdn, const uint16_t fqdn_len, const uint16_t type, const uint16_t class, const uint16_t ttl, const uint8_t *data, const uint16_t data_len, const uint16_t tx_id)
int DNSStateGetEventInfo(const char *event_name, int *event_id, AppLayerEventType *event_type)
struct RSDNSTransaction_ RSDNSTransaction
void DNSCreateRcodeString(uint8_t rcode, char *str, size_t str_size)
AppLayerDecoderEvents * DNSGetEvents(void *state, uint64_t id)
void RegisterDNSParsers(void)
void DNSParserRegisterTests(void)
int DNSCheckMemcap(uint32_t want, DNSState *state)
void * DNSStateAlloc(void)
uint16_t DNSUdpResponseGetNameByOffset(const uint8_t *const input, const uint32_t input_len, const uint16_t offset, uint8_t *fqdn, const size_t fqdn_size)