const int protocol,
const void *wire,
const size_t len_wire,
- const struct timespec *mtime)
+ const struct timespec *mtime,
+ const void *wire_q,
+ const size_t len_wire_q)
{
if (m == NULL) {
return KNOT_EINVAL;
m->has_response_time_sec = 1;
m->has_response_time_nsec = 1;
}
+ /* Also add query message if 'responses-with-queries' is enabled and this is a response. */
+ if (wire_q != NULL) {
+ // Message.query_message
+ m->query_message.len = len_wire_q;
+ m->query_message.data = (uint8_t *)wire_q;
+ m->has_query_message = 1;
+ }
}
return KNOT_EOK;
* \param mtime
* Message time. May be NULL.
*
+ * \param *_q
+ * Symmetrical query parameters in case responses-with-queries is enabled.
+ *
* \retval KNOT_EOK
* \retval KNOT_EINVAL
*/
const int protocol,
const void *wire,
const size_t len_wire,
- const struct timespec *mtime);
+ const struct timespec *mtime,
+ const void *wire_q,
+ const size_t len_wire_q);
int ret = dt_message_fill(&msg, msgtype,
(const struct sockaddr *)knotd_qdata_remote_addr(qdata),
(const struct sockaddr *)knotd_qdata_local_addr(qdata),
- qdata->params->proto, pkt->wire, pkt->size, &tv);
+ qdata->params->proto, pkt->wire, pkt->size, &tv,
+ (ctx->with_queries && qdata->query != NULL) ? qdata->query->wire : NULL,
+ qdata->query->size);
if (ret != KNOT_EOK) {
return state;
}
dnstap.has_version = 1;
}
- /* Also add query message if 'responses-with-queries' is enabled and this is a response. */
- if (ctx->with_queries &&
- msgtype == DNSTAP__MESSAGE__TYPE__AUTH_RESPONSE &&
- qdata->query != NULL)
- {
- msg.query_message.len = qdata->query->size;
- msg.query_message.data = qdata->query->wire;
- msg.has_query_message = 1;
- }
-
/* Pack the message. */
uint8_t *frame = NULL;
size_t size = 0;
ret = dt_message_fill(&msg, msg_type, net->local_info->ai_addr,
net->srv->ai_addr, protocol,
- wire, wire_len, mtime);
+ wire, wire_len, mtime, NULL, 0);
if (ret != KNOT_EOK) {
return ret;
}