--- fping-2.4b2_to/fping.c.orig Tue Apr 26 10:51:44 2011
+++ fping-2.4b2_to/fping.c Tue Apr 26 10:52:56 2011
@@ -110,6 +110,13 @@
#include <sys/select.h>
#endif /* HAVE_SYS_SELECT_H */
+/* Solaris authentication support */
+#define _SOLARIS 1
+#ifdef _SOLARIS
+#undef ENABLE_F_OPTION
+#define ENABLE_F_OPTION 0
+#endif /* _SOLARIS */
+
#endif /* WIN32 */
#include "options.h"
@@ -356,6 +363,7 @@
int handle_random_icmp( struct icmp *p, int psize, struct sockaddr_in *addr );
char *sprint_tm( int t );
+
#endif /* _NO_PROTO */
/*** function definitions ***/
@@ -387,9 +395,14 @@
struct protoent *proto;
char *buf;
uid_t uid;
+ boolean_t raw_req;
- /* check if we are root */
+#ifdef _SOLARIS
+ verbose_flag = 1;
+ prog = argv[0];
+#else
+ /* check if we are root */
if( geteuid() )
{
fprintf( stderr,
@@ -398,6 +411,7 @@
exit( 3 );
}/* IF */
+#endif /* _SOLARIS */
/* confirm that ICMP is available on this machine */
if( ( proto = getprotobyname( "icmp" ) ) == NULL )
@@ -409,11 +423,13 @@
if( s < 0 )
errno_crash_and_burn( "can't create raw socket" );
+#ifndef _SOLARIS
if( ( uid = getuid() ) )
{
seteuid( getuid() );
}/* IF */
+#endif
prog = argv[0];
ident = getpid() & 0xFFFF;
@@ -599,7 +615,11 @@
perhost_interval < MIN_PERHOST_INTERVAL * 100 ||
retry > MAX_RETRY ||
timeout < MIN_TIMEOUT * 100 )
+#ifndef _SOLARIS
&& getuid() )
+#else
+ )
+#endif /* _SOLARIS */
{
fprintf( stderr, "%s: these options are too risky for mere mortals.\n", prog );
fprintf( stderr, "%s: You need i >= %u, p >= %u, r < %u, and t >= %u\n",