]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix Solaris 2.6 and setsockopt()
authorKern Sibbald <kern@sibbald.com>
Fri, 7 Mar 2003 15:47:34 +0000 (15:47 +0000)
committerKern Sibbald <kern@sibbald.com>
Fri, 7 Mar 2003 15:47:34 +0000 (15:47 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@371 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/autoconf/acconfig.h
bacula/autoconf/config.h.in
bacula/autoconf/configure.in
bacula/configure
bacula/src/baconfig.h
bacula/src/bc_types.h
bacula/src/lib/bnet.c
bacula/src/lib/bnet_server.c

index 160594e0ddd3c0c4cc3189e2f12f9950c18012dc..11289bcf5e853c5f3e8e1ce5317817f2c5ff28de 100644 (file)
@@ -20,9 +20,6 @@
 /* Define to `int' if <sys/types.h> doesn't define.  */
 #undef ssize_t
 
-/* Set if socklen_t is not defined  in sys/types.h */
-#undef socklen_t
-
 /* Define if you want to use MySQL */
 #undef HAVE_MYSQL
 
 #undef HAVE_INET_PTON
 
 #undef HAVE_SOCKLEN_T
+
+#undef HAVE_OLD_SOCKOPT
  
 #undef HAVE_BIGENDIAN
index 2e2116d2a8daa523af7cbcee93954b1cb182f747..24f16b37ad180cb0bb89b02eb48a1c0fcc5c4ef3 100644 (file)
@@ -21,9 +21,6 @@
 /* Define to `int' if <sys/types.h> doesn't define.  */
 #undef ssize_t
 
-/* Set if socklen_t is not defined  in sys/types.h */
-#undef socklen_t
-
 /* Define if you want to use MySQL */
 #undef HAVE_MYSQL
 
 
 #undef HAVE_SOCKLEN_T
 
+#undef HAVE_OLD_SOCKOPT
+
  
 #undef HAVE_BIGENDIAN
 
index 2bcccced3fc717ff72268f40af59a8d49cae85df..9d026cf6693491cb58140571703d4849f9f86f75 100644 (file)
@@ -1299,7 +1299,7 @@ slackware)
        hostname=`hostname -s`
   ;;
 solaris)
-       DISTVER=Solaris
+       DISTVER=`uname -r`
        TAPEDRIVE="/dev/rmt/0cbn"
        PSCMD="ps -e -o pid,comm"
        PFILES="${PFILES} \
@@ -1307,6 +1307,9 @@ solaris)
            platforms/solaris/bacula-fd \
            platforms/solaris/bacula-sd \
            platforms/solaris/bacula-dir"
+       if test x$DISTVER = x2.6 ; then
+           AC_DEFINE(HAVE_OLD_SOCKOPT)
+       fi
   ;;
 suse)
        DISTVER=`cat /etc/SuSE-release |grep VERSION|\
@@ -1344,7 +1347,6 @@ AC_SUBST(WIN32)
 AC_SUBST(DISTNAME)
 AC_SUBST(DISTVER)
 
-
 dnl# common parts of the Makefile
 MCOMMON=./autoconf/Make.common
 AC_SUBST_FILE(MCOMMON)
index bbcf53672deadd4ccefa716e0a8637779438cdf5..e85591bdc00173d60bdac8912db06de798b13e5e 100755 (executable)
@@ -9433,7 +9433,7 @@ slackware)
        hostname=`hostname -s`
   ;;
 solaris)
-       DISTVER=Solaris
+       DISTVER=`uname -r`
        TAPEDRIVE="/dev/rmt/0cbn"
        PSCMD="ps -e -o pid,comm"
        PFILES="${PFILES} \
@@ -9441,6 +9441,12 @@ solaris)
            platforms/solaris/bacula-fd \
            platforms/solaris/bacula-sd \
            platforms/solaris/bacula-dir"
+       if test x$DISTVER = x2.6 ; then
+           cat >> confdefs.h <<\EOF
+#define HAVE_OLD_SOCKOPT 1
+EOF
+
+       fi
   ;;
 suse)
        DISTVER=`cat /etc/SuSE-release |grep VERSION|\
@@ -9484,7 +9490,6 @@ EOF
 
 
 
-
 MCOMMON=./autoconf/Make.common
 
 
index 7bf7bc64bdecf55b821e747df73554c5200402ce..3d3bcadc0a97c17a82ab6a9d8b700bafede7ed15 100644 (file)
@@ -367,6 +367,7 @@ extern int thr_setconcurrency(int);
 
 #else
 
+
 /* Not needed on most systems */
 #define set_thread_concurrency(x)
 
index 8454b58727b306795c726c7e31a786fb10c5f6e1..aa63873720f3f2f20988e40a2610e138216dfe19 100644 (file)
@@ -184,3 +184,8 @@ typedef float             float32_t;
 #define socklen_t int
 #endif
 
+#ifdef HAVE_OLD_SOCKOPT
+#define sockopt_val_t char *
+#else
+#define sockopt_val_t void *
+#endif
index e8ef5c122de7368e0e1b887ec8b5927f9b2ed64a..bb0757db9113bebdce5b91526638335807746e82 100644 (file)
@@ -468,7 +468,7 @@ bnet_open(void *jcr, char *name, char *host, char *service, int port)
    /*
     * Receive notification when connection dies.
     */
-   if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &turnon, sizeof(turnon)) < 0) {
+   if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, (sockopt_val_t)&turnon, sizeof(turnon)) < 0) {
       Jmsg(jcr, M_WARNING, 0, _("Cannot set SO_KEEPALIVE on socket: %s\n"), strerror(errno));
    }
    
@@ -572,7 +572,7 @@ int bnet_set_buffer_size(BSOCK *bs, uint32_t size, int rw)
    int opt;
 
     opt = IPTOS_THROUGHPUT;
-    setsockopt(bs->fd, IPPROTO_IP, IP_TOS, (char *)&opt, sizeof(opt));
+    setsockopt(bs->fd, IPPROTO_IP, IP_TOS, (sockopt_val_t)&opt, sizeof(opt));
 #endif
 
    dbuf_size = size;
@@ -582,7 +582,7 @@ int bnet_set_buffer_size(BSOCK *bs, uint32_t size, int rw)
    }
    if (rw & BNET_SETBUF_READ) {
       while ((dbuf_size > TAPE_BSIZE) &&
-        (setsockopt(bs->fd, SOL_SOCKET, SO_RCVBUF, (char *)&dbuf_size, sizeof(dbuf_size)) < 0)) {
+        (setsockopt(bs->fd, SOL_SOCKET, SO_RCVBUF, (sockopt_val_t)&dbuf_size, sizeof(dbuf_size)) < 0)) {
          Jmsg1(bs->jcr, M_ERROR, 0, _("sockopt error: %s\n"), strerror(errno));
         dbuf_size -= TAPE_BSIZE;
       }
@@ -597,7 +597,7 @@ int bnet_set_buffer_size(BSOCK *bs, uint32_t size, int rw)
    dbuf_size = size;
    if (rw & BNET_SETBUF_WRITE) {
       while ((dbuf_size > TAPE_BSIZE) &&
-        (setsockopt(bs->fd, SOL_SOCKET, SO_SNDBUF, (char *)&dbuf_size, sizeof(dbuf_size)) < 0)) {
+        (setsockopt(bs->fd, SOL_SOCKET, SO_SNDBUF, (sockopt_val_t)&dbuf_size, sizeof(dbuf_size)) < 0)) {
          Jmsg1(bs->jcr, M_ERROR, 0, _("sockopt error: %s\n"), strerror(errno));
         dbuf_size -= TAPE_BSIZE;
       }
index a789fa8d566481d809c43f7e596d42da4827fdb0..16b5e6b513a4f5fd9c3bac4f525c1c72a9ba3dba 100644 (file)
@@ -75,7 +75,7 @@ bnet_thread_server(char *bind_addr, int port, int max_clients, workq_t *client_w
    /*
     * Reuse old sockets 
     */
-   if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &turnon, sizeof(turnon)) < 0) {
+   if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (sockopt_val_t)&turnon, sizeof(turnon)) < 0) {
       Emsg1(M_WARNING, 0, _("Cannot set SO_REUSEADDR on socket: %s\n"), strerror(errno));
    }
 
@@ -154,7 +154,7 @@ bnet_thread_server(char *bind_addr, int port, int max_clients, workq_t *client_w
       /*
        * Receive notification when connection dies.
        */
-      if (setsockopt(newsockfd, SOL_SOCKET, SO_KEEPALIVE, &turnon, sizeof(turnon)) < 0) {
+      if (setsockopt(newsockfd, SOL_SOCKET, SO_KEEPALIVE, (sockopt_val_t)&turnon, sizeof(turnon)) < 0) {
          Emsg1(M_WARNING, 0, _("Cannot set SO_KEEPALIVE on socket: %s\n") , strerror(errno));
       }
 
@@ -200,7 +200,7 @@ bnet_bind(int port)
    /*
     * Reuse old sockets 
     */
-   if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &turnon, sizeof(turnon)) < 0) {
+   if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (sockopt_val_t)&turnon, sizeof(turnon)) < 0) {
       Emsg1(M_WARNING, 0, _("Cannot set SO_REUSEADDR on socket: %s\n") , strerror(errno));
    }
 
@@ -282,7 +282,7 @@ bnet_accept(BSOCK *bsock, char *who)
    /*
     * Receive notification when connection dies.
     */
-   if (setsockopt(newsockfd, SOL_SOCKET, SO_KEEPALIVE, &turnon, sizeof(turnon)) < 0) {
+   if (setsockopt(newsockfd, SOL_SOCKET, SO_KEEPALIVE, (sockopt_val_t)&turnon, sizeof(turnon)) < 0) {
       Emsg1(M_WARNING, 0, _("Cannot set SO_KEEPALIVE on socket: %s\n"), strerror(errno));
    }