ldns_hdr *_header;
/* extra items needed in a packet */
/** \brief the size in bytes of the pkt */
- uint16_t answersize;
+ uint16_t _answersize;
/** \brief the server ip */
- ldns_rdf *answerfrom;
+ ldns_rdf *_answerfrom;
/** \brief query duration */
- unsigned long querytime;
+ uint32_t _querytime;
/** \brief query data */
/** \brief question section */
ldns_rr_list *_question;
ssize_t bytes;
uint8_t *answer;
ldns_pkt *answer_pkt;
- struct sockaddr_in *to4;
- printf("family %d [4=%d %d] [6=%d %d]\n", ((struct sockaddr*)to)->sa_family,
- AF_INET, PF_INET, AF_INET6, PF_INET6);
-
+ struct timeval tv_s;
+ struct timeval tv_e;
+
+ gettimeofday(&tv_s, NULL);
+
if ((sockfd = socket(((struct sockaddr*)to)->sa_family, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
printf("could not open socket\n");
return NULL;
}
- to4 = (struct sockaddr_in*) to;
+ bytes = sendto(sockfd, ldns_buffer_begin(qbin),
+ ldns_buffer_position(qbin), 0, (struct sockaddr *)to, tolen);
- printf("port %d len %d\n",
- ntohs(to4->sin_port), tolen);
+ gettimeofday(&tv_e, NULL);
+
- bytes = sendto(sockfd, ldns_buffer_begin(qbin),
- ldns_buffer_position(qbin), 0, (struct sockaddr *)to, tolen);
if (bytes == -1) {
printf("error with sending: %s\n", strerror(errno));
printf("could not create packet\n");
return NULL;
} else {
+ /* set some extra values in the pkt */
+ ldns_pkt_set_querytime(answer_pkt,
+ ((tv_e.tv_sec - tv_s.tv_sec)*1000) +
+ ((tv_e.tv_usec - tv_s.tv_usec)/1000));
+
return answer_pkt;
}
}
return packet->_additional;
}
+ldns_rdf *
+ldns_pkt_answerfrom(ldns_pkt *packet)
+{
+ return packet->_answerfrom;
+}
+
+uint32_t
+ldns_pkt_querytime(ldns_pkt *packet)
+{
+ return packet->_querytime;
+}
+
uint16_t
ldns_pkt_xxcount(ldns_pkt *packet, ldns_pkt_section s)
{
packet->_header->_arcount = arcount;
}
+void
+ldns_pkt_set_answerfrom(ldns_pkt *packet, ldns_rdf *answerfrom)
+{
+ packet->_answerfrom = answerfrom;
+}
+
+void
+ldns_pkt_set_querytime(ldns_pkt *packet, uint32_t time)
+{
+ packet->_querytime = time;
+}
+
/**
* push an rr on a packet
* \param[in] packet packet to operatore on