Kaynağa Gözat

Some changes for HP-UX

John C. Frickson 9 yıl önce
ebeveyn
işleme
79fbe3579c
8 değiştirilmiş dosya ile 110 ekleme ve 45 silme
  1. 9 10
      Makefile.in
  2. 60 9
      configure
  3. 9 9
      configure.ac
  4. 1 6
      include/config.h.in
  5. 4 0
      include/utils.h
  6. 4 0
      src/check_nrpe.c
  7. 18 11
      src/nrpe.c
  8. 5 0
      src/utils.c

+ 9 - 10
Makefile.in

@@ -33,7 +33,7 @@ SRC_INIT=@src_init@
 
 
 all:
-	$(MAKE) -C $(SRC_BASE)
+	cd $(SRC_BASE); $(MAKE); cd ..
 
 	@echo ""
 	@echo "*** Compile finished ***"
@@ -46,19 +46,18 @@ all:
 	@echo ""
 
 nrpe:
-	$(MAKE) -C $(SRC_BASE)
+	cd $(SRC_BASE); $(MAKE); cd ..
 
 check_nrpe:
-	$(MAKE) -C $(SRC_BASE)
+	cd $(SRC_BASE); $(MAKE); cd ..
 
 install-plugin:
-	$(MAKE) -C $(SRC_BASE) $@
+	cd $(SRC_BASE); $(MAKE) $@; cd ..
 
 install-daemon:
-	$(MAKE) -C $(SRC_BASE) $@
+	cd $(SRC_BASE); $(MAKE) $@; cd ..
 
 install:
-	$(MAKE) -C $(SRC_BASE) $@
 
 install-inetd:
 	@if test $(SRC_INETD) = unknown; then \
@@ -86,14 +85,14 @@ solaris-package:
 	fi
 
 clean:
-	$(MAKE) -C $(SRC_BASE) $@
-	$(MAKE) -C package/solaris $@
+	cd $(SRC_BASE); $(MAKE) $@; cd ..
+	cd package/solaris; $(MAKE) $@; cd ../..
 	rm -f core
 	rm -f *~ */*~
 
 distclean: clean
-	$(MAKE) -C $(SRC_BASE) $@
-	$(MAKE) -C package/solaris $@
+	cd $(SRC_BASE); $(MAKE) $@; cd ..
+	cd package/solaris; $(MAKE) $@; cd ../..
 	rm -f config.log config.status config.cache nrpe.cfg nrpe.xinetd subst $(SRC_INCLUDE)/config.h init-script init-script.debian init-script.freebsd init-script.suse
 	rm -f sample-config/*.cfg sample-config/*.xinetd
 	rm -f Makefile

+ 60 - 9
configure

@@ -624,6 +624,7 @@ ac_includes_default="\
 #endif"
 
 ac_subst_vars='PERL
+sslbin
 EGREP
 GREP
 CPP
@@ -6635,6 +6636,17 @@ $as_echo "#define INT32_T_IS_USHORT 1" >>confdefs.h
 	fi
 fi
 
+ac_fn_c_check_type "$LINENO" "struct sockaddr_storage" "ac_cv_type_struct_sockaddr_storage" "#include <sys/socket.h>
+"
+if test "x$ac_cv_type_struct_sockaddr_storage" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+_ACEOF
+
+
+fi
+
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for va_copy" >&5
 $as_echo_n "checking for va_copy... " >&6; }
@@ -7183,16 +7195,55 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
-						echo ""
-			echo "*** Generating DH Parameters for SSL/TLS ***"
-			if test -f "$ssldir/sbin/openssl"; then
-				sslbin=$ssldir/sbin/openssl
-			else
-				sslbin=$ssldir/bin/openssl
+			# Extract the first word of "openssl", so it can be a program name with args.
+set dummy openssl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_sslbin+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $sslbin in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_sslbin="$sslbin" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR$ssldir/sbin/openssl$PATH_SEPARATOR$ssldir/bin/openssl
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_sslbin="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_sslbin" && ac_cv_path_sslbin="value-if-not-found"
+  ;;
+esac
+fi
+sslbin=$ac_cv_path_sslbin
+if test -n "$sslbin"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sslbin" >&5
+$as_echo "$sslbin" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+						if test -f "$sslbin"; then
+				echo ""
+				echo "*** Generating DH Parameters for SSL/TLS ***"
+				# awk to strip off meta data at bottom of dhparam output
+#				$sslbin dhparam -C 2048 | awk '/^-----/ {exit} {print}' > include/dh.h
+				$sslbin dhparam -C 1024 | awk '/^-----/ {exit} {print}' > include/dh.h
 			fi
-			# awk to strip off meta data at bottom of dhparam output
-#			$sslbin dhparam -C 2048 | awk '/^-----/ {exit} {print}' > include/dh.h
-			$sslbin dhparam -C 1024 | awk '/^-----/ {exit} {print}' > include/dh.h
 		fi
 	fi
 

+ 9 - 9
configure.ac

@@ -178,6 +178,7 @@ if test "$ac_cv_type_int32_t" = no ; then
 	fi
 fi
 
+AC_CHECK_TYPES([struct sockaddr_storage],[],[],[#include <sys/socket.h>])
 
 dnl Check for asprintf() and friends...
 AC_CACHE_CHECK([for va_copy],ac_cv_HAVE_VA_COPY,[
@@ -399,17 +400,16 @@ if test x$check_for_ssl = xyes; then
 
 			AC_DEFINE_UNQUOTED(HAVE_SSL,[1],[Have SSL support])
 	
+			AC_PATH_PROG(sslbin,openssl,value-if-not-found,$PATH$PATH_SEPARATOR$ssldir/sbin/openssl$PATH_SEPARATOR$ssldir/bin/openssl)
+
 			dnl Generate DH parameters
-			echo ""
-			echo "*** Generating DH Parameters for SSL/TLS ***"
-			if test -f "$ssldir/sbin/openssl"; then
-				sslbin=$ssldir/sbin/openssl
-			else
-				sslbin=$ssldir/bin/openssl
+			if test -f "$sslbin"; then
+				echo ""
+				echo "*** Generating DH Parameters for SSL/TLS ***"
+				# awk to strip off meta data at bottom of dhparam output
+#				$sslbin dhparam -C 2048 | awk '/^-----/ {exit} {print}' > include/dh.h
+				$sslbin dhparam -C 1024 | awk '/^-----/ {exit} {print}' > include/dh.h
 			fi
-			# awk to strip off meta data at bottom of dhparam output
-#			$sslbin dhparam -C 2048 | awk '/^-----/ {exit} {print}' > include/dh.h
-			$sslbin dhparam -C 1024 | awk '/^-----/ {exit} {print}' > include/dh.h
 		fi
 	fi
 

+ 1 - 6
include/config.h.in

@@ -33,15 +33,10 @@
 #define NRPE_LOG_FACILITY       @log_facility@
 
 #undef ENABLE_COMMAND_ARGUMENTS
-
 #undef ENABLE_BASH_COMMAND_SUBSTITUTION
-
 #undef socklen_t
-
 #undef HAVE_GETOPT_LONG
-
 #undef HAVE_LIBWRAP
-
 #undef STDC_HEADERS
 #undef HAVE_STRDUP
 #undef HAVE_STRSTR
@@ -100,10 +95,10 @@ typedef int int32_t;
 #undef HAVE___VA_COPY
 
 
-
 #define SOCKET_SIZE_TYPE ""
 #define GETGROUPS_T ""
 #define RETSIGTYPE ""
+#undef HAVE_STRUCT_SOCKADDR_STORAGE
 
 #undef HAVE_GETOPT_H
 #ifdef HAVE_GETOPT_H

+ 4 - 0
include/utils.h

@@ -38,7 +38,11 @@ void generate_crc32_table(void);
 unsigned long calculate_crc32(char*, int);
 void randomize_buffer(char*,int);
 int my_tcp_connect(char*, int, int*);
+#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
 int my_connect(const char*, struct sockaddr_storage*, u_short, int, const char*);
+#else
+int my_connect(const char*, struct sockaddr*, u_short, int, const char*);
+#endif
 void add_listen_addr(struct addrinfo**, int, char*, int);
 int clean_environ(const char *keep_env_vars, const char *nrpe_user);
 char* strip(char*);

+ 4 - 0
src/check_nrpe.c

@@ -26,7 +26,11 @@
 u_short server_port = DEFAULT_SERVER_PORT;
 char *server_name = NULL;
 char *bind_address = NULL;
+#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
 struct sockaddr_storage hostaddr;
+#else
+struct sockaddr hostaddr;
+#endif
 int address_family = AF_UNSPEC;
 char *command_name = NULL;
 int socket_timeout = DEFAULT_SOCKET_TIMEOUT;

+ 18 - 11
src/nrpe.c

@@ -1109,8 +1109,11 @@ static void close_listen_socks(void)
 /* wait for incoming connection requests */
 void wait_for_connections(void)
 {
+#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
 	struct sockaddr_storage from;
-	struct sockaddr_storage addr;
+#else
+	struct sockaddr from;
+#endif
 	socklen_t fromlen;
 	fd_set   *fdset = NULL;
 	int       maxfd = 0, new_sd = 0, i, rc, retval;
@@ -1182,16 +1185,8 @@ void wait_for_connections(void)
 			handle_connection(new_sd);
 
 			/* log info to syslog facility */
-			if (debug == TRUE) {
-				switch (addr.ss_family) {
-				case AF_INET:
-					syslog(LOG_DEBUG, "Connection from %s closed.", remote_host);
-					break;
-				case AF_INET6:
-					syslog(LOG_DEBUG, "Connection from %s closed.", remote_host);
-					break;
-				}
-			}
+			if (debug == TRUE)
+				syslog(LOG_DEBUG, "Connection from %s closed.", remote_host);
 
 			/* close socket prior to exiting */
 			close(new_sd);
@@ -1315,7 +1310,11 @@ void conn_check_peer(int sock)
 #ifdef HAVE_LIBWRAP
 	struct request_info     req;
 #endif
+#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
 	struct sockaddr_storage addr;
+#else
+	struct sockaddr			addr;
+#endif
 	struct sockaddr_in      *nptr;
 	struct sockaddr_in6     *nptr6;
 
@@ -1337,7 +1336,11 @@ void conn_check_peer(int sock)
 		return;
 	}
 
+#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
 	switch (addr.ss_family) {
+#else
+	switch (addr.sa_family) {
+#endif
 
 	case AF_INET:
 		nptr = (struct sockaddr_in *)&addr;
@@ -1359,7 +1362,11 @@ void conn_check_peer(int sock)
 
 	/* is this is a blessed machine? */
 	if (allowed_hosts) {
+#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
 		switch (addr.ss_family) {
+#else
+		switch (addr.sa_family) {
+#endif
 
 		case AF_INET:
 			/* log info to syslog facility */

+ 5 - 0
src/utils.c

@@ -118,8 +118,13 @@ void randomize_buffer(char *buffer, int buffer_size)
 }
 
 /* opens a connection to a remote host */
+#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
 int my_connect(const char *host, struct sockaddr_storage *hostaddr, u_short port,
 			   int address_family, const char *bind_address)
+#else
+int my_connect(const char *host, struct sockaddr *hostaddr, u_short port,
+			   int address_family, const char *bind_address)
+#endif
 {
 	struct addrinfo hints, *ai, *aitop;
 	char ntop[NI_MAXHOST], strport[NI_MAXSERV];