s/qmail 4.2.29a
Next generation secure email transport
Loading...
Searching...
No Matches
dnsfq.c
Go to the documentation of this file.
1#include <sys/types.h>
2#include <sys/socket.h>
3#include <unistd.h>
4#include "buffer.h"
5#include "stralloc.h"
6#include "dnsresolv.h"
7#include "dns.h"
8#include "ip.h"
9#include "exit.h"
10#include "logmsg.h"
11
12#define WHO "dnsfq"
13#define MAXCNAME 10
14
15stralloc ca = {0};
16stralloc sa = {0};
17stralloc ia = {0};
18
19int main(int argc,char **argv)
20{
21 int i, r;
22 char ip4str[IP4_FMT];
23 char ip6str[IP6_FMT];
24
25 if (!argv[1])
26 logmsg(WHO,100,USAGE,"dnsfq fqdn");
27
28 if (!stralloc_copys(&sa,argv[1]))
29 logmsg(WHO,111,FATAL,"out of memory");
30
32 buffer_put(buffer_1,sa.s,sa.len);
33 buffer_puts(buffer_1," ");
34 for (i = 0; i <= MAXCNAME; i++) {
35 if ((r = dns_cname(&ca,&sa)) < 0) _exit(1);
36 if (r > 0) {
37 if (!stralloc_copy(&sa,&ca))
38 logmsg(WHO,111,FATAL,"out of memory");
39 buffer_puts(buffer_1,"-> ");
40 buffer_put(buffer_1,sa.s,sa.len);
41 buffer_puts(buffer_1," ");
42 }
43 else break;
44 }
45 buffer_putsflush(buffer_1,"\n");
46
47 if ((i = dns_ip6(&ia,&sa)) > 0) {
48 for (i = 0; i + 16 <= ia.len; i += 16) {
49 if (ip6_isv4mapped(ia.s + i)) continue;
50 buffer_put(buffer_1,ip6str,ip6_fmt(ip6str,ia.s + i));
51 buffer_puts(buffer_1,"\n");
52 }
53 }
54
55 if ((i = dns_ip4(&ia,&sa)) > 0) {
56 for (i = 0; i + 4 <= ia.len;i += 4) {
57 buffer_put(buffer_1,ip4str,ip4_fmt(ip4str,ia.s + i));
58 buffer_puts(buffer_1,"\n");
59 }
60 }
61 buffer_flush(buffer_1);
62
63 _exit(0);
64}
int main()
Definition: chkshsgr.c:6
int stralloc_copys(stralloc *, char const *)
#define DNS_INIT
Definition: dns.h:12
#define MAXCNAME
Definition: dnsfq.c:13
stralloc ca
Definition: dnsfq.c:15
stralloc sa
Definition: dnsfq.c:16
stralloc ia
Definition: dnsfq.c:17
#define WHO
Definition: dnsfq.c:12
void _exit()