Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Feb 2001 13:25:44 +0200 (SAT)
From:      John Hay <jhay@icomtek.csir.co.za>
To:        current@FreeBSD.org
Subject:   resolver problem with shared linked programs
Message-ID:  <200102281125.f1SBPiM51551@zibbi.icomtek.csir.co.za>

next in thread | raw e-mail | index | archive | help
I noticed that sendmail started to complain of a failed reverse lookup
when starting:

Feb 28 11:40:43 beast sendmail[276]: gethostbyaddr(3ffe:2900:fffa:2:2a0:c9ff:fe8d:7c5f) failed: 2

At first I thought something is wrong with my ipv6 dns setup, but it turned
out that if a program is linked shared the first getipnodebyaddr() it does
will succeed, but the rest fail. For a staticly linked program all of
them will succeed:

########
beast:~/try > cc -Wall -static -O -o tstgetipnodebyaddr.static-c tstgetipnodebyaddr.c
beast:~/try > cc -Wall -O -o tstgetipnodebyaddr tstgetipnodebyaddr.c 
beast:~/try > ./tstgetipnodebyaddr.static-c                                     And the answer is: beast.icomtek.csir.co.za
And the answer is: beast.icomtek.csir.co.za
beast:~/try > ./tstgetipnodebyaddr
And the answer is: beast.icomtek.csir.co.za
Oops: 2.
getipnodebyaddr: Host name lookup failure
beast:~/try >
########

My test program is at the end of the email. Maybe I (and sendmail) have
done something wrong?

John
-- 
John Hay -- John.Hay@icomtek.csir.co.za


#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>

int main(int argc, char **argv)
{
	struct hostent *he;
	int h_err;
	u_char ipnum[16];
	char *astr1;

	astr1 = "146.64.24.3";
	h_err = inet_pton(AF_INET, astr1, ipnum);
	if(h_err == 0) {
		printf("conversion error with inet_pton()\n");
		exit(1);
	}

	he = getipnodebyaddr(ipnum, 4, AF_INET, &h_err);
	if(he == NULL) {
		printf("Oops: %d.\n", h_err);
		herror("getipnodebyaddr");
	} else
		printf("And the answer is: %s\n", he->h_name);

	he = getipnodebyaddr(ipnum, 4, AF_INET, &h_err);
	if(he == NULL) {
		printf("Oops: %d.\n", h_err);
		herror("getipnodebyaddr");
	} else
		printf("And the answer is: %s\n", he->h_name);

	return 0;
}

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200102281125.f1SBPiM51551>