43 static int query_buffer_id = 0;
44 static int answer_buffer_id = 0;
45 static int authority_buffer_id = 0;
46 static int additional_buffer_id = 0;
62 return DetectSetup(
de_ctx, s,
str, query_buffer_id);
67 return DetectSetup(
de_ctx, s,
str, answer_buffer_id);
72 return DetectSetup(
de_ctx, s,
str, additional_buffer_id);
77 return DetectSetup(
de_ctx, s,
str, authority_buffer_id);
92 bool to_client = (
flags & STREAM_TOSERVER) == 0;
93 const uint8_t *data = NULL;
94 uint32_t data_len = 0;
99 ok = SCDnsTxGetQueryName(txv, to_client, index, &data, &data_len);
102 ok = SCDnsTxGetAnswerName(txv, to_client, index, &data, &data_len);
105 ok = SCDnsTxGetAuthorityName(txv, index, &data, &data_len);
108 ok = SCDnsTxGetAdditionalName(txv, index, &data, &data_len);
130 return GetBuffer(det_ctx, transforms, f,
flags, txv, list_id, index,
DNS_QUERY);
137 return GetBuffer(det_ctx, transforms, f,
flags, txv, list_id, index,
DNS_ANSWER);
154 static int Register(
const char *keyword,
const char *desc,
const char *doc,
177 query_buffer_id = Register(
"dns.queries.rrname",
"DNS query rrname sticky buffer",
178 "/rules/dns-keywords.html#dns.queries.rrname", SetupQueryBuffer, GetQueryBuffer);
179 answer_buffer_id = Register(
"dns.answers.rrname",
"DNS answer rrname sticky buffer",
180 "/rules/dns-keywords.html#dns.answers.rrname", SetupAnswerBuffer, GetAnswerBuffer);
181 additional_buffer_id =
182 Register(
"dns.additionals.rrname",
"DNS additionals rrname sticky buffer",
183 "/rules/dns-keywords.html#dns-additionals-rrname", SetupAdditionalsBuffer,
184 GetAdditionalBuffer);
185 authority_buffer_id = Register(
"dns.authorities.rrname",
"DNS authorities rrname sticky buffer",
186 "/rules/dns-keywords.html#dns-authorities-rrname", SetupAuthoritiesBuffer,