summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ppp/log.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>1998-05-23 22:24:50 +0000
committerbrian <brian@FreeBSD.org>1998-05-23 22:24:50 +0000
commit7f9f3d4b006fb3ffffcebd44183520742fa0bf6f (patch)
treed9eda8d3412bab2407741e40c3e4b78839fe30ed /usr.sbin/ppp/log.c
parent3d5a66dff7468559eb0f226477cfed7891ba121f (diff)
downloadFreeBSD-src-7f9f3d4b006fb3ffffcebd44183520742fa0bf6f.zip
FreeBSD-src-7f9f3d4b006fb3ffffcebd44183520742fa0bf6f.tar.gz
o Move our prompt descriptor list outside of the bundle.
It's now dealt with by the `server' object. This simplifies things as we only have one list of prompt descriptors and the log_ routines check prompt::logactive to determine whether it should be used for output. o Include the MP socket UpdateSet() result in bundle::UpdateSet(). o Don't select on the tun device unless we're in NETWORK phase or AUTO mode. o Stop the idle timer when we go to DEAD phase. We may have transferred a link and not had a chance to kill it. o Don't fail when trying to unlink our transferred datalink from our descriptor lists just before the transfer. o Add our link descriptor to the write set if we got a short write the last time (physical::out is set). o Log the connection source address when a connection is closed. o Remove descriptor::next field. Descriptor lists are not required any more.
Diffstat (limited to 'usr.sbin/ppp/log.c')
-rw-r--r--usr.sbin/ppp/log.c97
1 files changed, 82 insertions, 15 deletions
diff --git a/usr.sbin/ppp/log.c b/usr.sbin/ppp/log.c
index 0522059..61a3b29 100644
--- a/usr.sbin/ppp/log.c
+++ b/usr.sbin/ppp/log.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: log.c,v 1.25.2.14 1998/05/01 22:39:35 brian Exp $
+ * $Id: log.c,v 1.27 1998/05/21 21:46:25 brian Exp $
*/
#include <sys/types.h>
@@ -66,16 +66,28 @@ static const char *LogNames[] = {
static u_long LogMask = MSK(LogPHASE);
static u_long LogMaskLocal = MSK(LogERROR) | MSK(LogALERT) | MSK(LogWARN);
static int LogTunno = -1;
-static struct prompt *logprompt; /* Where to log local stuff */
+static struct prompt *promptlist; /* Where to log local stuff */
+
+struct prompt *
+log_PromptList()
+{
+ return promptlist;
+}
void
log_RegisterPrompt(struct prompt *prompt)
{
- if (prompt) {
- prompt->lognext = logprompt;
- logprompt = prompt;
- LogMaskLocal |= prompt->logmask;
- }
+ prompt->next = promptlist;
+ promptlist = prompt;
+ prompt->active = 1;
+ log_DiscardAllLocal(&prompt->logmask);
+}
+
+void
+log_ActivatePrompt(struct prompt *prompt)
+{
+ prompt->active = 1;
+ LogMaskLocal |= prompt->logmask;
}
static void
@@ -84,26 +96,80 @@ LogSetMaskLocal(void)
struct prompt *p;
LogMaskLocal = MSK(LogERROR) | MSK(LogALERT) | MSK(LogWARN);
- for (p = logprompt; p; p = p->lognext)
+ for (p = promptlist; p; p = p->next)
LogMaskLocal |= p->logmask;
}
void
+log_DeactivatePrompt(struct prompt *prompt)
+{
+ if (prompt->active) {
+ prompt->active = 0;
+ LogSetMaskLocal();
+ }
+}
+
+void
log_UnRegisterPrompt(struct prompt *prompt)
{
if (prompt) {
struct prompt **p;
- for (p = &logprompt; *p; p = &(*p)->lognext)
+ for (p = &promptlist; *p; p = &(*p)->next)
if (*p == prompt) {
- *p = prompt->lognext;
- prompt->lognext = NULL;
+ *p = prompt->next;
+ prompt->next = NULL;
break;
}
LogSetMaskLocal();
}
}
+void
+log_DestroyPrompts(struct server *s)
+{
+ struct prompt *p, *pn;
+
+ p = promptlist;
+ while (p) {
+ pn = p->next;
+ if (s && p->owner != s) {
+ p->next = NULL;
+ prompt_Destroy(p, 1);
+ }
+ p = pn;
+ }
+}
+
+void
+log_DisplayPrompts()
+{
+ struct prompt *p;
+
+ for (p = promptlist; p; p = p->next)
+ prompt_Required(p);
+}
+
+void
+log_WritePrompts(struct datalink *dl, const char *data, int len)
+{
+ struct prompt *p;
+
+ for (p = promptlist; p; p = p->next)
+ if (prompt_IsTermMode(p, dl))
+ prompt_Printf(p, "%.*s", len, data);
+}
+
+void
+log_SetTtyCommandMode(struct datalink *dl)
+{
+ struct prompt *p;
+
+ for (p = promptlist; p; p = p->next)
+ if (prompt_IsTermMode(p, dl))
+ prompt_TtyCommandMode(p);
+}
+
static int
syslogLevel(int lev)
{
@@ -225,19 +291,20 @@ log_Printf(int lev, const char *fmt,...)
if (log_IsKept(lev)) {
static char nfmt[200];
- if ((log_IsKept(lev) & LOG_KEPT_LOCAL) && logprompt) {
+ if ((log_IsKept(lev) & LOG_KEPT_LOCAL) && promptlist) {
if ((log_IsKept(LogTUN) & LOG_KEPT_LOCAL) && LogTunno != -1)
snprintf(nfmt, sizeof nfmt, "tun%d: %s: %s",
LogTunno, log_Name(lev), fmt);
else
snprintf(nfmt, sizeof nfmt, "%s: %s", log_Name(lev), fmt);
- for (prompt = logprompt; prompt; prompt = prompt->lognext)
+ for (prompt = promptlist; prompt; prompt = prompt->next)
if (lev > LogMAXCONF || (prompt->logmask & MSK(lev)))
prompt_vPrintf(prompt, nfmt, ap);
}
- if ((log_IsKept(lev) & LOG_KEPT_SYSLOG) && (lev != LogWARN || !logprompt)) {
+ if ((log_IsKept(lev) & LOG_KEPT_SYSLOG) &&
+ (lev != LogWARN || !promptlist)) {
if ((log_IsKept(LogTUN) & LOG_KEPT_SYSLOG) && LogTunno != -1)
snprintf(nfmt, sizeof nfmt, "tun%d: %s: %s",
LogTunno, log_Name(lev), fmt);
@@ -380,7 +447,7 @@ log_ShowWho(struct cmdargs const *arg)
{
struct prompt *p;
- for (p = logprompt; p; p = p->lognext) {
+ for (p = promptlist; p; p = p->next) {
prompt_Printf(arg->prompt, "%s (%s)", p->src.type, p->src.from);
if (p == arg->prompt)
prompt_Printf(arg->prompt, " *");
OpenPOWER on IntegriCloud