4 #include <acess/sys.h>
\r
9 #define NAMESERVER {10,0,2,3}
\r
11 uint8_t packet[] = {
\r
15 10,0,2,3, // Dest address
\r
18 0x01, // Recursion Desired
\r
26 // www.mutabah.net, A, IN
\r
28 7,'m','u','t','a','b','a','h',
\r
31 // mussel.ucc.asn.au, A, IN
\r
32 6,'m','u','s','s','e','l',
\r
43 typedef struct sDNSPacket
\r
46 // 1: Query/Response, 4: Opcode, 1: Authorative Answer, 1: Truncation, 1: Recursion Denied
\r
48 uint8_t rcode; // 1: Recusions Desired, 3: Zero, 4: Response Code
\r
49 uint16_t qdcount; // Question Count
\r
50 uint16_t ancount; // Answer Count
\r
51 uint16_t nscount; // Nameserver Resource Count
\r
52 uint16_t arcount; // Additional Records count
\r
55 // === PROTOTYPES ===
\r
58 int main(int argc, char *argv[], char *envp[])
\r
62 uint8_t destip[4] = NAMESERVER;
\r
64 tDNSPacket *hdr = (void *) (buf + 4 + 4);
\r
66 fd = Net_OpenSocket(4, destip, "udp");
\r
68 fprintf(stderr, "Unable to create a UDP socket\n");
\r
71 port = 0; ioctl(fd, ioctl(fd, 3, "getset_localport"), &port);
\r
72 port = 53; ioctl(fd, ioctl(fd, 3, "getset_remoteport"), &port);
\r
73 ioctl(fd, ioctl(fd, 3, "set_remoteaddr"), &destip);
\r
74 tmp = 32; ioctl(fd, ioctl(fd, 3, "getset_remotemask"), &tmp);
\r
76 write(fd, sizeof(packet), packet);
\r
79 printf("hdr = {\n");
\r
80 printf(" .ID = 0x%04x\n", hdr->ID);
\r
81 printf(" .opcode = 0x%04x\n", hdr->opcode);
\r
82 printf(" .rcode = 0x%02x\n", hdr->rcode);
\r
83 printf(" .qdcount = 0x%04x\n", hdr->qdcount);
\r
84 printf(" .ancount = 0x%04x\n", hdr->ancount);
\r
85 printf(" .nscount = 0x%04x\n", hdr->nscount);
\r
86 printf(" .arcount = 0x%04x\n", hdr->arcount);
\r