codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#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); } }
Private
[
?
]
Run code
Submit