statd: Replace note() with xlog() in rpc.statd
authorChuck Lever <chuck.lever@oracle.com>
Tue, 24 Nov 2009 13:36:20 +0000 (08:36 -0500)
committerSteve Dickson <steved@redhat.com>
Tue, 24 Nov 2009 13:36:20 +0000 (08:36 -0500)
To facilitate code sharing between statd and sm-notify (and with other
components of nfs-utils), replace sm-notify's nsm_log() with xlog().

Since opt_quiet is used in only a handful of insignificant cases, it
is removed.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
15 files changed:
support/include/ha-callout.h
utils/statd/Makefile.am
utils/statd/callback.c
utils/statd/log.c [deleted file]
utils/statd/log.h [deleted file]
utils/statd/misc.c
utils/statd/monitor.c
utils/statd/rmtcall.c
utils/statd/simu.c
utils/statd/simulate.c
utils/statd/stat.c
utils/statd/statd.c
utils/statd/statd.h
utils/statd/svc_run.c
utils/statd/version.h [deleted file]

index efb70fb..1164336 100644 (file)
@@ -53,11 +53,7 @@ ha_callout(char *event, char *arg1, char *arg2, int arg3)
                default: pid = waitpid(pid, &ret, 0);
        }
        sigaction(SIGCHLD, &oldact, &newact);
-#ifdef dprintf
-       dprintf(N_DEBUG, "ha callout returned %d\n", WEXITSTATUS(ret));
-#else
        xlog(D_GENERAL, "ha callout returned %d\n", WEXITSTATUS(ret));
-#endif
 }
 
 #endif
index 8a3ba4e..19ba7b4 100644 (file)
@@ -13,9 +13,9 @@ RPCPREFIX     = rpc.
 KPREFIX                = @kprefix@
 sbin_PROGRAMS  = statd sm-notify
 dist_sbin_SCRIPTS      = start-statd
-statd_SOURCES = callback.c notlist.c log.c misc.c monitor.c \
+statd_SOURCES = callback.c notlist.c misc.c monitor.c \
                simu.c stat.c statd.c svc_run.c rmtcall.c \
-               sm_inter_clnt.c sm_inter_svc.c sm_inter_xdr.c log.h \
+               sm_inter_clnt.c sm_inter_svc.c sm_inter_xdr.c \
                notlist.h statd.h system.h version.h sm_inter.h
 sm_notify_SOURCES = sm-notify.c
 
index 8885238..2f98aeb 100644 (file)
@@ -35,12 +35,12 @@ sm_notify_1_svc(struct stat_chge *argp, struct svc_req *rqstp)
        struct sockaddr_in *sin = nfs_getrpccaller_in(rqstp->rq_xprt);
        char *ip_addr = xstrdup(inet_ntoa(sin->sin_addr));
 
-       dprintf(N_DEBUG, "Received SM_NOTIFY from %s, state: %d",
+       xlog(D_CALL, "Received SM_NOTIFY from %s, state: %d",
                                argp->mon_name, argp->state);
 
        /* quick check - don't bother if we're not monitoring anyone */
        if (rtnl == NULL) {
-               note(N_WARNING, "SM_NOTIFY from %s while not monitoring any hosts.",
+               xlog_warn("SM_NOTIFY from %s while not monitoring any hosts",
                                argp->mon_name);
                return ((void *) &result);
        }
diff --git a/utils/statd/log.c b/utils/statd/log.c
deleted file mode 100644 (file)
index a6ca996..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 1995 Olaf Kirch
- * Modified by Jeffrey A. Uphoff, 1995, 1997, 1999.
- * Modified by H.J. Lu, 1998.
- * Modified by Lon Hohberger, Oct. 2000
- *
- * NSM for Linux.
- */
-
-/* 
- *     log.c - logging functions for lockd/statd
- *     260295   okir   started with simply syslog logging.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <syslog.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <time.h>
-#include <sys/types.h>
-#include "log.h"
-#include "statd.h"
-
-static pid_t   mypid;
-                                                               /* Turns on logging to console/stderr. */
-#if 0
-static int     opt_debug = 0;  /* Will be command-line option, eventually */
-#endif
-
-void log_init(void)
-{
-       if (!(run_mode & MODE_LOG_STDERR)) 
-               openlog(name_p, LOG_PID | LOG_NDELAY, LOG_DAEMON);
-
-       mypid = getpid();
-
-       note(N_WARNING,"Version %s Starting",version_p);
-}
-
-void log_background(void)
-{
-       /* NOP */
-}
-
-void die(char *fmt, ...)
-{
-       char    buffer[1024];
-       va_list ap;
-
-       va_start(ap, fmt);
-       vsnprintf (buffer, 1024, fmt, ap);
-       va_end(ap);
-       buffer[1023]=0;
-
-       note(N_FATAL, "%s", buffer);
-
-#ifndef DEBUG
-       exit (2);
-#else
-       abort();        /* make a core */
-#endif
-}
-
-void note(int level, char *fmt, ...)
-{
-       char    buffer[1024];
-       va_list ap;
-
-       va_start(ap, fmt);
-       vsnprintf (buffer, 1024, fmt, ap);
-       va_end(ap);
-       buffer[1023]=0;
-
-       if ((!(run_mode & MODE_LOG_STDERR)) && (level < N_DEBUG)) {
-               syslog(level, "%s", buffer);
-       } else if (run_mode & MODE_LOG_STDERR) {
-               /* Log everything, including dprintf() stuff to stderr */
-               time_t          now;
-               struct tm *     tm;
-
-               time(&now);
-               tm = localtime(&now);
-               fprintf (stderr, "%02d/%02d/%04d %02d:%02d:%02d %s[%d]: %s\n",
-                       tm->tm_mon + 1, tm->tm_mday, tm->tm_year + 1900,
-                       tm->tm_hour, tm->tm_min, tm->tm_sec,
-                       name_p, mypid,
-                       buffer);
-       }
-}
diff --git a/utils/statd/log.h b/utils/statd/log.h
deleted file mode 100644 (file)
index fc55d3c..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 1995 Olaf Kirch
- * Modified by Jeffrey A. Uphoff, 1996, 1997, 1999.
- * Modified by Lon Hohberger, Oct. 2000
- *
- * NSM for Linux.
- */
-
-/*
- *     logging functionality
- *     260295  okir
- */
-
-#ifndef _LOCKD_LOG_H_
-#define _LOCKD_LOG_H_
-
-#include <syslog.h>
-
-void   log_init(void);
-void   log_background(void);
-void   log_enable(int facility);
-int    log_enabled(int facility);
-void   note(int level, char *fmt, ...);
-void   die(char *fmt, ...);
-
-/*
- * Map per-application severity to system severity. What's fatal for
- * lockd is merely an itching spot from the universe's point of view.
- */
-#define N_CRIT         LOG_CRIT
-#define N_FATAL                LOG_ERR
-#define N_ERROR                LOG_WARNING
-#define N_WARNING      LOG_NOTICE
-#define N_DEBUG                LOG_DEBUG
-
-#ifdef DEBUG
-#define dprintf                note
-#else
-#define dprintf                if (run_mode & MODE_LOG_STDERR) note
-#endif
-
-#endif /* _LOCKD_LOG_H_ */
index 7256291..44af30e 100644 (file)
@@ -29,8 +29,7 @@ xmalloc (size_t size)
     return ((void *)NULL);
 
   if (!(ptr = malloc (size)))
-    /* SHIT!  SHIT!  SHIT! */
-    die ("malloc failed");
+    xlog_err ("malloc failed");
 
   return (ptr);
 }
@@ -46,7 +45,7 @@ xstrdup (const char *string)
 
   /* Will only fail if underlying malloc() fails (ENOMEM). */
   if (!(result = strdup (string)))
-    die ("strdup failed");
+    xlog_err ("strdup failed");
 
   return (result);
 }
@@ -62,16 +61,15 @@ xunlink (char *path, char *host)
 
        tozap = malloc(strlen(path)+strlen(host)+2);
        if (tozap == NULL) {
-               note(N_ERROR, "xunlink: malloc failed: errno %d (%s)", 
-                       errno, strerror(errno));
+               xlog(L_ERROR, "xunlink: malloc failed: errno %d (%m)", errno);
                return;
        }
        sprintf (tozap, "%s/%s", path, host);
 
        if (unlink (tozap) == -1)
-               note(N_ERROR, "unlink (%s): %s", tozap, strerror (errno));
+               xlog(L_ERROR, "unlink (%s): %m", tozap);
        else
-               dprintf (N_DEBUG, "Unlinked %s", tozap);
+               xlog(D_GENERAL, "Unlinked %s", tozap);
 
        free(tozap);
 }
index a2c9e2b..09f03da 100644 (file)
@@ -43,8 +43,7 @@ caller_is_localhost(struct svc_req *rqstp)
 
        caller = sin->sin_addr;
        if (caller.s_addr != htonl(INADDR_LOOPBACK)) {
-               note(N_WARNING,
-                       "Call to statd from non-local host %s",
+               xlog_warn("Call to statd from non-local host %s",
                        inet_ntoa(caller));
                return 0;
        }
@@ -69,6 +68,8 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp)
        char            *dnsname;
        struct hostent  *hostinfo = NULL;
 
+       xlog(D_CALL, "Received SM_MON for %s from %s", mon_name, my_name);
+
        /* Assume that we'll fail. */
        result.res_stat = STAT_FAIL;
        result.state = -1;      /* State is undefined for STAT_FAIL. */
@@ -92,8 +93,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp)
        if (id->my_prog != 100021 ||
            (id->my_proc != 16 && id->my_proc != 24))
        {
-               note(N_WARNING,
-                       "Attempt to register callback to %d/%d",
+               xlog_warn("Attempt to register callback to %d/%d",
                        id->my_prog, id->my_proc);
                goto failure;
        }
@@ -105,12 +105,12 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp)
 
        /* must check for /'s in hostname!  See CERT's CA-96.09 for details. */
        if (strchr(mon_name, '/') || mon_name[0] == '.') {
-               note(N_CRIT, "SM_MON request for hostname containing '/' "
+               xlog(L_ERROR, "SM_MON request for hostname containing '/' "
                     "or starting '.': %s", mon_name);
-               note(N_CRIT, "POSSIBLE SPOOF/ATTACK ATTEMPT!");
+               xlog(L_ERROR, "POSSIBLE SPOOF/ATTACK ATTEMPT!");
                goto failure;
        } else if ((hostinfo = gethostbyname(mon_name)) == NULL) {
-               note(N_WARNING, "gethostbyname error for %s", mon_name);
+               xlog_warn("gethostbyname error for %s", mon_name);
                goto failure;
        }
 
@@ -152,7 +152,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp)
                    NL_MY_VERS(clnt) == id->my_vers &&
                    memcmp(NL_PRIV(clnt), argp->priv, SM_PRIV_SIZE) == 0) {
                        /* Hey!  We already know you guys! */
-                       dprintf(N_DEBUG,
+                       xlog(D_GENERAL,
                                "Duplicate SM_MON request for %s "
                                "from procedure on %s",
                                mon_name, my_name);
@@ -168,7 +168,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp)
         * doesn't fail.  (I should probably fix this assumption.)
         */
        if (!(clnt = nlist_new(my_name, mon_name, 0))) {
-               note(N_WARNING, "out of memory");
+               xlog_warn("out of memory");
                goto failure;
        }
 
@@ -188,7 +188,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp)
        if ((fd = open(path, O_WRONLY|O_SYNC|O_CREAT|O_APPEND,
                       S_IRUSR|S_IWUSR)) < 0) {
                /* Didn't fly.  We won't monitor. */
-               note(N_ERROR, "creat(%s) failed: %s", path, strerror (errno));
+               xlog(L_ERROR, "creat(%s) failed: %m", path);
                nlist_free(NULL, clnt);
                free(path);
                goto failure;
@@ -205,7 +205,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp)
                if (e+1-buf != LINELEN) abort();
                e += sprintf(e, " %s %s\n", mon_name, my_name);
                if (write(fd, buf, e-buf) != (e-buf)) {
-                       note(N_WARNING, "writing to %s failed: errno %d (%s)",
+                       xlog_warn("writing to %s failed: errno %d (%s)",
                                path, errno, strerror(errno));
                }
        }
@@ -215,7 +215,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp)
        ha_callout("add-client", mon_name, my_name, -1);
        nlist_insert(&rtnl, clnt);
        close(fd);
-       dprintf(N_DEBUG, "MONITORING %s for %s", mon_name, my_name);
+       xlog(D_GENERAL, "MONITORING %s for %s", mon_name, my_name);
  success:
        result.res_stat = STAT_SUCC;
        /* SUN's sm_inter.x says this should be "state number of local site".
@@ -232,7 +232,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp)
        return (&result);
 
 failure:
-       note(N_WARNING, "STAT_FAIL to %s for SM_MON of %s", my_name, mon_name);
+       xlog_warn("STAT_FAIL to %s for SM_MON of %s", my_name, mon_name);
        return (&result);
 }
 
@@ -320,6 +320,8 @@ sm_unmon_1_svc(struct mon_id *argp, struct svc_req *rqstp)
        struct my_id    *id = &argp->my_id;
        char            *cp;
 
+       xlog(D_CALL, "Received SM_UNMON for %s from %s", mon_name, my_name);
+
        result.state = MY_STATE;
 
        if (!caller_is_localhost(rqstp))
@@ -333,9 +335,8 @@ sm_unmon_1_svc(struct mon_id *argp, struct svc_req *rqstp)
 
        /* Check if we're monitoring anyone. */
        if (rtnl == NULL) {
-               note(N_WARNING,
-                       "Received SM_UNMON request from %s for %s while not "
-                       "monitoring any hosts.", my_name, argp->mon_name);
+               xlog_warn("Received SM_UNMON request from %s for %s while not "
+                       "monitoring any hosts", my_name, argp->mon_name);
                return (&result);
        }
        clnt = rtnl;
@@ -352,7 +353,7 @@ sm_unmon_1_svc(struct mon_id *argp, struct svc_req *rqstp)
                        NL_MY_PROG(clnt) == id->my_prog &&
                        NL_MY_VERS(clnt) == id->my_vers) {
                        /* Match! */
-                       dprintf(N_DEBUG, "UNMONITORING %s for %s",
+                       xlog(D_GENERAL, "UNMONITORING %s for %s",
                                        mon_name, my_name);
 
                        /* PRC: do the HA callout: */
@@ -367,7 +368,7 @@ sm_unmon_1_svc(struct mon_id *argp, struct svc_req *rqstp)
        }
 
  failure:
-       note(N_WARNING, "Received erroneous SM_UNMON request from %s for %s",
+       xlog_warn("Received erroneous SM_UNMON request from %s for %s",
                my_name, mon_name);
        return (&result);
 }
@@ -381,13 +382,15 @@ sm_unmon_all_1_svc(struct my_id *argp, struct svc_req *rqstp)
        notify_list     *clnt;
        char            *my_name = argp->my_name;
 
+       xlog(D_CALL, "Received SM_UNMON_ALL for %s", my_name);
+
        if (!caller_is_localhost(rqstp))
                goto failure;
 
        result.state = MY_STATE;
 
        if (rtnl == NULL) {
-               note(N_WARNING, "Received SM_UNMON_ALL request from %s "
+               xlog_warn("Received SM_UNMON_ALL request from %s "
                        "while not monitoring any hosts", my_name);
                return (&result);
        }
@@ -401,7 +404,7 @@ sm_unmon_all_1_svc(struct my_id *argp, struct svc_req *rqstp)
                        char            mon_name[SM_MAXSTRLEN + 1];
                        notify_list     *temp;
 
-                       dprintf(N_DEBUG,
+                       xlog(D_GENERAL,
                                "UNMONITORING (SM_UNMON_ALL) %s for %s",
                                NL_MON_NAME(clnt), NL_MY_NAME(clnt));
                        strncpy(mon_name, NL_MON_NAME(clnt),
@@ -419,8 +422,8 @@ sm_unmon_all_1_svc(struct my_id *argp, struct svc_req *rqstp)
        }
 
        if (!count) {
-               dprintf(N_DEBUG, "SM_UNMON_ALL request from %s with no "
-                       "SM_MON requests from it.", my_name);
+               xlog(D_GENERAL, "SM_UNMON_ALL request from %s with no "
+                       "SM_MON requests from it", my_name);
        }
 
  failure:
index cc1a4a4..5700fc7 100644 (file)
@@ -43,7 +43,6 @@
 #include "sm_inter.h"
 #include "statd.h"
 #include "notlist.h"
-#include "log.h"
 #include "ha-callout.h"
 
 #if SIZEOF_SOCKLEN_T - 0 == 0
@@ -81,7 +80,7 @@ statd_get_socket(void)
                if (sockfd >= 0) close(sockfd);
 
                if ((sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
-                       note(N_CRIT, "%s: Can't create socket: %m", __func__);
+                       xlog(L_ERROR, "%s: Can't create socket: %m", __func__);
                        return -1;
                }
 
@@ -91,7 +90,7 @@ statd_get_socket(void)
                sin.sin_addr.s_addr = INADDR_ANY;
 
                if (bindresvport(sockfd, &sin) < 0) {
-                       dprintf(N_WARNING, "%s: can't bind to reserved port",
+                       xlog(D_GENERAL, "%s: can't bind to reserved port",
                                        __func__);
                        break;
                }
@@ -150,7 +149,7 @@ xmit_call(struct sockaddr_in *sin,
 
        /* Encode the RPC header part and payload */
        if (!xdr_callmsg(xdrs, &mesg) || !func(xdrs, obj)) {
-               dprintf(N_WARNING, "%s: can't encode RPC message!", __func__);
+               xlog(D_GENERAL, "%s: can't encode RPC message!", __func__);
                xdr_destroy(xdrs);
                return 0;
        }
@@ -160,9 +159,9 @@ xmit_call(struct sockaddr_in *sin,
 
        if ((err = sendto(sockfd, msgbuf, msglen, 0,
                        (struct sockaddr *) sin, sizeof(*sin))) < 0) {
-               dprintf(N_WARNING, "%s: sendto failed: %m", __func__);
+               xlog_warn("%s: sendto failed: %m", __func__);
        } else if (err != msglen) {
-               dprintf(N_WARNING, "%s: short write: %m", __func__);
+               xlog_warn("%s: short write: %m", __func__);
        }
 
        xdr_destroy(xdrs);
@@ -182,7 +181,7 @@ recv_rply(struct sockaddr_in *sin, u_long *portp)
        /* Receive message */
        if ((msglen = recvfrom(sockfd, msgbuf, sizeof(msgbuf), 0,
                        (struct sockaddr *) sin, &alen)) < 0) {
-               dprintf(N_WARNING, "%s: recvfrom failed: %m", __func__);
+               xlog_warn("%s: recvfrom failed: %m", __func__);
                return NULL;
        }
 
@@ -194,19 +193,19 @@ recv_rply(struct sockaddr_in *sin, u_long *portp)
        mesg.rm_reply.rp_acpt.ar_results.proc = (xdrproc_t) xdr_void;
 
        if (!xdr_replymsg(xdrs, &mesg)) {
-               note(N_WARNING, "%s: can't decode RPC message!", __func__);
+               xlog_warn("%s: can't decode RPC message!", __func__);
                goto done;
        }
 
        if (mesg.rm_reply.rp_stat != 0) {
-               note(N_WARNING, "%s: [%s] RPC status %d", 
+               xlog_warn("%s: [%s] RPC status %d", 
                                __func__,
                                inet_ntoa(sin->sin_addr),
                                mesg.rm_reply.rp_stat);
                goto done;
        }
        if (mesg.rm_reply.rp_acpt.ar_stat != 0) {
-               note(N_WARNING, "%s: [%s] RPC status %d",
+               xlog_warn("%s: [%s] RPC status %d",
                                __func__,
                                inet_ntoa(sin->sin_addr),
                                mesg.rm_reply.rp_acpt.ar_stat);
@@ -224,14 +223,13 @@ recv_rply(struct sockaddr_in *sin, u_long *portp)
                        strncpy (addr, inet_ntoa(lp->addr),
                                 sizeof (addr) - 1);
                        addr [sizeof (addr) - 1] = '\0';
-                       dprintf(N_WARNING, "%s: address mismatch: "
+                       xlog_warn("%s: address mismatch: "
                                "expected %s, got %s", __func__,
                                addr, inet_ntoa(sin->sin_addr));
                }
                if (lp->port == 0) {
                        if (!xdr_u_long(xdrs, portp)) {
-                               note(N_WARNING,
-                                       "%s: [%s] can't decode reply body!",
+                               xlog_warn("%s: [%s] can't decode reply body!",
                                        __func__,
                                        inet_ntoa(sin->sin_addr));
                                lp = NULL;
@@ -260,7 +258,7 @@ process_entry(notify_list *lp)
 /*     __u32                   proc, vers, prog; */
 
        if (NL_TIMES(lp) == 0) {
-               note(N_DEBUG, "%s: Cannot notify %s, giving up.",
+               xlog(D_GENERAL, "%s: Cannot notify %s, giving up",
                                __func__, inet_ntoa(NL_ADDR(lp)));
                return 0;
        }
@@ -286,7 +284,7 @@ process_entry(notify_list *lp)
 
        lp->xid = xmit_call(&sin, prog, vers, proc, func, objp);
        if (!lp->xid) {
-               note(N_WARNING, "%s: failed to notify port %d",
+               xlog_warn("%s: failed to notify port %d",
                                __func__, ntohs(lp->port));
        }
        NL_TIMES(lp) -= 1;
@@ -319,10 +317,10 @@ process_reply(FD_SET_TYPE *rfds)
                        nlist_insert_timer(&notify, lp);
                        return 1;
                }
-               note(N_WARNING, "%s: [%s] service %d not registered",
+               xlog_warn("%s: [%s] service %d not registered",
                        __func__, inet_ntoa(lp->addr), NL_MY_PROG(lp));
        } else {
-               dprintf(N_DEBUG, "%s: Callback to %s (for %d) succeeded.",
+               xlog(D_GENERAL, "%s: Callback to %s (for %d) succeeded",
                        __func__, NL_MY_NAME(lp), NL_MON_NAME(lp));
        }
        nlist_free(&notify, lp);
@@ -346,8 +344,8 @@ process_notify_list(void)
                        nlist_remove(&notify, entry);
                        nlist_insert_timer(&notify, entry);
                } else {
-                       note(N_ERROR,
-                               "%s: Can't callback %s (%d,%d), giving up.",
+                       xlog(L_ERROR,
+                               "%s: Can't callback %s (%d,%d), giving up",
                                        __func__,
                                        NL_MY_NAME(entry),
                                        NL_MY_PROG(entry),
index a7ecb85..7df04d9 100644 (file)
@@ -27,24 +27,26 @@ sm_simu_crash_1_svc (void *argp, struct svc_req *rqstp)
   static char *result = NULL;
   struct in_addr caller;
 
+  xlog(D_CALL, "Received SM_SIMU_CRASH");
+
   if (sin->sin_family != AF_INET) {
-    note(N_WARNING, "Call to statd from non-AF_INET address");
+    xlog_warn("Call to statd from non-AF_INET address");
     goto failure;
   }
 
   caller = sin->sin_addr;
   if (caller.s_addr != htonl(INADDR_LOOPBACK)) {
-    note(N_WARNING, "Call to statd from non-local host %s",
+    xlog_warn("Call to statd from non-local host %s",
       inet_ntoa(caller));
     goto failure;
   }
 
   if (ntohs(sin->sin_port) >= 1024) {
-    note(N_WARNING, "Call to statd-simu-crash from unprivileged port");
+    xlog_warn("Call to statd-simu-crash from unprivileged port");
     goto failure;
   }
 
-  note (N_WARNING, "*** SIMULATING CRASH! ***");
+  xlog_warn("*** SIMULATING CRASH! ***");
   my_svc_exit ();
 
   if (rtnl)
index de8f1c9..4ed1468 100644 (file)
@@ -38,7 +38,9 @@ extern void svc_exit (void);
 void
 simulator (int argc, char **argv)
 {
-  log_enable (1);
+  xlog_stderr (1);
+  xlog_syslog (0);
+  xlog_open ("statd simulator");
 
   if (argc == 2)
     if (!strcasecmp (*argv, "crash"))
@@ -61,7 +63,7 @@ simulator (int argc, char **argv)
       simulate_mon (*(&argv[1]), *(&argv[2]), *(&argv[3]), *(&argv[4]),
                    *(&argv[5]));
   }
-  die ("WTF?  Give me something I can use!");
+  xlog_err ("WTF?  Give me something I can use!");
 }
 
 static void
@@ -72,11 +74,11 @@ simulate_mon (char *calling, char *monitoring, char *as, char *proggy,
   sm_stat_res *result;
   mon mon;
 
-  dprintf (N_DEBUG, "Calling %s (as %s) to monitor %s", calling, as,
+  xlog (D_GENERAL, "Calling %s (as %s) to monitor %s", calling, as,
           monitoring);
 
   if ((client = clnt_create (calling, SM_PROG, SM_VERS, "udp")) == NULL)
-    die ("%s", clnt_spcreateerror ("clnt_create"));
+    xlog_err ("%s", clnt_spcreateerror ("clnt_create"));
 
   memcpy (mon.priv, fool, SM_PRIV_SIZE);
   mon.mon_id.my_id.my_name = xstrdup (as);
@@ -87,16 +89,15 @@ simulate_mon (char *calling, char *monitoring, char *as, char *proggy,
   mon.mon_id.mon_name = monitoring;
 
   if (!(result = sm_mon_1 (&mon, client)))
-    die ("%s", clnt_sperror (client, "sm_mon_1"));
+    xlog_err ("%s", clnt_sperror (client, "sm_mon_1"));
 
   free (mon.mon_id.my_id.my_name);
 
   if (result->res_stat != STAT_SUCC) {
-    note (N_FATAL, "SM_MON request failed, state: %d", result->state);
-    exit (0);
+    xlog_err ("SM_MON request failed, state: %d", result->state);
   } else {
-    dprintf (N_DEBUG, "SM_MON result successful, state: %d\n", result->state);
-    dprintf (N_DEBUG, "Waiting for callback.");
+    xlog (D_GENERAL, "SM_MON result successful, state: %d\n", result->state);
+    xlog (D_GENERAL, "Waiting for callback");
     daemon_simulator ();
     exit (0);
   }
@@ -109,11 +110,11 @@ simulate_unmon (char *calling, char *unmonitoring, char *as, char *proggy)
   sm_stat *result;
   mon_id mon_id;
 
-  dprintf (N_DEBUG, "Calling %s (as %s) to unmonitor %s", calling, as,
+  xlog (D_GENERAL, "Calling %s (as %s) to unmonitor %s", calling, as,
           unmonitoring);
 
   if ((client = clnt_create (calling, SM_PROG, SM_VERS, "udp")) == NULL)
-    die ("%s", clnt_spcreateerror ("clnt_create"));
+    xlog_err ("%s", clnt_spcreateerror ("clnt_create"));
 
   mon_id.my_id.my_name = xstrdup (as);
   mon_id.my_id.my_prog = atoi (proggy) * SIM_SM_PROG;
@@ -122,10 +123,10 @@ simulate_unmon (char *calling, char *unmonitoring, char *as, char *proggy)
   mon_id.mon_name = unmonitoring;
 
   if (!(result = sm_unmon_1 (&mon_id, client)))
-    die ("%s", clnt_sperror (client, "sm_unmon_1"));
+    xlog_err ("%s", clnt_sperror (client, "sm_unmon_1"));
 
   free (mon_id.my_id.my_name);
-  dprintf (N_DEBUG, "SM_UNMON request returned state: %d\n", result->state);
+  xlog (D_GENERAL, "SM_UNMON request returned state: %d\n", result->state);
   exit (0);
 }
 
@@ -136,10 +137,10 @@ simulate_unmon_all (char *calling, char *as, char *proggy)
   sm_stat *result;
   my_id my_id;
 
-  dprintf (N_DEBUG, "Calling %s (as %s) to unmonitor all hosts", calling, as);
+  xlog (D_GENERAL, "Calling %s (as %s) to unmonitor all hosts", calling, as);
 
   if ((client = clnt_create (calling, SM_PROG, SM_VERS, "udp")) == NULL)
-    die ("%s", clnt_spcreateerror ("clnt_create"));
+    xlog_err ("%s", clnt_spcreateerror ("clnt_create"));
 
   my_id.my_name = xstrdup (as);
   my_id.my_prog = atoi (proggy) * SIM_SM_PROG;
@@ -147,10 +148,10 @@ simulate_unmon_all (char *calling, char *as, char *proggy)
   my_id.my_proc = SIM_SM_MON;
 
   if (!(result = sm_unmon_all_1 (&my_id, client)))
-    die ("%s", clnt_sperror (client, "sm_unmon_all_1"));
+    xlog_err ("%s", clnt_sperror (client, "sm_unmon_all_1"));
 
   free (my_id.my_name);
-  dprintf (N_DEBUG, "SM_UNMON_ALL request returned state: %d\n", result->state);
+  xlog (D_GENERAL, "SM_UNMON_ALL request returned state: %d\n", result->state);
   exit (0);
 }
 
@@ -160,10 +161,10 @@ simulate_crash (char *host)
   CLIENT *client;
 
   if ((client = clnt_create (host, SM_PROG, SM_VERS, "udp")) == NULL)
-    die ("%s", clnt_spcreateerror ("clnt_create"));
+    xlog_err ("%s", clnt_spcreateerror ("clnt_create"));
 
   if (!sm_simu_crash_1 (NULL, client))
-    die ("%s", clnt_sperror (client, "sm_simu_crash_1"));
+    xlog_err ("%s", clnt_sperror (client, "sm_simu_crash_1"));
 
   exit (0);
 }
@@ -176,18 +177,18 @@ simulate_stat (char *calling, char *monitoring)
   sm_stat_res *result;
   
   if ((client = clnt_create (calling, SM_PROG, SM_VERS, "udp")) == NULL)
-    die ("%s", clnt_spcreateerror ("clnt_create"));
+    xlog_err ("%s", clnt_spcreateerror ("clnt_create"));
 
   checking.mon_name = monitoring;
 
   if (!(result = sm_stat_1 (&checking, client)))
-    die ("%s", clnt_sperror (client, "sm_stat_1"));
+    xlog_err ("%s", clnt_sperror (client, "sm_stat_1"));
 
   if (result->res_stat == STAT_SUCC)
-    dprintf (N_DEBUG, "STAT_SUCC from %s for %s, state: %d", calling,
+    xlog (D_GENERAL, "STAT_SUCC from %s for %s, state: %d", calling,
             monitoring, result->state);
   else
-    dprintf (N_DEBUG, "STAT_FAIL from %s for %s, state: %d", calling,
+    xlog (D_GENERAL, "STAT_FAIL from %s for %s, state: %d", calling,
             monitoring, result->state);
 
   exit (0);
@@ -196,9 +197,8 @@ simulate_stat (char *calling, char *monitoring)
 static void
 sim_killer (int sig)
 {
-  note (N_FATAL, "Simulator caught signal %d, un-registering and exiting.", sig);
   pmap_unset (sim_port, SIM_SM_VERS);
-  exit (0);
+  xlog_err ("Simulator caught signal %d, un-registering and exiting", sig);
 }
 
 static void
@@ -219,7 +219,7 @@ sim_sm_mon_1_svc (struct status *argp, struct svc_req *rqstp)
 {
   static char *result;
 
-  dprintf (N_DEBUG, "Recieved state %d for mon_name %s (opaque \"%s\")",
+  xlog (D_GENERAL, "Recieved state %d for mon_name %s (opaque \"%s\")",
           argp->state, argp->mon_name, argp->priv);
   svc_exit ();
   return ((void *)&result);
index 799239f..477f632 100644 (file)
@@ -42,13 +42,15 @@ sm_stat_1_svc (struct sm_name *argp, struct svc_req *rqstp)
 {
   static sm_stat_res result;
 
+  xlog(D_CALL, "Received SM_STAT from %s", argp->mon_name);
+
   if (gethostbyname (argp->mon_name) == NULL) {
-    note (N_WARNING, "gethostbyname error for %s", argp->mon_name);
+    xlog_warn ("gethostbyname error for %s", argp->mon_name);
     result.res_stat = STAT_FAIL;
-    dprintf (N_DEBUG, "STAT_FAIL for %s", argp->mon_name);
+    xlog (D_GENERAL, "STAT_FAIL for %s", argp->mon_name);
   } else {
     result.res_stat = STAT_SUCC;
-    dprintf (N_DEBUG, "STAT_SUCC for %s", argp->mon_name);
+    xlog (D_GENERAL, "STAT_SUCC for %s", argp->mon_name);
   }
   result.state = MY_STATE;
   return(&result);
index 1c5247e..6148952 100644 (file)
@@ -26,7 +26,6 @@
 #include <sys/wait.h>
 #include <grp.h>
 #include "statd.h"
-#include "version.h"
 #include "nfslib.h"
 
 /* Socket operations */
@@ -50,8 +49,7 @@ int   run_mode = 0;           /* foreground logging mode */
 /* LH - I had these local to main, but it seemed silly to have 
  * two copies of each - one in main(), one static in log.c... 
  * It also eliminates the 256-char static in log.c */
-char *name_p = NULL;
-const char *version_p = NULL;
+static char *name_p = NULL;
 
 /* PRC: a high-availability callout program can be specified with -H
  * When this is done, the program will receive callouts whenever clients
@@ -109,17 +107,15 @@ sm_prog_1_wrapper (struct svc_req *rqstp, register SVCXPRT *transp)
 static void 
 killer (int sig)
 {
-       note (N_FATAL, "Caught signal %d, un-registering and exiting.", sig);
        pmap_unset (SM_PROG, SM_VERS);
-
-       exit (0);
+       xlog_err ("Caught signal %d, un-registering and exiting", sig);
 }
 
 static void
 sigusr (int sig)
 {
        extern void my_svc_exit (void);
-       dprintf (N_DEBUG, "Caught signal %d, re-notifying (state %d).", sig,
+       xlog(D_GENERAL, "Caught signal %d, re-notifying (state %d)", sig,
                                                                MY_STATE);
        my_svc_exit();
 }
@@ -141,7 +137,7 @@ static void log_modes(void)
        if (run_mode & MODE_LOG_STDERR)
                strcat(buf,"Log-STDERR ");
 
-       note(N_WARNING,buf);
+       xlog_warn(buf);
 }
 
 /*
@@ -175,13 +171,12 @@ static void create_pidfile(void)
        unlink(pidfile);
        fp = fopen(pidfile, "w");
        if (!fp)
-               die("Opening %s failed: %s\n",
-                   pidfile, strerror(errno));
+               xlog_err("Opening %s failed: %m\n", pidfile);
        fprintf(fp, "%d\n", getpid());
        pidfd = dup(fileno(fp));
        if (fclose(fp) < 0) {
-               note(N_WARNING, "Flushing pid file failed: errno %d (%s)\n",
-                       errno, strerror(errno));
+               xlog_warn("Flushing pid file failed: errno %d (%m)\n",
+                       errno);
        }
 }
 
@@ -189,8 +184,8 @@ static void truncate_pidfile(void)
 {
        if (pidfd >= 0) {
                if (ftruncate(pidfd, 0) < 0) {
-                       note(N_WARNING, "truncating pid file failed: errno %d (%s)\n",
-                               errno, strerror(errno));
+                       xlog_warn("truncating pid file failed: errno %d (%m)\n",
+                               errno);
                }
        }
 }
@@ -206,8 +201,8 @@ static void drop_privs(void)
        }
 
        if (st.st_uid == 0) {
-               note(N_WARNING, "statd running as root. chown %s to choose different user\n",
-                   SM_DIR);
+               xlog_warn("Running as 'root'.  "
+                       "chown %s to choose different user\n", SM_DIR);
                return;
        }
        /* better chown the pid file before dropping, as if it
@@ -215,14 +210,14 @@ static void drop_privs(void)
         */
        if (pidfd >= 0) {
                if (fchown(pidfd, st.st_uid, st.st_gid) < 0) {
-                       note(N_ERROR, "Unable to change owner of %s: %d (%s)",
+                       xlog(L_ERROR, "Unable to change owner of %s: %d (%s)",
                                        SM_DIR, strerror (errno));
                }
        }
        setgroups(0, NULL);
        if (setgid(st.st_gid) == -1
            || setuid(st.st_uid) == -1) {
-               note(N_ERROR, "Fail to drop privileges");
+               xlog(L_ERROR, "Fail to drop privileges");
                exit(1);
        }
 }
@@ -266,6 +261,8 @@ int main (int argc, char **argv)
 
        /* Default: daemon mode, no other options */
        run_mode = 0;
+       xlog_stderr(0);
+       xlog_syslog(1);
 
        /* Set the basename */
        if ((name_p = strrchr(argv[0],'/')) != NULL) {
@@ -274,13 +271,6 @@ int main (int argc, char **argv)
                name_p = argv[0];
        }
 
-       /* Get the version */
-       if ((version_p = strrchr(VERSION,' ')) != NULL) {
-               version_p++;
-       } else {
-               version_p = VERSION;
-       }
-       
        /* Set hostname */
        MY_NAME = NULL;
 
@@ -289,7 +279,7 @@ int main (int argc, char **argv)
                switch (arg) {
                case 'V':       /* Version */
                case 'v':
-                       printf("%s version %s\n",name_p,version_p);
+                       printf("%s version " VERSION "\n",name_p);
                        exit(0);
                case 'F':       /* Foreground/nodaemon mode */
                        run_mode |= MODE_NODAEMON;
@@ -383,7 +373,6 @@ int main (int argc, char **argv)
                run_sm_notify(out_port);
        }
 
-
        if (!(run_mode & MODE_NODAEMON)) {
                run_mode &= ~MODE_LOG_STDERR;   /* Never log to console in
                                                   daemon mode. */
@@ -455,7 +444,13 @@ int main (int argc, char **argv)
 
        /* Child. */
 
-       log_init (/*name_p,version_p*/);
+       if (run_mode & MODE_LOG_STDERR) {
+               xlog_syslog(0);
+               xlog_stderr(1);
+               xlog_config(D_ALL, 1);
+       }
+       xlog_open(name_p);
+       xlog(L_NOTICE, "Version " VERSION " starting");
 
        log_modes();
 
@@ -505,7 +500,7 @@ int main (int argc, char **argv)
        if (pipefds[1] > 0) {
                status = 0;
                if (write(pipefds[1], &status, 1) != 1) {
-                       note(N_WARNING, "writing to parent pipe failed: errno %d (%s)\n",
+                       xlog_warn("writing to parent pipe failed: errno %d (%s)\n",
                                errno, strerror(errno));
                }
                close(pipefds[1]);
@@ -552,7 +547,7 @@ load_state_number(void)
                return;
 
        if (read(fd, &MY_STATE, sizeof(MY_STATE)) != sizeof(MY_STATE)) {
-               note(N_WARNING, "Unable to read state from '%s': errno %d (%s)",
+               xlog_warn("Unable to read state from '%s': errno %d (%s)",
                                SM_STAT_PATH, errno, strerror(errno));
        }
        close(fd);
@@ -561,7 +556,7 @@ load_state_number(void)
                char buf[20];
                snprintf(buf, sizeof(buf), "%d", MY_STATE);
                if (write(fd, buf, strlen(buf)) != strlen(buf))
-                       note(N_WARNING, "Writing to '%s' failed: errno %d (%s)",
+                       xlog_warn("Writing to '%s' failed: errno %d (%s)",
                                file, errno, strerror(errno));
                close(fd);
        }
index 88ba208..085f32d 100644 (file)
@@ -11,7 +11,7 @@
 
 #include "sm_inter.h"
 #include "system.h"
-#include "log.h"
+#include "xlog.h"
 
 /*
  * Paths and filenames.
@@ -84,10 +84,3 @@ extern int run_mode;
  * another host.... */
 #define STATIC_HOSTNAME 8      /* Always use the hostname set by -n */
 #define        MODE_NO_NOTIFY  16      /* Don't notify peers of a reboot */
-/*
- * Program name and version pointers -- See statd.c for the reasoning
- * as to why they're global.
- */
-extern char *name_p;           /* program basename */
-extern const char *version_p;  /* program version */
-
index 14ee663..d98ecee 100644 (file)
@@ -101,12 +101,12 @@ my_svc_run(void)
 
                        tv.tv_sec  = NL_WHEN(notify) - now;
                        tv.tv_usec = 0;
-                       dprintf(N_DEBUG, "Waiting for reply... (timeo %d)",
+                       xlog(D_GENERAL, "Waiting for reply... (timeo %d)",
                                                        tv.tv_sec);
                        selret = select(FD_SETSIZE, &readfds,
                                (void *) 0, (void *) 0, &tv);
                } else {
-                       dprintf(N_DEBUG, "Waiting for client connections.");
+                       xlog(D_GENERAL, "Waiting for client connections");
                        selret = select(FD_SETSIZE, &readfds,
                                (void *) 0, (void *) 0, (struct timeval *) 0);
                }
@@ -116,8 +116,7 @@ my_svc_run(void)
                        if (errno == EINTR || errno == ECONNREFUSED
                         || errno == ENETUNREACH || errno == EHOSTUNREACH)
                                continue;
-                       note(N_ERROR, "my_svc_run() - select: %s",
-                               strerror (errno));
+                       xlog(L_ERROR, "my_svc_run() - select: %m");
                        return;
 
                case 0:
diff --git a/utils/statd/version.h b/utils/statd/version.h
deleted file mode 100644 (file)
index 12f16bd..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * Copyright (C) 1997-1999 Jeffrey A. Uphoff
- *
- * NSM for Linux.
- */
-
-#define STATD_RELEASE "1.1.1"