Here's the function
Code:
/*
* response: a DNS response; must point to resource data and be 4 octets
*
* returns resource data and points to next resource
*/
char *extract_resource_data(char **response)
{
char *ip_addr = (char *) malloc(16);
int i;
char period[] = ".\0", node[4];
sprintf(node, "%hu", **response);
strcpy(ip_addr, node);
++*response;
for(i = 1; i < 4; i++)
{
strcat(ip_addr, period);
sprintf(node, "%hu", **response);
strcat(ip_addr, node);
++*response;
}
return ip_addr;
}
The data buffer is defined as char *response = (char *) malloc(1024). I call the function as extract_resource_data(&response)