Code review for recently-added network functions. Get it to work when
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 13 Jun 2004 19:56:52 +0000 (19:56 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 13 Jun 2004 19:56:52 +0000 (19:56 +0000)
log_hostname is enabled, clean up documentation.

doc/src/sgml/func.sgml
src/backend/utils/adt/network.c
src/include/catalog/pg_proc.h
src/include/utils/builtins.h

index a5d81b6fddc99adf86fa30a6120e8a0e0c8211aa..ecf344453f8dc01ae9f381a6f7d91805d958be5f 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.206 2004/06/02 21:34:49 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/func.sgml,v 1.207 2004/06/13 19:56:49 tgl Exp $
 PostgreSQL documentation
 -->
 
@@ -6609,25 +6609,25 @@ SELECT NULLIF(value, '(none)') ...
       </row>
 
       <row>
-       <entry><function>inet_client_addr</function></entry>
+       <entry><function>inet_client_addr()</function></entry>
        <entry><type>inet</type></entry>
        <entry>address of the remote connection</entry>
       </row>
 
       <row>
-       <entry><function>inet_client_port</function></entry>
+       <entry><function>inet_client_port()</function></entry>
        <entry><type>int4</type></entry>
        <entry>port of the remote connection</entry>
       </row>
 
       <row>
-       <entry><function>inet_server_addr</function></entry>
+       <entry><function>inet_server_addr()</function></entry>
        <entry><type>inet</type></entry>
        <entry>address of the local connection</entry>
       </row>
 
       <row>
-       <entry><function>inet_server_port</function></entry>
+       <entry><function>inet_server_port()</function></entry>
        <entry><type>int4</type></entry>
        <entry>port of the local connection</entry>
       </row>
@@ -6687,17 +6687,6 @@ SELECT NULLIF(value, '(none)') ...
     </para>
    </note>
 
-   <para>
-     <function>inet_client_addr</function> and
-     <function>inet_server_addr</function> return the IPv4 or IPv6 (if
-     configured) address of the remote or local host connecting to the
-     database, respectively.  <function>inet_client_port</function>
-     and <function>inet_server_port</function> return the port number
-     of the remote or local host connecting to the database,
-     respectively.  If the connection is not a network connection,
-     these functions will return <literal>NULL</literal>.
-   </para>
-
    <para>
     <function>current_schema</function> returns the name of the schema that is
     at the front of the search path (or a null value if the search path is
@@ -6718,6 +6707,33 @@ SET search_path TO <replaceable>schema</> <optional>, <replaceable>schema</>, ..
     </para>
    </note>
 
+   <indexterm zone="functions-misc">
+    <primary>inet_client_addr</primary>
+   </indexterm>
+
+   <indexterm zone="functions-misc">
+    <primary>inet_client_port</primary>
+   </indexterm>
+
+   <indexterm zone="functions-misc">
+    <primary>inet_server_addr</primary>
+   </indexterm>
+
+   <indexterm zone="functions-misc">
+    <primary>inet_server_port</primary>
+   </indexterm>
+
+   <para>
+     <function>inet_client_addr</function> returns the IP address of the
+     current client, and <function>inet_client_port</function> returns the
+     port number.
+     <function>inet_server_addr</function> returns the IP address on which
+     the server accepted the current connection, and
+     <function>inet_server_port</function> returns the port number.
+     All these functions return NULL if the connection is via a Unix-domain
+     socket.
+   </para>
+
    <indexterm zone="functions-misc">
     <primary>version</primary>
    </indexterm>
index 49e2694261a9622d3fd1f5b684142c51748e1f02..32ebc66fd028992e92d035a4e78ae6f12e943fb0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     PostgreSQL type definitions for the INET and CIDR types.
  *
- *     $PostgreSQL: pgsql/src/backend/utils/adt/network.c,v 1.50 2004/05/26 18:35:38 momjian Exp $
+ *     $PostgreSQL: pgsql/src/backend/utils/adt/network.c,v 1.51 2004/06/13 19:56:50 tgl Exp $
  *
  *     Jon Postel RIP 16 Oct 1998
  */
@@ -133,109 +133,6 @@ cidr_in(PG_FUNCTION_ARGS)
        PG_RETURN_INET_P(network_in(src, 1));
 }
 
-/* INET that the client is connecting from */
-Datum
-inet_client_addr(PG_FUNCTION_ARGS)
-{
-       Port *port = MyProcPort;
-
-       if (port == NULL)
-               PG_RETURN_NULL();
-
-       switch (port->raddr.addr.ss_family) {
-       case AF_INET:
-#ifdef HAVE_IPV6
-       case AF_INET6:
-#endif
-               break;
-       default:
-               PG_RETURN_NULL();
-       }
-
-       PG_RETURN_INET_P(network_in(port->remote_host, 0));
-}
-
-
-/* port that the client is connecting from */
-Datum
-inet_client_port(PG_FUNCTION_ARGS)
-{
-       Port *port = MyProcPort;
-
-       if (port == NULL)
-               PG_RETURN_NULL();
-
-       PG_RETURN_INT32(DirectFunctionCall1(int4in, CStringGetDatum(port->remote_port)));
-}
-
-
-/* server INET that the client connected to */
-Datum
-inet_server_addr(PG_FUNCTION_ARGS)
-{
-       Port *port = MyProcPort;
-       char    local_host[NI_MAXHOST];
-       int     ret;
-
-       if (port == NULL)
-               PG_RETURN_NULL();
-
-       switch (port->laddr.addr.ss_family) {
-       case AF_INET:
-#ifdef HAVE_IPV6
-       case AF_INET6:
-#endif
-         break;
-       default:
-               PG_RETURN_NULL();
-       }
-
-       local_host[0] = '\0';
-
-       ret = getnameinfo_all(&port->laddr.addr, port->laddr.salen,
-                             local_host, sizeof(local_host),
-                             NULL, 0,
-                             NI_NUMERICHOST | NI_NUMERICSERV);
-       if (ret)
-               PG_RETURN_NULL();
-
-       PG_RETURN_INET_P(network_in(local_host, 0));
-}
-
-
-/* port that the server accepted the connection on */
-Datum
-inet_server_port(PG_FUNCTION_ARGS)
-{
-       Port *port = MyProcPort;
-       char    local_port[NI_MAXSERV];
-       int     ret;
-
-       if (port == NULL)
-               PG_RETURN_NULL();
-
-       switch (port->laddr.addr.ss_family) {
-       case AF_INET:
-#ifdef HAVE_IPV6
-       case AF_INET6:
-#endif
-         break;
-       default:
-               PG_RETURN_NULL();
-       }
-
-       local_port[0] = '\0';
-
-       ret = getnameinfo_all(&port->laddr.addr, port->laddr.salen,
-                             NULL, 0,
-                             local_port, sizeof(local_port),
-                             NI_NUMERICHOST | NI_NUMERICSERV);
-       if (ret)
-               PG_RETURN_NULL();
-
-       PG_RETURN_INT32(DirectFunctionCall1(int4in, CStringGetDatum(local_port)));
-}
-
 
 /*
  *     INET address output function.
@@ -1069,3 +966,147 @@ network_scan_last(Datum in)
                                                           DirectFunctionCall1(network_broadcast, in),
                                                           Int32GetDatum(-1));
 }
+
+
+/*
+ * IP address that the client is connecting from (NULL if Unix socket)
+ */
+Datum
+inet_client_addr(PG_FUNCTION_ARGS)
+{
+       Port *port = MyProcPort;
+       char    remote_host[NI_MAXHOST];
+       int     ret;
+
+       if (port == NULL)
+               PG_RETURN_NULL();
+
+       switch (port->raddr.addr.ss_family) {
+       case AF_INET:
+#ifdef HAVE_IPV6
+       case AF_INET6:
+#endif
+         break;
+       default:
+               PG_RETURN_NULL();
+       }
+
+       remote_host[0] = '\0';
+
+       ret = getnameinfo_all(&port->raddr.addr, port->raddr.salen,
+                             remote_host, sizeof(remote_host),
+                             NULL, 0,
+                             NI_NUMERICHOST | NI_NUMERICSERV);
+       if (ret)
+               PG_RETURN_NULL();
+
+       PG_RETURN_INET_P(network_in(remote_host, 0));
+}
+
+
+/*
+ * port that the client is connecting from (NULL if Unix socket)
+ */
+Datum
+inet_client_port(PG_FUNCTION_ARGS)
+{
+       Port *port = MyProcPort;
+       char    remote_port[NI_MAXSERV];
+       int     ret;
+
+       if (port == NULL)
+               PG_RETURN_NULL();
+
+       switch (port->raddr.addr.ss_family) {
+       case AF_INET:
+#ifdef HAVE_IPV6
+       case AF_INET6:
+#endif
+         break;
+       default:
+               PG_RETURN_NULL();
+       }
+
+       remote_port[0] = '\0';
+
+       ret = getnameinfo_all(&port->raddr.addr, port->raddr.salen,
+                             NULL, 0,
+                             remote_port, sizeof(remote_port),
+                             NI_NUMERICHOST | NI_NUMERICSERV);
+       if (ret)
+               PG_RETURN_NULL();
+
+       PG_RETURN_DATUM(DirectFunctionCall1(int4in, CStringGetDatum(remote_port)));
+}
+
+
+/*
+ * IP address that the server accepted the connection on (NULL if Unix socket)
+ */
+Datum
+inet_server_addr(PG_FUNCTION_ARGS)
+{
+       Port *port = MyProcPort;
+       char    local_host[NI_MAXHOST];
+       int     ret;
+
+       if (port == NULL)
+               PG_RETURN_NULL();
+
+       switch (port->laddr.addr.ss_family) {
+       case AF_INET:
+#ifdef HAVE_IPV6
+       case AF_INET6:
+#endif
+         break;
+       default:
+               PG_RETURN_NULL();
+       }
+
+       local_host[0] = '\0';
+
+       ret = getnameinfo_all(&port->laddr.addr, port->laddr.salen,
+                             local_host, sizeof(local_host),
+                             NULL, 0,
+                             NI_NUMERICHOST | NI_NUMERICSERV);
+       if (ret)
+               PG_RETURN_NULL();
+
+       PG_RETURN_INET_P(network_in(local_host, 0));
+}
+
+
+/*
+ * port that the server accepted the connection on (NULL if Unix socket)
+ */
+Datum
+inet_server_port(PG_FUNCTION_ARGS)
+{
+       Port *port = MyProcPort;
+       char    local_port[NI_MAXSERV];
+       int     ret;
+
+       if (port == NULL)
+               PG_RETURN_NULL();
+
+       switch (port->laddr.addr.ss_family) {
+       case AF_INET:
+#ifdef HAVE_IPV6
+       case AF_INET6:
+#endif
+         break;
+       default:
+               PG_RETURN_NULL();
+       }
+
+       local_port[0] = '\0';
+
+       ret = getnameinfo_all(&port->laddr.addr, port->laddr.salen,
+                             NULL, 0,
+                             local_port, sizeof(local_port),
+                             NI_NUMERICHOST | NI_NUMERICSERV);
+       if (ret)
+               PG_RETURN_NULL();
+
+       PG_RETURN_DATUM(DirectFunctionCall1(int4in, CStringGetDatum(local_port)));
+}
index f59528d9f40bd26ea4765882ad8ae5690a059c27..d2bc1e1893010fc9823d2d5613cb993285fc0a87 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.335 2004/06/06 19:07:00 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.336 2004/06/13 19:56:51 tgl Exp $
  *
  * NOTES
  *       The script catalog/genbki.sh reads this file and generates .bki
@@ -2346,15 +2346,6 @@ DESCR("I/O");
 DATA(insert OID = 911 (  inet_out                      PGNSP PGUID 12 f f t f i 1 2275 "869" _null_  inet_out - _null_ ));
 DESCR("I/O");
 
-DATA(insert OID = 2196 (  inet_client_addr             PGNSP PGUID 12 f f f f s 0 869 "" _null_  inet_client_addr - _null_ ));
-DESCR("Returns the INET address of the client connected to the backend");
-DATA(insert OID = 2197 (  inet_client_port             PGNSP PGUID 12 f f f f s 0 23 "" _null_  inet_client_port - _null_ ));
-DESCR("Returns the client's port number for this connection");
-DATA(insert OID = 2198 (  inet_server_addr             PGNSP PGUID 12 f f f f s 0 869 "" _null_  inet_server_addr - _null_ ));
-DESCR("Returns the INET address that the backend is using to service the connection");
-DATA(insert OID = 2199 (  inet_server_port             PGNSP PGUID 12 f f f f s 0 23 "" _null_  inet_server_port - _null_ ));
-DESCR("Returns the servers's port number for this connection");
-
 /* for cidr type support */
 DATA(insert OID = 1267 (  cidr_in                      PGNSP PGUID 12 f f t f i 1 650 "2275" _null_  cidr_in - _null_ ));
 DESCR("I/O");
@@ -2411,6 +2402,15 @@ DESCR("text to cidr");
 DATA(insert OID = 1715 (  set_masklen          PGNSP PGUID 12 f f t f i 2 869 "869 23" _null_  inet_set_masklen - _null_ ));
 DESCR("change the netmask of an inet");
 
+DATA(insert OID = 2196 (  inet_client_addr             PGNSP PGUID 12 f f f f s 0 869 "" _null_  inet_client_addr - _null_ ));
+DESCR("INET address of the client");
+DATA(insert OID = 2197 (  inet_client_port             PGNSP PGUID 12 f f f f s 0 23 "" _null_  inet_client_port - _null_ ));
+DESCR("client's port number for this connection");
+DATA(insert OID = 2198 (  inet_server_addr             PGNSP PGUID 12 f f f f s 0 869 "" _null_  inet_server_addr - _null_ ));
+DESCR("INET address of the server");
+DATA(insert OID = 2199 (  inet_server_port             PGNSP PGUID 12 f f f f s 0 23 "" _null_  inet_server_port - _null_ ));
+DESCR("server's port number for this connection");
+
 DATA(insert OID = 1686 ( numeric                       PGNSP PGUID 12 f f t f i 1 1700 "25" _null_     text_numeric - _null_ ));
 DESCR("(internal)");
 DATA(insert OID = 1688 ( text                          PGNSP PGUID 12 f f t f i 1 25 "1700" _null_     numeric_text - _null_ ));
index 1fc26e69a1f5d59f3dce1950f2121bbd443d34b1..6516c81d52e2a9939c959c6c1fffb98e3e0a817b 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/utils/builtins.h,v 1.241 2004/06/02 21:29:29 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/utils/builtins.h,v 1.242 2004/06/13 19:56:52 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -649,10 +649,6 @@ extern int inet_net_pton(int af, const char *src,
                          void *dst, size_t size);
 
 /* network.c */
-extern Datum inet_client_addr(PG_FUNCTION_ARGS);
-extern Datum inet_client_port(PG_FUNCTION_ARGS);
-extern Datum inet_server_addr(PG_FUNCTION_ARGS);
-extern Datum inet_server_port(PG_FUNCTION_ARGS);
 extern Datum inet_in(PG_FUNCTION_ARGS);
 extern Datum inet_out(PG_FUNCTION_ARGS);
 extern Datum inet_recv(PG_FUNCTION_ARGS);
@@ -687,6 +683,10 @@ extern Datum text_inet(PG_FUNCTION_ARGS);
 extern Datum inet_set_masklen(PG_FUNCTION_ARGS);
 extern Datum network_scan_first(Datum in);
 extern Datum network_scan_last(Datum in);
+extern Datum inet_client_addr(PG_FUNCTION_ARGS);
+extern Datum inet_client_port(PG_FUNCTION_ARGS);
+extern Datum inet_server_addr(PG_FUNCTION_ARGS);
+extern Datum inet_server_port(PG_FUNCTION_ARGS);
 
 /* mac.c */
 extern Datum macaddr_in(PG_FUNCTION_ARGS);