diff --git a/ChangeLog b/ChangeLog index b223f04b..16a16023 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4247,6 +4247,7 @@ v0.33.19 26-Oct-2001 previous adress just like with the net numbers. This is for old style tic files, they were not full 3d. Fixes for Sparc systems. + The nodelist information now also holds the Txx flags. lang: Changed language prompts 6, 71, 429. @@ -4384,6 +4385,8 @@ v0.33.19 26-Oct-2001 /opt/mbse root. When scanning outbound, flags are set if flo or mail pkt files are present. + When the internet connection status changes, the outbound is + rescanned. mbmon: Changed the lastcaller screen to display the External Door diff --git a/lib/nodelist.c b/lib/nodelist.c index c12144b8..ae30572a 100644 --- a/lib/nodelist.c +++ b/lib/nodelist.c @@ -210,6 +210,8 @@ node *getnlent(faddr *addr) nodebuf.iflags = 0L; nodebuf.dflags = 0L; nodebuf.uflags[0] = NULL; + nodebuf.t1 = '\0'; + nodebuf.t2 = '\0'; if (addr == NULL) goto retdummy; diff --git a/mbtask/mbtask.c b/mbtask/mbtask.c index dba2da79..7f9b6052 100644 --- a/mbtask/mbtask.c +++ b/mbtask/mbtask.c @@ -102,6 +102,7 @@ int pingresult[2]; /* Ping results */ char pingaddress[41]; /* Ping current address */ int masterinit = FALSE; /* Master init needed */ int ptimer = PAUSETIME; /* Pause timer */ +int tflags = FALSE; /* if nodes with Txx */ @@ -433,6 +434,8 @@ void load_taskcfg(void) TCFG.max_pots = 1; TCFG.max_isdn = 0; TCFG.max_tcp = 0; + sprintf(TCFG.isp_ping1, "192.168.1.1"); + sprintf(TCFG.isp_ping2, "192.168.1.1"); if ((fp = fopen(tcfgfn, "a+")) == NULL) { tasklog('?', "$Can't create %s", tcfgfn); die(2); @@ -1197,6 +1200,12 @@ void scheduler(void) tasklog('+', "Main configuration changed, reloading"); load_maincfg(); } + /* + * If there is mail or files in the outbound for nodes with + * the Txx flag, then scan the outbound each half hour. + */ + if (tflags && ((tm->tm_min == 0) || (tm->tm_min == 30))) + sem_set((char *)"scanout", TRUE); } if (s_bbsopen && !UPSalarm && !LOADhi) { @@ -1283,7 +1292,7 @@ void scheduler(void) oldmin = tm->tm_sec / SLOWRUN; /* - * If the previous pingstat is still P_SENT, the we now consider it a timeout. + * If the previous pingstat is still P_SENT, then we now consider it a timeout. */ if (pingstate == P_SENT) { pingresult[pingnr] = FALSE; @@ -1333,11 +1342,13 @@ void scheduler(void) if (internet) { tasklog('!', "Internet connection is down"); internet = FALSE; + sem_set((char *)"scanout", TRUE); } } else { if (!internet) { tasklog('!', "Internet connection is up"); internet = TRUE; + sem_set((char *)"scanout", TRUE); } icmp_errs = 0; } diff --git a/mbtask/nodelist.c b/mbtask/nodelist.c index 1de7dcb6..e02eca67 100644 --- a/mbtask/nodelist.c +++ b/mbtask/nodelist.c @@ -1,8 +1,7 @@ /***************************************************************************** * - * File ..................: nodelist.c + * $Id$ * Purpose ...............: Read nodelists information - * Last modification date : 06-Jul-2001 * ***************************************************************************** * Copyright (C) 1997-2001 @@ -211,6 +210,8 @@ node *getnlent(faddr *addr) nodebuf.iflags = 0L; nodebuf.dflags = 0L; nodebuf.uflags[0] = NULL; + nodebuf.t1 = '\0'; + nodebuf.t2 = '\0'; if (addr == NULL) goto retdummy; @@ -400,6 +401,13 @@ node *getnlent(faddr *addr) for (j = 0; xkey[j].key; j++) if (strcasecmp(p, xkey[j].key) == 0) nodebuf.xflags |= xkey[j].flag; + if ((p[0] == 'T') && (strlen(p) == 3)) { + /* + * System open hours flag + */ + nodebuf.t1 = p[1]; + nodebuf.t2 = p[2]; + } if (!stdflag) { if (ixflag < MAXUFLAGS) { nodebuf.uflags[ixflag++] = p; diff --git a/mbtask/nodelist.h b/mbtask/nodelist.h index 6668c904..44bd3e52 100644 --- a/mbtask/nodelist.h +++ b/mbtask/nodelist.h @@ -1,11 +1,8 @@ +/* $Id$ */ + #ifndef _NODELIST_H #define _NODELIST_H -/* -#include "../config.h" - -#pragma pack(1) -*/ #define MAXNAME 35 #define MAXUFLAGS 16 @@ -115,6 +112,8 @@ typedef struct _node { unsigned long oflags; /* Online flags */ unsigned long xflags; /* Request flags */ char *uflags[MAXUFLAGS]; /* User flags */ + int t1; /* First Txx flag */ + int t2; /* Second Txx flag */ } node; diff --git a/mbtask/outstat.c b/mbtask/outstat.c index af5e1453..513c30d6 100644 --- a/mbtask/outstat.c +++ b/mbtask/outstat.c @@ -54,6 +54,8 @@ static struct _alist unsigned long moflags; /* Nodelist modem flags */ unsigned long diflags; /* Nodelist ISDN flags */ unsigned long ipflags; /* Nodelist TCP/IP flags */ + int t1; /* First Txx flag */ + int t2; /* Second Txx flag */ } *alist = NULL; @@ -71,7 +73,7 @@ int outstat() { int rc, first = TRUE; struct _alist *tmp, *old; - char flstr[9]; + char flstr[13]; char temp[81]; tasklog('+', "Scanning outbound"); @@ -92,10 +94,10 @@ int outstat() for (tmp = alist; tmp; tmp = tmp->next) { if (first) { - tasklog('+', "Flavor Size Online Modem ISDN TCP/IP Calls Status Address"); + tasklog('+', "Flavor Out Size Online Modem ISDN TCP/IP Calls Status Address"); first = FALSE; } - strcpy(flstr,"...... .."); + strcpy(flstr,"...... ... .."); if ((tmp->flavors) & F_IMM ) flstr[0]='I'; if ((tmp->flavors) & F_CRASH ) flstr[1]='C'; if ((tmp->flavors) & F_NORMAL) flstr[2]='N'; @@ -104,8 +106,10 @@ int outstat() if ((tmp->flavors) & F_POLL ) flstr[5]='P'; if ((tmp->flavors) & F_ISPKT ) flstr[7]='M'; if ((tmp->flavors) & F_ISFLO ) flstr[8]='F'; + if (tmp->t1) flstr[11] = tmp->t1; + if (tmp->t2) flstr[12] = tmp->t2; - sprintf(temp, "%s %8lu %08x %08x %08x %08x %5d %6d %s", flstr, (long)tmp->size, + sprintf(temp, "%s %8lu %08x %08x %08x %08x %5d %6d %s", flstr, (long)tmp->size, (unsigned int)tmp->olflags, (unsigned int)tmp->moflags, (unsigned int)tmp->diflags, (unsigned int)tmp->ipflags, tmp->cst.tryno, tmp->cst.trystat, ascfnode(&(tmp->addr), 0x1f)); @@ -153,11 +157,15 @@ int each(faddr *addr, char flavor, int isflo, char *fname) (*tmp)->moflags = nlent->mflags; (*tmp)->diflags = nlent->dflags; (*tmp)->ipflags = nlent->iflags; + (*tmp)->t1 = nlent->t1; + (*tmp)->t2 = nlent->t2; } else { (*tmp)->olflags = 0L; (*tmp)->moflags = 0L; (*tmp)->diflags = 0L; (*tmp)->ipflags = 0L; + (*tmp)->t1 = '\0'; + (*tmp)->t2 = '\0'; } (*tmp)->time = time(NULL); (*tmp)->size = 0L;