[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: getaddrinfo() and AI_CANONNAME

This appears to be a bug in AIX.

#include <netdb.h>
#include <stdio.h>

  char hostname[128];
  struct hostent *hp;
  struct addrinfo *res, *ai;
  struct addrinfo hints;
  gethostname(hostname, sizeof(hostname));
  printf("hostname = %s\n", hostname);
  hp = gethostbyname(hostname);
  if(hp != NULL)
    printf("h_name = %s\n", hp->h_name);
  memset(&hints, 0, sizeof(hints));
  hints.ai_flags = AI_CANONNAME;
  getaddrinfo(hostname, NULL, &hints, &res);
  for(ai = res; ai; ai = ai->ai_next) {
    printf("ai_canonname = %s\n", ai->ai_canonname);

echo `hostname` `hostname | sed 's/\..*//'` > /etc/hosts

and running the above with NSORDER="bind local" and "local bind" gives
different results, swapping the hostnames in /etc/hosts makes
getaddrinfo dtrt and gethostbyname dtwt. I'll see if I can file bug
report to IBM (not that it usually makes a difference).