<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>DNS loopkup should use UDP packet, and you have to construct UDP request<br>based on your captured IP addresses in your module. <br>And you have to use DNS server fallback lists and time-out control if some DNS <br>server cannot work well.<br></div><br><div>--<br><div>Regards,<br>shhuiw<br></div></div><div id="divNeteaseMailCard"></div><br><pre><br>At 2014-07-08 08:01:02, "Sudip Mukherjee" &lt;sudipm.mukherjee@gmail.com&gt; wrote:
&gt;On Tue, Jul 8, 2014 at 4:52 PM, shhuiw &lt;shhuiw@163.com&gt; wrote:
&gt;&gt; Hi,
&gt;&gt;
&gt;&gt; I think you need refer to some open source DNS client utilities, e.g
&gt;&gt; http://en.wikipedia.org/wiki/Nslookup.
&gt;&gt;
&gt;&gt; - shhuiw
&gt;
&gt;just have a look at the source code of nslookup command ... it does
&gt;the same thing as what u want ...
&gt;
&gt;but in many cases it will not work , as many domain names have shared
&gt;ip address .
&gt;
&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; At 2014-07-08 06:26:23, "Hettiarachchige Hasitha Shan" &lt;hh_shan@live.com&gt;
&gt;&gt; wrote:
&gt;&gt;
&gt;&gt; I have a requirement to obtain the domain name from the destination IP from
&gt;&gt; an outgoing packet. I am successful in capturing and obtaining the
&gt;&gt; destination IP  packets using the `netfilter` hook as shown below.
&gt;&gt;
&gt;&gt;     unsigned int hook_func_out(unsigned int hooknum, struct sk_buff * skb,
&gt;&gt; const struct net_device *in, const struct net_device *out, int
&gt;&gt; (*okfn)(struct sk_buff*))
&gt;&gt;     {
&gt;&gt;
&gt;&gt;         ofs = 20;    // Set theoffset to skip over the IP header.
&gt;&gt;
&gt;&gt;         {
&gt;&gt;                 struct iphdr *ip_header = (struct iphdr
&gt;&gt; *)skb_network_header(skb);
&gt;&gt;                 struct udphdr *udp_header;
&gt;&gt;                 struct tcphdr * tcp_header;
&gt;&gt;
&gt;&gt;             //Ican obtain the destination IP address of the packet
&gt;&gt;             //like this
&gt;&gt;             unsigned int dest_ip = (unsigned int)ip_header-&gt;daddr;
&gt;&gt;
&gt;&gt;             //or like this
&gt;&gt;             char pkt_tbuf[16];
&gt;&gt;             snprintf(pkt_tbuf, 16, "%pI4", &amp;ip_header-&gt;daddr);
&gt;&gt;
&gt;&gt;             //here I need to obtain the domain name of the obtained
&gt;&gt; destination address
&gt;&gt;         }
&gt;&gt;     }
&gt;&gt;
&gt;&gt; However, I have no idea on how to use that IP to obtain the domain name of
&gt;&gt; the obtained IP.
&gt;&gt;
&gt;&gt; I tried many sources
&gt;&gt; (https://www.google.com/search?client=ubuntu&amp;channel=fs&amp;q=linux+kernel+programming+domain+name+from+IP+&amp;ie=utf-8&amp;oe=utf-8)
&gt;&gt; but did find any related information on the subject and will be really
&gt;&gt; grateful if you experts would provide any sample code/ references to perform
&gt;&gt; this task :)
&gt;&gt;
&gt;&gt; Thank you very much :)
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt;
&gt;&gt; _______________________________________________
&gt;&gt; Kernelnewbies mailing list
&gt;&gt; Kernelnewbies@kernelnewbies.org
&gt;&gt; http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
&gt;&gt;
&gt;
&gt;_______________________________________________
&gt;Kernelnewbies mailing list
&gt;Kernelnewbies@kernelnewbies.org
&gt;http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
</pre></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>