<para>
On AIX 4.3.2, you need <filename>libm.a</filename> that is in the
- fileset bos.adt.libm. Try the following command:
+ fileset <literal>bos.adt.libm</>. Try the following command:
<screen>
$ lslpp -l bos.adt.libm
</screen>
<para>
AIX 5.3 has a problem
- where <structname>sockadr_storage</structname> is not defined to
+ where <structname>sockaddr_storage</structname> is not defined to
be large enough. In version 5.3, IBM increased the size of
<structname>sockaddr_un</structname>, the address structure for
Unix-domain sockets, but did not correspondingly increase the
- size of <structname>sockadr_storage</structname>. The result of
+ size of <structname>sockaddr_storage</structname>. The result of
this is that attempts to use Unix-domain sockets with PostgreSQL
lead to libpq overflowing the data structure. TCP/IP connections
work OK, but not Unix-domain sockets, which prevents the
</sect3>
<sect3>
- <title>Memory Management</title>
+ <title>Internet address issues</title>
+
+ <para>
+ PostgreSQL relies on the system's <function>getaddrinfo</> function
+ to parse IP addresses in <varname>listen_addresses</>,
+ <filename>pg_hba.conf</>, etc. Older versions of AIX have assorted
+ bugs in this function. If you have problems related to these settings,
+ updating to the latest fix pack for your AIX release should fix it.
+ </para>
+
+ <!-- http://archives.postgresql.org/message-id/6064jt6cfm.fsf_-_@dba2.int.libertyrms.com -->
+
+ <para>
+ One user reports:
+ </para>
+
+ <para>
+ When implementing PostgreSQL version 8.1 on AIX 5.3, we
+ periodically ran into problems where the statistics collector
+ would <quote>mysteriously</quote> not come up successfully. This
+ appears to be the result of unexpected behaviour in the IPv6
+ implementation. It looks like PostgreSQL and IPv6 do not play
+ very well together at this time on AIX.
+ </para>
+
+ <para>
+ Any of the following actions <quote>fix</quote> the problem.
+ <itemizedlist>
+ <listitem>
+ <para>
+ Delete the IPv6 address for localhost:
+<screen>
+(as root)
+# ifconfig lo0 inet6 ::1/0 delete
+</screen>
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ Remove IPv6 from net services. The
+ file <filename>/etc/netsvc.conf</filename> on AIX is roughly
+ equivalent to <filename>/etc/nsswitch.conf</filename> on
+ Solaris/Linux. The default, on AIX, is thus:
+<programlisting>
+hosts=local,bind
+</programlisting>
+ Replace this with:
+<programlisting>
+hosts=local4,bind4
+</programlisting>
+ to deactivate searching for IPv6 addresses.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect3>
+
+ <sect3>
+ <title>Memory management</title>
<!-- http://archives.postgresql.org/message-id/603bgqmpl9.fsf@dba2.int.libertyrms.com -->
<para>
</biblioentry>
</bibliography>
</sect3>
-
- <sect3>
- <title>Statistics Collector Issues</title>
- <!-- http://archives.postgresql.org/message-id/6064jt6cfm.fsf_-_@dba2.int.libertyrms.com -->
-
- <para>
- When implementing PostgreSQL version 8.1 on AIX 5.3, we
- periodically ran into problems where the statistics collector
- would <quote>mysteriously</quote> not come up successfully. This
- appears to be the result of unexpected behaviour in the IPv6
- implementation. It looks like PostgreSQL and IPv6 do not play
- very well together at this time on AIX.
- </para>
-
- <para>
- Any of the following actions <quote>fix</quote> the problem.
- <itemizedlist>
- <listitem>
- <para>
- Delete the IPv6 address for localhost:
-<screen>
-(as root)
-# ifconfig lo0 inet6 ::1/0 delete
-</screen>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove IPv6 from net services. The
- file <filename>/etc/netsvc.conf</filename> on AIX is roughly
- equivalent to <filename>/etc/nsswitch.conf</filename> on
- Solaris/Linux. The default, on AIX, is thus:
-<programlisting>
-hosts=local,bind
-</programlisting>
- Replace this with:
-<programlisting>
-hosts=local4,bind4
-</programlisting>
- to deactivate searching for IPv6 addresses.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </sect3>
</sect2>
<sect2 id="installation-notes-cygwin">
return getaddrinfo_unix(servname, hintp, result);
#endif
-#ifndef _AIX
/* NULL has special meaning to getaddrinfo(). */
rc = getaddrinfo((!hostname || hostname[0] == '\0') ? NULL : hostname,
servname, hintp, result);
-#else /* _AIX */
-
- /*
- * Various versions of AIX have various bugs in getaddrinfo()'s handling
- * of the servname parameter, including failing entirely if it's not NULL
- * and failing to zero sin_port when it is NULL :-(. Avoid these by
- * always passing NULL and handling the port number for ourselves.
- */
- rc = getaddrinfo((!hostname || hostname[0] == '\0') ? NULL : hostname,
- NULL, hintp, result);
-
- if (rc == 0)
- {
- struct addrinfo *addr;
- unsigned short port = 0;
-
- if (servname && *servname)
- port = atoi(servname);
-
- for (addr = *result; addr; addr = addr->ai_next)
- {
- switch (addr->ai_family)
- {
- case AF_INET:
- ((struct sockaddr_in *) addr->ai_addr)->sin_port = htons(port);
- break;
-#ifdef HAVE_IPV6
- case AF_INET6:
- ((struct sockaddr_in6 *) addr->ai_addr)->sin6_port = htons(port);
- break;
-#endif
- }
- }
- }
-#endif /* _AIX */
return rc;
}