#include <arpa/inet.h>
#include <netdb.h>
#include <time.h>
+#include <sys/time.h>
/* lookup tables for standard DNS stuff */
ldns_status status = LDNS_STATUS_OK;
ldns_lookup_table *lt;
char *tmp;
+ struct timeval time;
if (!pkt) {
ldns_buffer_printf(output, "null");
ldns_buffer_printf(output, ";; SERVER: %s\n", tmp);
LDNS_FREE(tmp);
}
+#if 0
+/* when will be replyced by timestamp */
if (ldns_pkt_when(pkt)) {
/* \n included in when buffer, see ctime(3) */
ldns_buffer_printf(output, ";; WHEN: %s", ldns_pkt_when(pkt));
}
+#endif
+ time = ldns_pkt_timestamp(pkt);
+ ldns_buffer_printf(output, ";; WHEN: %s", ctime((time_t*)&time));
+
ldns_buffer_printf(output, ";; MSG SIZE rcvd: %d\n", (int)ldns_pkt_size(pkt));
} else {
return ldns_buffer_status(output);
#include <ldns/error.h>
#include <ldns/common.h>
#include <ldns/rr.h>
+#include <sys/time.h>
/* opcodes for pkt's */
enum ldns_enum_pkt_opcode {
uint16_t _answersize;
ldns_rdf *_answerfrom;
char *_when;
+ struct timeval timestamp;
/** query duration */
uint32_t _querytime;
/** the packet size */
uint16_t ldns_pkt_arcount(const ldns_pkt *p);
ldns_rdf *ldns_pkt_answerfrom(const ldns_pkt *p);
char *ldns_pkt_when(const ldns_pkt *p);
+struct timeval ldns_pkt_timestamp(const ldns_pkt *p);
uint32_t ldns_pkt_querytime(const ldns_pkt *p);
size_t ldns_pkt_size(const ldns_pkt *p);
ldns_rr *ldns_pkt_tsig(const ldns_pkt *p);
void ldns_pkt_set_querytime(ldns_pkt *p, uint32_t t);
void ldns_pkt_set_size(ldns_pkt *p, size_t s);
void ldns_pkt_set_when(ldns_pkt *p, char *w);
+void ldns_pkt_set_timestamp(ldns_pkt *p, struct timeval timestamp);
void ldns_pkt_set_section_count(ldns_pkt *p, ldns_pkt_section s, uint16_t x);
void ldns_pkt_set_tsig(ldns_pkt *p, ldns_rr *t);
((tv_e.tv_sec - tv_s.tv_sec) * 1000) +
(tv_e.tv_usec - tv_s.tv_usec) / 1000);
ldns_pkt_set_answerfrom(reply, ns_rand_array[i]);
- ldns_pkt_set_when(reply, ctime((time_t*)&tv_s.tv_sec));
+ ldns_pkt_set_timestamp(reply, tv_s);
+/* ldns_pkt_set_when(reply, ctime((time_t*)&tv_s.tv_sec));*/
ldns_pkt_set_size(reply, reply_size);
break;
} else {
return packet->_when;
}
+struct timeval
+ldns_pkt_timestamp(const ldns_pkt *packet)
+{
+ return packet->timestamp;
+}
+
uint16_t
ldns_pkt_edns_udp_size(const ldns_pkt *packet)
{
void
ldns_pkt_set_answerfrom(ldns_pkt *packet, ldns_rdf *answerfrom)
{
- /* if _answerfrom was set, this is a leak. Callers beware */
packet->_answerfrom = answerfrom;
}
void
ldns_pkt_set_when(ldns_pkt *packet, char *when)
{
- /* if _when was set, this is a leak. Callers beware */
packet->_when = when;
}
+void
+ldns_pkt_set_timestamp(ldns_pkt *packet, struct timeval timestamp)
+{
+ packet->timestamp = timestamp;
+}
+
void
ldns_pkt_set_size(ldns_pkt *packet, size_t s)
{