Module Name: src Committed By: christos Date: Thu Mar 17 15:25:46 UTC 2016
Modified Files: src/usr.sbin/nfsd: nfsd.8 nfsd.c Log Message: Expose debugging To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/usr.sbin/nfsd/nfsd.8 cvs rdiff -u -r1.65 -r1.66 src/usr.sbin/nfsd/nfsd.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.sbin/nfsd/nfsd.8 diff -u src/usr.sbin/nfsd/nfsd.8:1.23 src/usr.sbin/nfsd/nfsd.8:1.24 --- src/usr.sbin/nfsd/nfsd.8:1.23 Mon Aug 13 04:39:28 2012 +++ src/usr.sbin/nfsd/nfsd.8 Thu Mar 17 11:25:46 2016 @@ -1,4 +1,4 @@ -.\" $NetBSD: nfsd.8,v 1.23 2012/08/13 08:39:28 wiz Exp $ +.\" $NetBSD: nfsd.8,v 1.24 2016/03/17 15:25:46 christos Exp $ .\" .\" Copyright (c) 1989, 1991, 1993 .\" The Regents of the University of California. All rights reserved. @@ -29,7 +29,7 @@ .\" .\" @(#)nfsd.8 8.4 (Berkeley) 3/29/95 .\" -.Dd August 12, 2012 +.Dd March 17, 2016 .Dt NFSD 8 .Os .Sh NAME @@ -39,7 +39,7 @@ server .Sh SYNOPSIS .Nm -.Op Fl 46rut +.Op Fl 46drut .Op Fl n Ar num_threads .Sh DESCRIPTION .Nm @@ -56,6 +56,8 @@ transport are started. .Pp The following options are available: .Bl -tag -width Ds +.It Fl d +Turn on debugging, don't fork and log to stderr. .It Fl r Register the .Tn NFS Index: src/usr.sbin/nfsd/nfsd.c diff -u src/usr.sbin/nfsd/nfsd.c:1.65 src/usr.sbin/nfsd/nfsd.c:1.66 --- src/usr.sbin/nfsd/nfsd.c:1.65 Wed Dec 23 13:41:54 2015 +++ src/usr.sbin/nfsd/nfsd.c Thu Mar 17 11:25:46 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: nfsd.c,v 1.65 2015/12/23 18:41:54 christos Exp $ */ +/* $NetBSD: nfsd.c,v 1.66 2016/03/17 15:25:46 christos Exp $ */ /* * Copyright (c) 1989, 1993, 1994 @@ -42,7 +42,7 @@ __COPYRIGHT("@(#) Copyright (c) 1989, 19 #if 0 static char sccsid[] = "@(#)nfsd.c 8.9 (Berkeley) 3/29/95"; #else -__RCSID("$NetBSD: nfsd.c,v 1.65 2015/12/23 18:41:54 christos Exp $"); +__RCSID("$NetBSD: nfsd.c,v 1.66 2016/03/17 15:25:46 christos Exp $"); #endif #endif /* not lint */ @@ -100,16 +100,21 @@ int nfsd_main(int, char *[]); /* Global defs */ #if defined(DEBUG) || defined(NFSD_RUMP) -#define syslog(e, s, args...) \ -do { \ - fprintf(stderr,(s), ## args); \ - fprintf(stderr, "\n"); \ -} while (/*CONSTCOND*/0) static int debug = 1; #else static int debug = 0; #endif +#define logit(e, s, args...) \ +do { \ + if (debug) { \ + fprintf(stderr,(s), ## args); \ + fprintf(stderr, "\n"); \ + } else { \ + syslog(e, s, ## args); \ + } \ +} while (/*CONSTCOND*/0) + static void nonfs(int); __dead static void usage(void); @@ -124,7 +129,7 @@ worker(void *dummy) memset(&nsd, 0, sizeof(nsd)); while (nfssvc(nfssvc_flag, &nsd) < 0) { if (errno != ENEEDAUTH) { - syslog(LOG_ERR, "nfssvc: %s", strerror(errno)); + logit(LOG_ERR, "nfssvc: %s", strerror(errno)); exit(1); } nfssvc_flag = NFSSVC_NFSD | NFSSVC_AUTHINFAIL; @@ -166,7 +171,7 @@ tryconf(struct conf *cfg, int t, int rer ecode = getaddrinfo(NULL, "nfs", &hints, &cfg->ai); if (ecode != 0) { - syslog(LOG_ERR, "getaddrinfo %s: %s", cfg_netconf[t], + logit(LOG_ERR, "getaddrinfo %s: %s", cfg_netconf[t], gai_strerror(ecode)); return -1; } @@ -174,7 +179,7 @@ tryconf(struct conf *cfg, int t, int rer cfg->nc = getnetconfigent(cfg_netconf[t]); if (cfg->nc == NULL) { - syslog(LOG_ERR, "getnetconfigent %s failed: %s", + logit(LOG_ERR, "getnetconfigent %s failed: %s", cfg_netconf[t], strerror(errno)); goto out; } @@ -183,7 +188,7 @@ tryconf(struct conf *cfg, int t, int rer cfg->nb.len = cfg->nb.maxlen = cfg->ai->ai_addrlen; if (reregister) if (!rpcb_set(RPCPROG_NFS, 2, cfg->nc, &cfg->nb)) { - syslog(LOG_ERR, "rpcb_set %s failed", cfg_netconf[t]); + logit(LOG_ERR, "rpcb_set %s failed", cfg_netconf[t]); goto out1; } return 0; @@ -207,14 +212,14 @@ setupsock(struct conf *cfg, struct pollf sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); if (sock == -1) { - syslog(LOG_ERR, "can't create %s socket: %s", cfg_netconf[p], + logit(LOG_ERR, "can't create %s socket: %s", cfg_netconf[p], strerror(errno)); return -1; } if (cfg_family[p] == PF_INET6) { if (setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof(on)) == -1) { - syslog(LOG_ERR, "can't set v6-only binding for %s " + logit(LOG_ERR, "can't set v6-only binding for %s " "socket: %s", cfg_netconf[p], strerror(errno)); goto out; } @@ -223,28 +228,28 @@ setupsock(struct conf *cfg, struct pollf if (cfg_protocol[p] == IPPROTO_TCP) { if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) { - syslog(LOG_ERR, "setsockopt SO_REUSEADDR for %s: %s", + logit(LOG_ERR, "setsockopt SO_REUSEADDR for %s: %s", cfg_netconf[p], strerror(errno)); goto out; } } if (bind(sock, ai->ai_addr, ai->ai_addrlen) == -1) { - syslog(LOG_ERR, "can't bind %s addr: %s", cfg_netconf[p], + logit(LOG_ERR, "can't bind %s addr: %s", cfg_netconf[p], strerror(errno)); goto out; } if (cfg_protocol[p] == IPPROTO_TCP) { if (listen(sock, 5) == -1) { - syslog(LOG_ERR, "listen failed"); + logit(LOG_ERR, "listen failed"); goto out; } } if (!rpcb_set(RPCPROG_NFS, 2, cfg->nc, &cfg->nb) || !rpcb_set(RPCPROG_NFS, 3, cfg->nc, &cfg->nb)) { - syslog(LOG_ERR, "can't register with %s portmap", + logit(LOG_ERR, "can't register with %s portmap", cfg_netconf[p]); goto out; } @@ -257,7 +262,7 @@ setupsock(struct conf *cfg, struct pollf nfsdargs.name = NULL; nfsdargs.namelen = 0; if (nfssvc(NFSSVC_ADDSOCK, &nfsdargs) < 0) { - syslog(LOG_ERR, "can't add %s socket: %s", + logit(LOG_ERR, "can't add %s socket: %s", cfg_netconf[p], strerror(errno)); goto out; } @@ -425,8 +430,8 @@ main(int argc, char *argv[]) compat = reregister = 0; tcpflag = udpflag = 1; ip6flag = ip4flag = 1; -#define GETOPT "46n:rtu" -#define USAGE "[-46rtu] [-n num_servers]" +#define GETOPT "46dn:rtu" +#define USAGE "[-46drtu] [-n num_servers]" while ((ch = getopt(argc, argv, GETOPT)) != -1) { switch (ch) { case '6': @@ -449,6 +454,9 @@ main(int argc, char *argv[]) else close(s); break; + case 'd': + debug++; + break; case 'n': nfsdcnt = atoi(optarg); if (nfsdcnt < 1) { @@ -489,9 +497,9 @@ main(int argc, char *argv[]) if (debug == 0) { parent_fd = daemon2_fork(); + openlog("nfsd", LOG_PID, LOG_DAEMON); } - openlog("nfsd", LOG_PID, LOG_DAEMON); memset(cfg, 0, sizeof(cfg)); for (i = 0; i < __arraycount(cfg); i++) { @@ -513,7 +521,7 @@ main(int argc, char *argv[]) error = pthread_create(&t, NULL, worker, NULL); if (error) { errno = error; - syslog(LOG_ERR, "pthread_create: %s", strerror(errno)); + logit(LOG_ERR, "pthread_create: %s", strerror(errno)); exit(1); } } @@ -552,7 +560,7 @@ main(int argc, char *argv[]) */ for (;;) { if (poll(set, __arraycount(set), INFTIM) == -1) { - syslog(LOG_ERR, "poll failed: %s", strerror(errno)); + logit(LOG_ERR, "poll failed: %s", strerror(errno)); exit(1); } @@ -569,7 +577,7 @@ main(int argc, char *argv[]) if ((msgsock = accept(set[i].fd, (struct sockaddr *)&ss, &len)) == -1) { int serrno = errno; - syslog(LOG_ERR, "accept failed: %s", + logit(LOG_ERR, "accept failed: %s", strerror(errno)); if (serrno == EINTR || serrno == ECONNABORTED) continue; @@ -577,7 +585,7 @@ main(int argc, char *argv[]) } if (setsockopt(msgsock, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on)) == -1) - syslog(LOG_ERR, "setsockopt SO_KEEPALIVE: %s", + logit(LOG_ERR, "setsockopt SO_KEEPALIVE: %s", strerror(errno)); nfsdargs.sock = msgsock; nfsdargs.name = (void *)&ss; @@ -598,5 +606,5 @@ usage(void) static void nonfs(int signo) { - syslog(LOG_ERR, "missing system call: NFS not available."); + logit(LOG_ERR, "missing system call: NFS not available."); }