DNS: add per tx internal id

Add per TX id. Rename transaction_cnt to transaction_max (id) and increment it on tx creation.
pull/412/merge
Victor Julien 13 years ago
parent 59780ca770
commit 6674f4892c

@ -221,8 +221,12 @@ void DNSStoreQueryInState(DNSState *dns_state, const uint8_t *fqdn, const uint16
tx = DNSTransactionAlloc(tx_id);
if (tx == NULL)
return;
dns_state->transaction_max++;
SCLogDebug("dns_state->transaction_max updated to %u", dns_state->transaction_max);
TAILQ_INSERT_TAIL(&dns_state->tx_list, tx, next);
dns_state->curr = tx;
tx->tx_num = dns_state->transaction_max;
SCLogDebug("new tx %u with internal id %u", tx->tx_id, tx->tx_num);
}
DNSQueryEntry *q = SCMalloc(sizeof(DNSQueryEntry) + fqdn_len);
@ -249,10 +253,9 @@ void DNSStoreAnswerInState(DNSState *dns_state, const int rtype, const uint8_t *
return;
TAILQ_INSERT_TAIL(&dns_state->tx_list, tx, next);
dns_state->curr = tx;
}
tx->tx_num = dns_state->transaction_max;
dns_state->transaction_cnt++;
SCLogDebug("dns_state->transaction_cnt %u", dns_state->transaction_cnt);
}
DNSAnswerEntry *q = SCMalloc(sizeof(DNSAnswerEntry) + fqdn_len + data_len);
if (q == NULL)

@ -122,6 +122,7 @@ typedef struct DNSAnswerEntry_ {
/** \brief DNS Transaction, request/reply with same TX id. */
typedef struct DNSTransaction_ {
uint16_t tx_num; /**< internal: id */
uint16_t tx_id; /**< transaction id */
uint16_t replied; /**< bool indicating request is
replied to. */
@ -138,7 +139,7 @@ typedef struct DNSTransaction_ {
typedef struct DNSState_ {
TAILQ_HEAD(, DNSTransaction_) tx_list; /**< transaction list */
DNSTransaction *curr; /**< ptr to current tx */
uint16_t transaction_cnt;
uint16_t transaction_max;
uint16_t transaction_done;
/* used by TCP only */

@ -577,14 +577,14 @@ void DNSStateUpdateTransactionId(void *state, uint16_t *id) {
DNSState *s = state;
SCLogDebug("original id %"PRIu16", s->transaction_cnt %"PRIu16,
*id, (s->transaction_cnt));
SCLogDebug("original id %"PRIu16", s->transaction_max %"PRIu16,
*id, (s->transaction_max));
if ((s->transaction_cnt) > (*id)) {
if ((s->transaction_max) > (*id)) {
SCLogDebug("original id %"PRIu16", updating with s->transaction_cnt %"PRIu16,
*id, (s->transaction_cnt));
*id, (s->transaction_max));
(*id) = (s->transaction_cnt);
(*id) = (s->transaction_max);
SCLogDebug("updated id %"PRIu16, *id);
}

@ -301,14 +301,14 @@ static void DNSStateUpdateTransactionId(void *state, uint16_t *id) {
DNSState *s = state;
SCLogDebug("original id %"PRIu16", s->transaction_cnt %"PRIu16,
*id, (s->transaction_cnt));
SCLogDebug("original id %"PRIu16", s->transaction_max %"PRIu16,
*id, (s->transaction_max));
if ((s->transaction_cnt) > (*id)) {
SCLogDebug("original id %"PRIu16", updating with s->transaction_cnt %"PRIu16,
*id, (s->transaction_cnt));
if ((s->transaction_max) > (*id)) {
SCLogDebug("original id %"PRIu16", updating with s->transaction_max %"PRIu16,
*id, (s->transaction_max));
(*id) = (s->transaction_cnt);
(*id) = (s->transaction_max);
SCLogDebug("updated id %"PRIu16, *id);
}

Loading…
Cancel
Save