Hi!

I am in the middle of implementing https://www.dns-oarc.net/tools/dsc/ while on OpenBSD is running nameserver process i.e. there needs to be also collector part of DSC and I am not succeeding compiling it. Platform is OpenBSD v 5.8 amd64 and source is dsc-201502251630.tar.gz. After unpacking i get

imre-obsd-58-rec:~/dsc/l/dsc-201502251630/collector# make
...
cc -g -Wall -DUSE_IPV6=1 -g -O2 -g -Wall -DUSE_IPV6=1 -g -O2 -c base64.c cc -g -Wall -DUSE_IPV6=1 -g -O2 -g -Wall -DUSE_IPV6=1 -g -O2 -c generic_counter.c cc -g -Wall -DUSE_IPV6=1 -g -O2 -g -Wall -DUSE_IPV6=1 -g -O2 -c pcap.c cc -g -Wall -DUSE_IPV6=1 -g -O2 -g -Wall -DUSE_IPV6=1 -g -O2 -c ncap.c cc -g -Wall -DUSE_IPV6=1 -g -O2 -g -Wall -DUSE_IPV6=1 -g -O2 -c dns_protocol.c dns_protocol.c:9:33: error: arpa/nameser_compat.h: No such file or directory
*** Error 1 in dsc (<sys.mk>:87 'dns_protocol.o')
*** Error 1 in /root/dsc/l/dsc-201502251630/collector (Makefile:2 'all')

So i found that probably i need libbind package and continuing in collector/dsc directory like this

imre-obsd-58-rec:~/dsc/l/dsc-201502251630/collector/dsc# ./configure CFLAGS="-I/usr/local/include/bind" LDFLAGS="-L/usr/local/lib/libbind"

i get further (it think almost to the end on compilation)

imre-obsd-58-rec:~/dsc/l/dsc-201502251630/collector/dsc# make
...
cc -g -Wall -DUSE_IPV6=1 -I/usr/local/include/bind -g -Wall -DUSE_IPV6=1 -I/usr/local/include/bind -c config_hooks.c cc -g -Wall -DUSE_IPV6=1 -I/usr/local/include/bind -g -Wall -DUSE_IPV6=1 -I/usr/local/include/bind -c hashtbl.c cc -g -Wall -DUSE_IPV6=1 -I/usr/local/include/bind -g -Wall -DUSE_IPV6=1 -I/usr/local/include/bind -c lookup3.c cc -g -Wall -DUSE_IPV6=1 -I/usr/local/include/bind -g -Wall -DUSE_IPV6=1 -I/usr/local/include/bind -c xmalloc.c cc -g -Wall -DUSE_IPV6=1 -I/usr/local/include/bind -g -Wall -DUSE_IPV6=1 -I/usr/local/include/bind -c inX_addr.c c++ -o dsc base64.o generic_counter.o pcap.o ncap.o dns_protocol.o dns_message.o ip_message.o daemon.o md_array.o null_index.o qtype_index.o qclass_index.o tld_index.o country_index.o rcode_index.o qnamelen_index.o qname_index.o msglen_index.o client_ipv4_addr_index.o client_ipv4_net_index.o md_array_xml_printer.o ip_direction_index.o ip_proto_index.o ip_version_index.o certain_qnames_index.o query_classification_index.o idn_qname_index.o edns_version_index.o edns_bufsiz_index.o do_bit_index.o rd_bit_index.o tc_bit_index.o qr_aa_bits_index.o opcode_index.o transport_index.o dns_ip_version_index.o dns_source_port_index.o ParseConfig.o config_hooks.o hashtbl.o lookup3.o xmalloc.o inX_addr.o -L/usr/local/lib/libbind -lpcap ../TmfBase/Hapy/src/.libs/libHapy.a
dns_protocol.o: In function `grok_question':
/root/dsc/l/dsc-201502251630/collector/dsc/dns_protocol.c:93: warning: warning: strcpy() is almost always misused, please use strlcpy()
pcap.o: In function `handle_tcp':
/root/dsc/l/dsc-201502251630/collector/dsc/pcap.c:552: warning: warning: sprintf() is often misused, please use snprintf()
query_classification_index.o: In function `a_for_a':
/root/dsc/l/dsc-201502251630/collector/dsc/query_classification_index.c:71: undefined reference to `__inet_aton'
inX_addr.o: In function `inXaddr_ntop':
/root/dsc/l/dsc-201502251630/collector/dsc/inX_addr.c:28: undefined reference to `__inet_ntop' /root/dsc/l/dsc-201502251630/collector/dsc/inX_addr.c:31: undefined reference to `__inet_ntop'
inX_addr.o: In function `inXaddr_pton':
/root/dsc/l/dsc-201502251630/collector/dsc/inX_addr.c:41: undefined reference to `__inet_pton' /root/dsc/l/dsc-201502251630/collector/dsc/inX_addr.c:45: undefined reference to `__inet_pton'
collect2: ld returned 1 exit status
*** Error 1 in /root/dsc/l/dsc-201502251630/collector/dsc (Makefile:65 'dsc')

For example text around query_classification_index.c:71 reads like this

static int
a_for_a(const dns_message * m)
{
    struct in_addr a;
    if (m->qtype != T_A)
        return 0;
    if (inet_aton(m->qname, &a))
        return CLASS_A_FOR_A;
    return 0;
}

I would be very thankful if you could point to me how to solve it and progress from here to ./dsc binary.


Imre

PS I searched ports collection for similarities and actually found file

/usr/ports/pobj/dnstop-20140915/dnstop-20140915/inX_addr.c

which is very similar to

/root/dsc/l/dsc-201502251630/collector/dsc/inX_addr.c

and has some inet_* funtsions in it. dnstop from ports compiles and runs fine. So i think i must be missing something obvious here. Needless to say i cant compile and read source but still i try to be attentive to your answer! :)

Reply via email to