[ create a new paste ] login | about

Link: http://codepad.org/55rsDQjZ    [ raw code | fork ]

C, pasted on Mar 14:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <resolv.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <string.h>

int main(void) {

	struct in_addr server;
	struct sockaddr_in serverSock;

	//For our 'fake' resolution
	struct addrinfo hints, *servinfo;


	if(inet_pton(AF_INET, "208.67.220.220", &server) == 0) {
		exit(1);
	}

	//Have to run getaddrinfo before we do this, atleast once, for some reason.
//	memset(&hints, 0, sizeof hints);
//	getaddrinfo("google.com", NULL, &hints, &servinfo);
//	freeaddrinfo((struct addrinfo*)servinfo);

	serverSock.sin_family = AF_INET;
	serverSock.sin_port = htons(53);
	serverSock.sin_addr = server;

	res_init();

        _res.nscount = 1;
	_res.nsaddr_list[0] = serverSock;

	char nsbuf[8192];
	char disbuf[8192];

	ns_msg msg;
	ns_rr rr;


	int l = res_query("myip.opendns.com", ns_t_a, ns_t_a, nsbuf, sizeof(nsbuf));
	if(l<0) {
		printf(":(\n");
		exit(1);
	}
	ns_initparse(nsbuf, l, &msg);
	int c = ns_msg_count(msg, ns_s_an);


	for (int j=0; j < c; j++) {
		if (ns_parserr(&msg, ns_s_an, j, &rr)) {
			continue;
		}

		ns_sprintrr (&msg, &rr, NULL, NULL, disbuf, sizeof (disbuf));
		printf("%s\n", disbuf);

        }


}


Create a new paste based on this one


Comments: