Merge branch 't/net_cleanups'
authorAndre Noll <maan@systemlinux.org>
Wed, 8 Jun 2011 17:44:56 +0000 (19:44 +0200)
committerAndre Noll <maan@systemlinux.org>
Wed, 8 Jun 2011 17:44:56 +0000 (19:44 +0200)
aft.c
attribute.c
blob.c
net.c
net.h

diff --git a/aft.c b/aft.c
index be4d572..0edc701 100644 (file)
--- a/aft.c
+++ b/aft.c
@@ -18,7 +18,6 @@
 #include "string.h"
 #include "afh.h"
 #include "afs.h"
-#include "net.h"
 #include "fd.h"
 #include "ipc.h"
 #include "portable_io.h"
index 4c66499..42fa421 100644 (file)
@@ -15,7 +15,6 @@
 #include "string.h"
 #include "afh.h"
 #include "afs.h"
-#include "net.h"
 #include "ipc.h"
 
 static struct osl_table *attribute_table;
diff --git a/blob.c b/blob.c
index dfe4e37..25aa2a6 100644 (file)
--- a/blob.c
+++ b/blob.c
@@ -16,7 +16,6 @@
 #include "string.h"
 #include "afh.h"
 #include "afs.h"
-#include "net.h"
 #include "ipc.h"
 #include "portable_io.h"
 
diff --git a/net.c b/net.c
index ffd4350..2f720b1 100644 (file)
--- a/net.c
+++ b/net.c
@@ -285,7 +285,7 @@ struct flowopts *flowopt_new(void)
  *  \sa setsockopt(2)
  */
 void flowopt_add(struct flowopts *fo, int lev, int opt,
-                char *name, const void *val, int len)
+               const char *name, const void *val, int len)
 {
        struct pre_conn_opt *new = para_malloc(sizeof(*new));
 
@@ -306,7 +306,7 @@ void flowopt_add(struct flowopts *fo, int lev, int opt,
 }
 
 void flowopt_add_bool(struct flowopts *fo, int lev, int opt,
-                     char *optname, bool on_or_off)
+               const char *optname, bool on_or_off)
 {
        int on = on_or_off;     /* kernel takes 'int' */
 
@@ -594,37 +594,6 @@ int generic_max_transport_msg_size(int sockfd)
        return generic_mtu(af_type) - estimated_header_overhead(af_type);
 }
 
-/**
- * Print numeric host and port number (beware - uses static char).
- *
- * \param sa The IPv4/IPv6 socket address to use.
- *
- * \return Host string in numeric host:port format, \sa parse_url().
- * \sa getnameinfo(3), services(5), nsswitch.conf(5)
- */
-static char *host_and_port(const struct sockaddr_storage *ss)
-{
-       const struct sockaddr *sa = normalize_ip_address(ss);
-       char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
-       static char output[sizeof(hbuf) + sizeof(sbuf) + 4];
-       int ret;
-
-       ret = getnameinfo(sa, salen(sa),
-                         hbuf, sizeof(hbuf),
-                         sbuf, sizeof(sbuf),
-                         NI_NUMERICHOST | NI_NUMERICSERV);
-       if (ret) {
-               snprintf(output, sizeof(output), "(unknown)");
-               PARA_WARNING_LOG("hostname lookup error (%s).\n",
-                                gai_strerror(ret));
-       } else if (sa->sa_family == AF_INET6) {
-               snprintf(output, sizeof(output), "[%s]:%s", hbuf, sbuf);
-       } else {
-               snprintf(output, sizeof(output), "%s:%s", hbuf, sbuf);
-       }
-       return output;
-}
-
 /**
  * Look up the local or remote side of a connected socket structure.
  *
@@ -633,23 +602,39 @@ static char *host_and_port(const struct sockaddr_storage *ss)
  * remote side.
  *
  * \return A static character string identifying hostname and port of the
- * chosen side.
+ * chosen side in numeric host:port format.
  *
- * \sa getsockname(2), getpeername(2).
+ * \sa getsockname(2), getpeername(2), parse_url(), getnameinfo(3),
+ * services(5), nsswitch.conf(5).
  */
 static char *__get_sock_name(int fd, int (*getname)(int, struct sockaddr*,
                socklen_t *))
 {
        struct sockaddr_storage ss;
+       const struct sockaddr *sa;
        socklen_t sslen = sizeof(ss);
+       char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
+       static char output[sizeof(hbuf) + sizeof(sbuf) + 4];
+       int ret;
 
        if (getname(fd, (struct sockaddr *)&ss, &sslen) < 0) {
-               static char *dont_know = "(don't know)";
                PARA_ERROR_LOG("can not determine address from fd %d: %s\n",
                        fd, strerror(errno));
-               return dont_know;
+               snprintf(output, sizeof(output), "(unknown)");
+               return output;
        }
-       return host_and_port(&ss);
+       sa = normalize_ip_address(&ss);
+       ret = getnameinfo(sa, salen(sa), hbuf, sizeof(hbuf), sbuf,
+               sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV);
+       if (ret) {
+               PARA_WARNING_LOG("hostname lookup error (%s).\n",
+                       gai_strerror(ret));
+               snprintf(output, sizeof(output), "(lookup error)");
+       } else if (sa->sa_family == AF_INET6)
+               snprintf(output, sizeof(output), "[%s]:%s", hbuf, sbuf);
+       else
+               snprintf(output, sizeof(output), "%s:%s", hbuf, sbuf);
+       return output;
 }
 
 /**
diff --git a/net.h b/net.h
index a1af08a..80f5794 100644 (file)
--- a/net.h
+++ b/net.h
@@ -60,9 +60,9 @@ struct flowopts;
 
 extern struct flowopts *flowopt_new(void);
 extern void flowopt_add(struct flowopts *fo, int level, int opt,
-                       char *name, const void *val, int len);
+               const char *name, const void *val, int len);
 extern void flowopt_add_bool(struct flowopts *fo, int lev, int opt,
-                            char *optname, bool on_or_off);
+               const char *optname, bool on_or_off);
 /** Flowopt shortcut macros */
 #define OPT_ADD(fo, lev, opt, val, len)        flowopt_add(fo, lev, opt, #opt, val, len)
 #define OPT_ENABLE(fo, lev, opt)       flowopt_add_bool(fo, lev, opt, #opt, 1)