diff options
author | brian <brian@FreeBSD.org> | 2001-01-29 01:35:06 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 2001-01-29 01:35:06 +0000 |
commit | a814a5c65302a3e23434ad3b038e8067f0162df9 (patch) | |
tree | 289e5d91b5f2196492ecc29311ba656cd44c5cb1 /usr.sbin | |
parent | 5728ea1f1d0346a88fd4dd9f320ddf922cd13dad (diff) | |
download | FreeBSD-src-a814a5c65302a3e23434ad3b038e8067f0162df9.zip FreeBSD-src-a814a5c65302a3e23434ad3b038e8067f0162df9.tar.gz |
Only remove socket files with ``set server open''.
Only show the mask in ``show bundle'' when it's been specified.
Complain about unexpected arguments after ``set server {none,open,closed}''
Log re-open failures as warnings rather than phase messages.
Fix some markup for the ``set server'' man page description.
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/ppp/bundle.c | 11 | ||||
-rw-r--r-- | usr.sbin/ppp/command.c | 8 | ||||
-rw-r--r-- | usr.sbin/ppp/ppp.8 | 13 | ||||
-rw-r--r-- | usr.sbin/ppp/ppp.8.m4 | 13 | ||||
-rw-r--r-- | usr.sbin/ppp/server.c | 7 |
5 files changed, 31 insertions, 21 deletions
diff --git a/usr.sbin/ppp/bundle.c b/usr.sbin/ppp/bundle.c index 1005ed2..9aea891 100644 --- a/usr.sbin/ppp/bundle.c +++ b/usr.sbin/ppp/bundle.c @@ -1183,11 +1183,12 @@ bundle_ShowStatus(struct cmdargs const *arg) prompt_Printf(arg->prompt, " Auth name: %s\n", arg->bundle->cfg.auth.name); prompt_Printf(arg->prompt, " Diagnostic socket: "); - if (*server.cfg.sockname != '\0') - prompt_Printf(arg->prompt, "%s, mask 0%03o%s\n", - server.cfg.sockname, (int)server.cfg.mask, - server.fd == -1 ? " (not open)" : ""); - else if (server.cfg.port != 0) + if (*server.cfg.sockname != '\0') { + prompt_Printf(arg->prompt, "%s", server.cfg.sockname); + if (server.cfg.mask != (mode_t)-1) + prompt_Printf(arg->prompt, ", mask 0%03o", (int)server.cfg.mask); + prompt_Printf(arg->prompt, "%s\n", server.fd == -1 ? " (not open)" : ""); + } else if (server.cfg.port != 0) prompt_Printf(arg->prompt, "TCP port %d%s\n", server.cfg.port, server.fd == -1 ? " (not open)" : ""); else diff --git a/usr.sbin/ppp/command.c b/usr.sbin/ppp/command.c index ae68092..dd9da83 100644 --- a/usr.sbin/ppp/command.c +++ b/usr.sbin/ppp/command.c @@ -1286,7 +1286,9 @@ SetServer(struct cmdargs const *arg) arg->argv[arg->argn - 2], arg->argv[arg->argn - 1], mask); return -1; } - } else if (strcasecmp(port, "none") == 0) { + } else if (arg->argc != arg->argn + 1) + return -1; + else if (strcasecmp(port, "none") == 0) { if (server_Clear(arg->bundle)) log_Printf(LogPHASE, "Disabled server socket\n"); return 0; @@ -1295,10 +1297,10 @@ SetServer(struct cmdargs const *arg) case SERVER_OK: return 0; case SERVER_FAILED: - log_Printf(LogPHASE, "Failed to reopen server port\n"); + log_Printf(LogWARN, "Failed to reopen server port\n"); return 1; case SERVER_UNSET: - log_Printf(LogPHASE, "Cannot reopen unset server socket\n"); + log_Printf(LogWARN, "Cannot reopen unset server socket\n"); return 1; default: break; diff --git a/usr.sbin/ppp/ppp.8 b/usr.sbin/ppp/ppp.8 index 4d41a4d..34045f3 100644 --- a/usr.sbin/ppp/ppp.8 +++ b/usr.sbin/ppp/ppp.8 @@ -5148,7 +5148,10 @@ The optimum value is just over twice the MTU value. If .Ar value is unspecified or zero, the default kernel controlled value is used. -.It "set server|socket" Ar TcpPort|LocalName|none|open|closed Op password Op Ar mask +.It "set server|socket" Ar TcpPort Ns No \&| Ns Xo +.Ar LocalName Ns No |none|open|closed +.Op password Op Ar mask +.Xc This command tells .Nm to listen on the given socket or @@ -5156,17 +5159,17 @@ to listen on the given socket or for incoming command connections. .Pp The word -.Ar none +.Dq none instructs .Nm to close any existing socket and clear the socket configuration. The word -.Ar open +.Dq open instructs .Nm to attempt to re-open the port. The word -.Ar closed +.Dq closed instructs .Nm to close the open port. @@ -5175,7 +5178,7 @@ If you wish to specify a local domain socket, .Ar LocalName must be specified as an absolute file name, otherwise it is assumed to be the name or number of a TCP port. -You must specify the octal umask to be used with a local domain socket. +You may specify the octal umask to be used with a local domain socket. Refer to .Xr umask 2 for umask details. diff --git a/usr.sbin/ppp/ppp.8.m4 b/usr.sbin/ppp/ppp.8.m4 index 4d41a4d..34045f3 100644 --- a/usr.sbin/ppp/ppp.8.m4 +++ b/usr.sbin/ppp/ppp.8.m4 @@ -5148,7 +5148,10 @@ The optimum value is just over twice the MTU value. If .Ar value is unspecified or zero, the default kernel controlled value is used. -.It "set server|socket" Ar TcpPort|LocalName|none|open|closed Op password Op Ar mask +.It "set server|socket" Ar TcpPort Ns No \&| Ns Xo +.Ar LocalName Ns No |none|open|closed +.Op password Op Ar mask +.Xc This command tells .Nm to listen on the given socket or @@ -5156,17 +5159,17 @@ to listen on the given socket or for incoming command connections. .Pp The word -.Ar none +.Dq none instructs .Nm to close any existing socket and clear the socket configuration. The word -.Ar open +.Dq open instructs .Nm to attempt to re-open the port. The word -.Ar closed +.Dq closed instructs .Nm to close the open port. @@ -5175,7 +5178,7 @@ If you wish to specify a local domain socket, .Ar LocalName must be specified as an absolute file name, otherwise it is assumed to be the name or number of a TCP port. -You must specify the octal umask to be used with a local domain socket. +You may specify the octal umask to be used with a local domain socket. Refer to .Xr umask 2 for umask details. diff --git a/usr.sbin/ppp/server.c b/usr.sbin/ppp/server.c index 5d29c8b..5203d7c 100644 --- a/usr.sbin/ppp/server.c +++ b/usr.sbin/ppp/server.c @@ -185,6 +185,7 @@ enum server_stat server_Reopen(struct bundle *bundle) { char name[sizeof server.cfg.sockname]; + struct stat st; u_short port; mode_t mask; enum server_stat ret; @@ -193,9 +194,9 @@ server_Reopen(struct bundle *bundle) strcpy(name, server.cfg.sockname); mask = server.cfg.mask; server_Close(bundle); - if (server.cfg.sockname[0] != '\0') - /* blow it away - and hope nobody else is using it */ - unlink(server.cfg.sockname); + if (server.cfg.sockname[0] != '\0' && stat(server.cfg.sockname, &st) == 0) + if (!(st.st_mode & S_IFSOCK) || unlink(server.cfg.sockname) != 0) + return SERVER_FAILED; ret = server_LocalOpen(bundle, name, mask); } else if (server.cfg.port != 0) { port = server.cfg.port; |