1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
typedef struct
{
unsigned short id; // identification number
unsigned char rd :1; // recursion desired
unsigned char tc :1; // truncated message
unsigned char aa :1; // authoritive answer
unsigned char opcode :4; // purpose of message
unsigned char qr :1; // query/response flag
unsigned char rcode :4; // response code
unsigned char cd :1; // checking disabled
unsigned char ad :1; // authenticated data
unsigned char z :1; // its z! reserved
unsigned char ra :1; // recursion available
unsigned short q_count; // number of question entries
unsigned short ans_count; // number of answer entries
unsigned short auth_count; // number of authority entries
unsigned short add_count; // number of resource entries
}DNS_HEADER;
typedef struct
{
unsigned char* qname;
unsigned short qtype;
unsigned short qclass;
}QUESTION;
qinfo = (QUESTION*)&buf[sizeof(DNS_HEADER)];
qinfo->qname = (unsigned char*) "3www6google3com0";
qinfo->qtype = htons(1); //Our version is currently ipv4 address
qinfo->qclass = htons(1); // For internet protocol
printf("Sending packet..\n");
if((size = sendto(sock, (char*) buf, sizeof(DNS_HEADER)+ sizeof(QUESTION),0,
(struct sockaddr*)&dest, sizeof(dest))) == -1)
{
printf("Error sending packet\n");
}
printf("size sendto: %d\n",size); |