- isdnlog Version 3.12

- "%B" tag in ILABEL/OLABEL corrected
- isdnlog now register's incoming calls when there are no free B-channels
  (idea from sergio@webmedia.es)
- better "samples/rate.conf.de" (suppress provider without true call-by-call)
- "tarif.dat" V:1.17 [03-Apr-99]
- Added EWE-Tel rates from Reiner Klaproth <rk1@msjohan.dd.sn.schule.de>
- isdnconf can now be used to generate a Least-cost-router table
  (try "isdnconf -c .")
- isdnlog now simulate a RELEASE COMPLETE if nothing happpens after a SETUP
- CHARGEMAX Patches from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
This commit is contained in:
akool 1999-04-03 12:46:39 +00:00
parent f06dd7862a
commit 94d4c12474
10 changed files with 707 additions and 236 deletions

View File

@ -1,4 +1,4 @@
## $Id: Makefile.in,v 1.64 1999/03/25 19:39:41 akool Exp $
## $Id: Makefile.in,v 1.65 1999/04/03 12:46:39 akool Exp $
##
## ISDN accounting for isdn4linux.
##
@ -19,6 +19,19 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
## $Log: Makefile.in,v $
## Revision 1.65 1999/04/03 12:46:39 akool
## - isdnlog Version 3.12
## - "%B" tag in ILABEL/OLABEL corrected
## - isdnlog now register's incoming calls when there are no free B-channels
## (idea from sergio@webmedia.es)
## - better "samples/rate.conf.de" (suppress provider without true call-by-call)
## - "tarif.dat" V:1.17 [03-Apr-99]
## - Added EWE-Tel rates from Reiner Klaproth <rk1@msjohan.dd.sn.schule.de>
## - isdnconf can now be used to generate a Least-cost-router table
## (try "isdnconf -c .")
## - isdnlog now simulate a RELEASE COMPLETE if nothing happpens after a SETUP
## - CHARGEMAX Patches from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
##
## Revision 1.64 1999/03/25 19:39:41 akool
## - isdnlog Version 3.11
## - make isdnlog compile with egcs 1.1.7 (Bug report from Christophe Zwecker <doc@zwecker.com>)
@ -498,7 +511,7 @@ SERVICEFILE = /etc/services
# DON'T EDIT BELOW THIS LINE
######################################################################
VERSION = 3.11
VERSION = 3.12
MANPAGES = isdnlog/callerid.conf.5 isdnlog/isdn.conf.5 isdnlog/isdnformat.5 isdnlog/isdnlog.5 isdnlog/isdnlog.8 isdnlog/isdnlog.users.5 isdnrep/isdnrep.1 isdnconf/isdnconf.1

View File

@ -1,10 +1,10 @@
ISDNLOG - Version 3.08 - 18-Mar-99 22:27
ISDNLOG - Version 3.12 - 30-Mar-99 20:48
isdnlog ist ein Utility zur Auswertung des D-Kanals eines
ISDN-BRI Anschlusses.
isdnlog-3.08 wurde ausgiebig mit Linux-2.0.36 getestet.
isdnlog-3.12 wurde ausgiebig mit Linux-2.0.36 getestet.
Fuer alle, die es nun ueberhaupt nicht mehr abwarten koennen, hier das
@ -773,7 +773,7 @@ koennen folgende Platzhalter angegeben werden:
%b Monat (-> "Aug")
%e Tag im Monat (-> " 8")
%T Uhrzeit (-> "13:17:11")
%B B-Kanal (0, oder 1)
%B B-Kanal (1 oder 2)
%k Nummer der ISDN-Karte, von der die Meldung kam (0 = 1. Karte)
%p Nummer des Provider's
%P "via <Providerbezeichnung>"

View File

@ -1,4 +1,4 @@
/* $Id: isdnconf.c,v 1.16 1999/03/24 19:37:38 akool Exp $
/* $Id: isdnconf.c,v 1.17 1999/04/03 12:46:54 akool Exp $
*
* ISDN accounting for isdn4linux. (Report-module)
*
@ -20,6 +20,19 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: isdnconf.c,v $
* Revision 1.17 1999/04/03 12:46:54 akool
* - isdnlog Version 3.12
* - "%B" tag in ILABEL/OLABEL corrected
* - isdnlog now register's incoming calls when there are no free B-channels
* (idea from sergio@webmedia.es)
* - better "samples/rate.conf.de" (suppress provider without true call-by-call)
* - "tarif.dat" V:1.17 [03-Apr-99]
* - Added EWE-Tel rates from Reiner Klaproth <rk1@msjohan.dd.sn.schule.de>
* - isdnconf can now be used to generate a Least-cost-router table
* (try "isdnconf -c .")
* - isdnlog now simulate a RELEASE COMPLETE if nothing happpens after a SETUP
* - CHARGEMAX Patches from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
*
* Revision 1.16 1999/03/24 19:37:38 akool
* - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/
@ -536,6 +549,130 @@ int print_in_modules(const char *fmt, ...)
/*****************************************************************************/
static char *zonen[MAXZONES] = { "Intern", "CityCall", "RegioCall", "GermanCall",
"C-Netz", "C-Mobilbox", "D1-Netz", "D2-Netz",
"E-plus-Netz", "E2-Netz", "Euro City", "Euro 1",
"Euro 2", "Welt 1", "Welt 2", "Welt 3", "Welt 4",
"Internet", "GlobalCall" };
static void showLCR()
{
auto int tz, hour, provider, lastprovider = -1, lasthour = -1, *p;
auto int useds = 0, maxhour, leastprovider = UNKNOWN;
auto char info[BUFSIZ], ignoreprovider[BUFSIZ], *p1;
int probe[] = { REGIOCALL, GERMANCALL, D2_NETZ, 0 };
int used[100];
int hours[100];
print_msg(PRT_NORMAL, "Least-Cost-Routing-Table:\n\n");
*ignoreprovider = 0;
retry:
memset(used, 0, sizeof(used));
memset(hours, 0, sizeof(hours));
for (tz = 0; tz < 2; tz++) { /* Werktag .. Wochendende */
switch (tz) {
case 0 : print_msg(PRT_NORMAL, "Werktag:\n"); break;
case 1 : print_msg(PRT_NORMAL, "Wochenende/Feiertag:\n"); break;
} /* switch */
p = probe;
while (*p) {
switch (*p) {
case REGIOCALL : print_msg(PRT_NORMAL, "\tRegioCall:\n"); break;
case GERMANCALL : print_msg(PRT_NORMAL, "\tGermanCall:\n"); break;
case D2_NETZ : print_msg(PRT_NORMAL, "\tD2Call:\n"); break;
} /* switch */
lastprovider = -1;
lasthour = -1;
hour = 8;
while (1) {
provider = showcheapest(*p, 181, ignoreprovider, info, tz, hour, 0);
#if 0
print_msg(PRT_NORMAL, "DEBUG::tz=%d, zone=%d, Hour=%02d, P=%d, %s lasthour=%d, lastprovider=%d\n", tz, *p, hour, provider, realProvidername(provider), lasthour, lastprovider);
#endif
if (lastprovider == -1)
lastprovider = provider;
if (lasthour == -1)
lasthour = hour;
if (provider != lastprovider) {
print_msg(PRT_NORMAL, "\t\t%02d:00 .. %02d:59 010%02d:%s\n",
lasthour, hour - 1, lastprovider, realProvidername(lastprovider));
used[lastprovider] = 1;
if (lasthour >= hour)
hours[lastprovider] += ((24 - lasthour) + hour);
else
hours[lastprovider] += hour - lasthour;
lastprovider = provider;
lasthour = hour;
} /* if */
hour++;
if (hour == 24)
hour = 0;
else if (hour == 8)
break;
} /* for */
print_msg(PRT_NORMAL, "\t\t%02d:00 .. %02d:59 010%02d:%s\n",
lasthour, hour - 1, lastprovider, realProvidername(lastprovider));
used[lastprovider] = 1;
if (lasthour >= hour)
hours[lastprovider] += ((24 - lasthour) + hour);
else
hours[lastprovider] += hour - lasthour;
p++;
} /* while */
} /* for */
print_msg(PRT_NORMAL, "\nProvider(s) used:\n");
maxhour = 9999999;
useds = 0;
for (provider = 0; provider < 100; provider++)
if (used[provider]) {
print_msg(PRT_NORMAL, "010%02d:%s\t(%d hours)\n", provider, realProvidername(provider), hours[provider]);
useds++;
if (hours[provider] < maxhour) {
maxhour = hours[provider];
leastprovider = provider;
} /* if */
} /* if */
if (useds > 5) {
print_msg(PRT_NORMAL, "OOOPS: More than 5 providers used. Retry with 010%02d:%s ignored\n",
leastprovider, realProvidername(leastprovider));
p1 = strchr(ignoreprovider, 0);
*p1 = leastprovider;
*++p1 = 0;
goto retry;
} /* if */
} /* showLCR */
int main(int argc, char *argv[], char *envp[])
{
int c;
@ -696,15 +833,19 @@ int main(int argc, char *argv[], char *envp[])
if (areacode[0] != '\0')
{
char *ptr, msg[BUFSIZ];
char *ptr, msg[BUFSIZ], snfile[BUFSIZ];
int len, i, zone;
initSondernummern(snfile, NULL);
strcpy(snfile, "/usr/lib/isdn/sonderrufnummern.dat"); /* FIXME */
initSondernummern(snfile, &ptr);
initTarife(msg);
/* print_msg(PRT_NORMAL, "%s\n", msg); */
#if 0
print_msg(PRT_NORMAL, "%s\n", ptr);
print_msg(PRT_NORMAL, "%s\n", msg);
#endif
if ((ptr = get_areacode(areacode,&len,quiet?C_NO_ERROR|C_NO_WARN:0)) != NULL)
if ((strlen(areacode) == 1) || (ptr = get_areacode(areacode,&len,quiet?C_NO_ERROR|C_NO_WARN:0)) != NULL)
{
if (!isdnmon)
{
@ -736,6 +877,30 @@ int main(int argc, char *argv[], char *envp[])
else
zone = GLOBALCALL;
}
else if (strlen(areacode) == 1) {
switch (toupper(*areacode)) {
case '1' : zone = CITYCALL; break;
case '2' : zone = REGIOCALL; break;
case '3' : zone = GERMANCALL; break;
case '4' : zone = C_NETZ; break;
case '5' : zone = C_MOBILBOX; break;
case '6' : zone = D1_NETZ; break;
case '7' : zone = D2_NETZ; break;
case '8' : zone = E_PLUS_NETZ; break;
case '9' : zone = E2_NETZ; break;
case 'A' : zone = EURO_CITY; break;
case 'B' : zone = EURO_1; break;
case 'C' : zone = EURO_2; break;
case 'D' : zone = WELT_1; break;
case 'E' : zone = WELT_2; break;
case 'F' : zone = WELT_3; break;
case 'G' : zone = WELT_4; break;
case 'H' : zone = INTERNET; break;
case '.' : showLCR(); exit(0);
default : print_msg(PRT_NORMAL, "Unknown zone \"%c\", please use 1 .. H\n", *areacode);
exit(0);
} /* switch */
}
else {
area = area_diff_string(NULL,areacode);
zone = area_diff(NULL, areacode);
@ -743,7 +908,9 @@ int main(int argc, char *argv[], char *envp[])
print_msg(PRT_NORMAL,"%s%s%s\n",ptr,area[0] != '\0'?" / ":"", area[0] != '\0'?area:"");
} /* else */
showcheapest(zone, 181, -1, info);
print_msg(PRT_NORMAL,"Zone: %s\n", zonen[zone]);
(void)showcheapest(zone, 181, "\0", info, -1, -1, 1);
exit(0);
}

View File

@ -1,4 +1,4 @@
/* $Id: processor.c,v 1.48 1999/03/25 19:40:01 akool Exp $
/* $Id: processor.c,v 1.49 1999/04/03 12:47:03 akool Exp $
*
* ISDN accounting for isdn4linux. (log-module)
*
@ -19,6 +19,19 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: processor.c,v $
* Revision 1.49 1999/04/03 12:47:03 akool
* - isdnlog Version 3.12
* - "%B" tag in ILABEL/OLABEL corrected
* - isdnlog now register's incoming calls when there are no free B-channels
* (idea from sergio@webmedia.es)
* - better "samples/rate.conf.de" (suppress provider without true call-by-call)
* - "tarif.dat" V:1.17 [03-Apr-99]
* - Added EWE-Tel rates from Reiner Klaproth <rk1@msjohan.dd.sn.schule.de>
* - isdnconf can now be used to generate a Least-cost-router table
* (try "isdnconf -c .")
* - isdnlog now simulate a RELEASE COMPLETE if nothing happpens after a SETUP
* - CHARGEMAX Patches from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
*
* Revision 1.48 1999/03/25 19:40:01 akool
* - isdnlog Version 3.11
* - make isdnlog compile with egcs 1.1.7 (Bug report from Christophe Zwecker <doc@zwecker.com>)
@ -551,6 +564,7 @@
static int HiSax = 0, hexSeen = 0, uid = UNKNOWN;
static char *asnp, *asnm;
static int chanused[2] = { 0, 0 };
#ifdef Q931
static int lfd = 0;
#endif
@ -785,6 +799,9 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
*intern = strlen(num) < interns0;
if (*provider == UNKNOWN)
*provider = preselect;
if (!dir && (who == CALLED) && !*intern) {
*internetnumber = isInternetAccess(*provider, num);
@ -2090,7 +2107,6 @@ static void decode(int chan, register char *p, int type, int version, int tei)
#else
n = facility_start(p, AOC_INITIAL, 0);
#endif
if (n == AOC_OTHER)
; /* info(chan, PRT_SHOWAOCD, STATE_AOCD, asnm); */
else {
@ -2118,10 +2134,13 @@ static void decode(int chan, register char *p, int type, int version, int tei)
if (call[chan].aoce == -1) /* Firsttime */
call[chan].aoce = 1;
else
call[chan].aoce++;
call[chan].aoce++;
} /* if */
call[chan].pay = pay;
/* Wenn ueberhaupt, dann nur wenn n<>0, aber bei
selbst generierten AOC-Informationen nicht mehr
noetig
call[chan].pay = pay; */
if (currency_mode == AOC_UNITS)
call[chan].aoce = n;
@ -2135,8 +2154,8 @@ static void decode(int chan, register char *p, int type, int version, int tei)
aoc_debug(-1, s);
if (!n) {
if (call[chan].provider == 33) /* Only DTAG send's AOCD */
info(chan, PRT_SHOWAOCD, STATE_AOCD, "Free of charge");
if (call[chan].provider == DTAG) /* Only DTAG send's AOCD */
info(chan, PRT_SHOWAOCD, STATE_AOCD, "Free of charge");
}
else if (n < 0) {
tx = cur_time - call[chan].connect;
@ -2166,50 +2185,6 @@ static void decode(int chan, register char *p, int type, int version, int tei)
currency,
double2str(call[chan].pay, 6, 2, DEB));
} /* else */
if (!replay && (chargemax != 0.0)) {
if (day != known[c]->day) {
sprintf(s1, "CHARGEMAX resetting %s's charge (day %d->%d)",
known[c]->who, (known[c]->day == -1) ? 0 : known[c]->day, day);
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s1);
known[c]->scharge += known[c]->charge;
known[c]->charge = known[c]->rcharge = 0.0;
known[c]->day = day;
} /* if */
known[c]->charge += (pay / call[chan].aoce);
known[c]->rcharge += (pay / call[chan].aoce);
sprintf(s1, "CHARGEMAX remaining=%s %s %s %s",
currency,
double2str((chargemax - known[c]->charge), 6, 2, DEB),
(connectmax == 0.0) ? "" : double2clock(connectmax - known[c]->online - tx),
(bytemax == 0.0) ? "" : double2byte((double)(bytemax - known[c]->bytes)));
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s1);
if ((known[c]->charge >= chargemax) && (*known[c]->interface > '@'))
chargemaxAction(chan, (known[c]->charge - chargemax));
} /* if */
if (!replay && (connectmax != 0.0)) {
if (month != known[c]->month) {
sprintf(s1, "CONNECTMAX resetting %s's online (month %d->%d)",
known[c]->who, (known[c]->month == -1) ? 0 : known[c]->month, month);
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s1);
known[c]->sonline += known[c]->online;
known[c]->online = 0.0;
known[c]->month = month;
known[c]->sbytes += known[c]->bytes;
known[c]->bytes = 0.0;
} /* if */
} /* if */
}
else if (-n > 1) { /* try to guess Gebuehrenzone */
#ifdef ISDN_AT
@ -2302,42 +2277,6 @@ static void decode(int chan, register char *p, int type, int version, int tei)
} /* if */
} /* if */
}
else { /* AOC-E */
if ((c = call[chan].confentry[OTHER]) > -1) {
if (!replay && (chargemax != 0.0)) { /* only used here if no AOC-D */
if (day != known[c]->day) {
sprintf(s, "CHARGEMAX resetting %s's charge (day %d->%d)",
known[c]->who, (known[c]->day == -1) ? 0 : known[c]->day, day);
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s);
known[c]->scharge += known[c]->charge;
known[c]->charge = 0.0;
known[c]->day = day;
} /* if */
} /* if */
if (!replay && (connectmax != 0.0)) { /* only used here if no AOC-D */
if (month != known[c]->month) {
sprintf(s, "CONNECTMAX resetting %s's online (month %d->%d)",
known[c]->who, (known[c]->month == -1) ? 0 : known[c]->month, month);
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s);
known[c]->sonline += known[c]->online;
known[c]->online = 0.0;
known[c]->month = month;
known[c]->sbytes += known[c]->bytes;
known[c]->bytes = 0.0;
} /* if */
} /* if */
known[c]->charge -= known[c]->rcharge;
known[c]->charge += pay;
} /* if */
} /* else */
} /* if */
} /* if */
@ -2667,9 +2606,6 @@ static void decode(int chan, register char *p, int type, int version, int tei)
} /* if */
#endif
if ((c = call[chan].confentry[OTHER]) > -1)
known[c]->rcharge = 0.0;
/* This message comes before bearer capability */
/* So dont show it here, show it at Bearer capability */
@ -2683,6 +2619,15 @@ static void decode(int chan, register char *p, int type, int version, int tei)
if (call[chan].knock) {
info(chan, PRT_SHOWNUMBERS, STATE_RING, "NO FREE B-CHANNEL !!");
info(chan, PRT_SHOWNUMBERS, STATE_RING, "********************");
#ifdef Q931
if (!q931dmp) {
#endif
call[chan].connect = call[chan].disconnect = cur_time;
call[chan].cause = -2;
logger(chan);
#ifdef Q931
} /* if */
#endif
} /* if */
if (sound)
@ -4051,9 +3996,10 @@ static void processctrl(int card, char *s)
register int wegchan; /* fuer gemakelte */
auto int dialin, type = 0, cref = -1, creflen, version;
static int tei = BROADCAST, sapi = 0, net = 1, firsttime = 1;
auto char sx[BUFSIZ], s2[BUFSIZ], why[BUFSIZ], hint[BUFSIZ];
auto char sx[BUFSIZ], s1[BUFSIZ], s2[BUFSIZ], why[BUFSIZ], hint[BUFSIZ];
static char last[BUFSIZ];
auto int isAVMB1 = 0;
auto double tx;
hexSeen = 1;
@ -4376,6 +4322,11 @@ static void processctrl(int card, char *s)
if (call[chan].channel) { /* Aha, Kanal war dabei, dann nehmen wir den gleich */
chan = call[chan].channel - 1;
if (chanused[chan])
print_msg(PRT_DEBUG_BUGS, " DEBUG> %s: chan#%d already in use!\n", st + 4, chan);
chanused[chan] = 1;
print_msg(PRT_DEBUG_BUGS, " DEBUG> %s: Chan auf %d gesetzt\n", st + 4, chan);
/* nicht --channel, channel muss unveraendert bleiben! */
@ -4509,6 +4460,7 @@ static void processctrl(int card, char *s)
ein reingerufener Kanal eine gueltige tei */
decode(chan, ps, type, version, tei);
chanused[chan] = 2;
switch (type) {
@ -4569,7 +4521,50 @@ static void processctrl(int card, char *s)
sprintf(sx, "1.CI %s %s (now)", currency, double2str(call[chan].pay, 6, 3, DEB));
info(chan, PRT_SHOWCONNECT, STATE_CONNECT, sx);
} /* if */
if ((c = call[chan].confentry[OTHER]) > -1) {
if (!replay && (chargemax != 0.0)) {
if (day != known[c]->day) {
sprintf(s1, "CHARGEMAX resetting %s's charge (day %d->%d)",
known[c]->who, (known[c]->day == -1) ? 0 : known[c]->day, day);
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s1);
known[c]->scharge += known[c]->charge;
known[c]->charge = 0.0;
known[c]->day = day;
} /* if */
tx = cur_time - call[chan].connect;
sprintf(s1, "CHARGEMAX remaining=%s %s %s %s",
currency,
double2str((chargemax - known[c]->charge - call[chan].pay), 6, 2, DEB),
(connectmax == 0.0) ? "" : double2clock(connectmax - known[c]->online - tx),
(bytemax == 0.0) ? "" : double2byte((double)(bytemax - known[c]->bytes)));
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s1);
if (((known[c]->charge + call[chan].pay)>= chargemax) && (*known[c]->interface > '@'))
chargemaxAction(chan, (known[c]->charge + call[chan].pay - chargemax));
} /* if */
if (!replay && (connectmax != 0.0)) {
if (month != known[c]->month) {
sprintf(s1, "CONNECTMAX resetting %s's online (month %d->%d)",
known[c]->who, (known[c]->month == -1) ? 0 : known[c]->month, month);
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD,s1);
known[c]->sonline += known[c]->online;
known[c]->online = 0.0;
known[c]->month = month;
known[c]->sbytes += known[c]->bytes;
known[c]->bytes = 0.0;
} /* if */
} /* if */
} /* if */
} /* if */
} /* if */
if (sound)
@ -4703,6 +4698,7 @@ doppelt:break;
#endif
logger(chan);
chanused[chan] = 0;
addlist(chan, type, 2);
if (call[chan].dialog || any) {
@ -4755,7 +4751,9 @@ doppelt:break;
(call[chan].loc == 3))) { /* Transit network */
auto char s[BUFSIZ], s1[BUFSIZ];
showcheapest(call[chan].zone, 181, call[chan].provider, s1);
*s = call[chan].provider;
s[1] = 0;
showcheapest(call[chan].zone, 181, s, s1, -1, -1, 0);
sprintf(s, "OVERLOAD %s", s1);
@ -4764,6 +4762,7 @@ doppelt:break;
if (OUTGOING && ((c = call[chan].confentry[OTHER]) > -1)) {
if (chargemax != 0.0) {
known[c]->charge += call[chan].pay;
sprintf(sx, "CHARGEMAX total=%s %s today=%s %s remaining=%s %s",
currency,
double2str(known[c]->scharge + known[c]->charge, 7, 2, DEB),
@ -4776,7 +4775,7 @@ doppelt:break;
if (connectmax != 0.0) {
if (connectmaxmode == 1)
known[c]->online += ((int)((call[chan].disconnect - call[chan].connect + 59) / 60.0)) * 60.0;
known[c]->online += ((int)((call[chan].disconnect - call[chan].connect + 59) / 60.0)) * 60.0;
else
known[c]->online += call[chan].disconnect - call[chan].connect;
@ -4946,7 +4945,7 @@ retry:
;
else
processctrl(atoi(p3), p3 + 3);
}
} /* else */
}
else
processctrl(card, p1);
@ -5062,20 +5061,52 @@ void morekbd()
/*****************************************************************************/
static void teardown(int chan)
{
auto char sx[BUFSIZ];
#ifdef Q931
if (!q931dmp)
#endif
logger(chan);
chanused[chan] = 0;
call[chan].disconnect = call[chan].connect;
call[chan].cause = 0x66; /* Recovery on timer expiry */
addlist(chan, SETUP, 2);
sprintf(sx, "HANGUP (%s)", qmsg(TYPE_CAUSE, VERSION_EDSS1, call[chan].cause));
info(chan, PRT_SHOWHANGUP, STATE_HANGUP, sx);
if (sound)
ringer(chan, RING_HANGUP);
clearchan(chan, 1);
} /* teardown */
/*****************************************************************************/
void processcint()
{
register int chan;
auto char sx[BUFSIZ], why[BUFSIZ];
auto double newcint;
register int chan, c;
auto char sx[BUFSIZ], s1[BUFSIZ], why[BUFSIZ];
auto double newcint, tx;
auto int dur;
for (chan = 0; chan < 2; chan++) {
if (OUTGOING && (call[chan].cint > 1)) {
if (cur_time >= call[chan].nextcint) {
dur = cur_time - call[chan].connect;
if ((chanused[chan] == 1) && (dur > 50)) /* more than 50 seconds after SETUP nothing happen? */
teardown(chan);
if (OUTGOING && (call[chan].cint > 1)) {
if (cur_time >= call[chan].nextcint) {
if (call[chan].cinth != hour) { /* Moeglicherweise Taktwechsel */
newcint = taktlaenge(chan, why);
@ -5095,14 +5126,31 @@ void processcint()
price(chan, why, 0);
sprintf(sx, "%d.CI %s %s (after %s) ",
call[chan].ctakt,
currency,
double2str(call[chan].pay, 6, 3, DEB),
double2clock((double)dur));
call[chan].ctakt,
currency,
double2str(call[chan].pay, 6, 3, DEB),
double2clock((double)dur));
info(chan, PRT_SHOWCONNECT, STATE_CONNECT, sx);
info(chan, PRT_SHOWCONNECT, STATE_CONNECT, sx);
call[chan].nextcint += (int)call[chan].cint;
if ((c = call[chan].confentry[OTHER]) > -1) {
if (!replay && (chargemax != 0.0)) {
tx = cur_time - call[chan].connect;
sprintf(s1, "CHARGEMAX remaining=%s %s %s %s",
currency,
double2str((chargemax - known[c]->charge - call[chan].pay), 6, 2, DEB),
(connectmax == 0.0) ? "" : double2clock(connectmax - known[c]->online - tx),
(bytemax == 0.0) ? "" : double2byte((double)(bytemax - known[c]->bytes)));
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s1);
if (((known[c]->charge + call[chan].pay) >= chargemax) && (*known[c]->interface > '@'))
chargemaxAction(chan, (known[c]->charge + call[chan].pay - chargemax));
} /* if */
} /* if */
} /* if */
} /* if */
} /* for */

View File

@ -1,4 +1,4 @@
/* $Id: takt_de.c,v 1.17 1999/03/24 19:38:03 akool Exp $
/* $Id: takt_de.c,v 1.18 1999/04/03 12:47:10 akool Exp $
*
* ISDN accounting for isdn4linux. (log-module)
*
@ -19,6 +19,19 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: takt_de.c,v $
* Revision 1.18 1999/04/03 12:47:10 akool
* - isdnlog Version 3.12
* - "%B" tag in ILABEL/OLABEL corrected
* - isdnlog now register's incoming calls when there are no free B-channels
* (idea from sergio@webmedia.es)
* - better "samples/rate.conf.de" (suppress provider without true call-by-call)
* - "tarif.dat" V:1.17 [03-Apr-99]
* - Added EWE-Tel rates from Reiner Klaproth <rk1@msjohan.dd.sn.schule.de>
* - isdnconf can now be used to generate a Least-cost-router table
* (try "isdnconf -c .")
* - isdnlog now simulate a RELEASE COMPLETE if nothing happpens after a SETUP
* - CHARGEMAX Patches from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
*
* Revision 1.17 1999/03/24 19:38:03 akool
* - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/
@ -1255,22 +1268,25 @@ static int compare(const SORT *s1, const SORT *s2)
} /* compare */
void showcheapest(int zone, int duration, int ignoreprovider, char *info)
int showcheapest(int zone, int duration, char *ignoreprovider, char *info, int tz, int hour, int verbose)
{
register int prefix, n = 0, n1, tz, cheapest = UNKNOWN;
register int prefix, n = 0, n1, cheapest = UNKNOWN, tz1;
auto char why[BUFSIZ], s[BUFSIZ];
auto double cheaptarif, providertarif = 0.0, tarif;
auto time_t cur_time;
auto struct tm *tm;
if (hour == UNKNOWN) {
time(&cur_time);
tm = localtime(&cur_time);
tz = tarifzeit(tm, why, 0);
hour = tm->tm_hour;
if (ignoreprovider == UNKNOWN)
if (verbose) {
tz1 = tarifzeit(tm, why, ((prefix == DTAG) && CityWeekend));
print_msg(PRT_NORMAL, "%s\n", why);
} /* if */
} /* if */
if (!preselect) {
preselect = DTAG;
@ -1280,14 +1296,18 @@ void showcheapest(int zone, int duration, int ignoreprovider, char *info)
cheaptarif = 99999.9;
if (duration == -1)
if (duration == UNKNOWN)
duration = TEST;
for (prefix = 0; prefix < MAXPROVIDER; prefix++) {
if (t[prefix].used && (prefix != ignoreprovider)) {
if (t[prefix].used && !strchr(ignoreprovider, prefix)) {
tz = tarifzeit(tm, why, ((prefix == DTAG) && CityWeekend));
tarif = tpreis(prefix, zone, tz, tm->tm_hour, duration);
if (tz == UNKNOWN)
tz1 = tarifzeit(tm, why, ((prefix == DTAG) && CityWeekend));
else
tz1 = tz;
tarif = tpreis(prefix, zone, tz1, hour, duration);
if (prefix == preselect)
providertarif = tarif;
@ -1304,13 +1324,14 @@ void showcheapest(int zone, int duration, int ignoreprovider, char *info)
} /* if */
} /* for */
if ((cheapest != UNKNOWN) && (ignoreprovider != UNKNOWN)) {
if (!verbose) {
sprintf(info, "Try 010%02d:%s", cheapest, t[cheapest].Provider);
return;
return(cheapest);
} /* if */
if (cheapest != UNKNOWN) {
tarif = t[cheapest].tarif[zone][tz][tm->tm_hour];
tarif = t[cheapest].tarif[zone][tz1][hour];
if (t[cheapest].takt1[zone] == UNKNOWN)
sprintf(s, "DM %5.3f/%7.3fs", t[cheapest].taktpreis[zone], tarif);
@ -1333,9 +1354,20 @@ void showcheapest(int zone, int duration, int ignoreprovider, char *info)
qsort(sort, n, sizeof(SORT), compare);
for (n1 = 0; n1 < n; n1++)
if (sort[n1].tarif != -1)
print_msg(PRT_NORMAL, "010%02d:%s%*sDM %5.3f\n", sort[n1].prefix,
t[sort[n1].prefix].Provider, 15 - strlen(t[sort[n1].prefix].Provider), "", sort[n1].tarif);
if (sort[n1].tarif != -1) {
if (t[sort[n1].prefix].takt1[zone] == UNKNOWN) {
tarif = t[sort[n1].prefix].tarif[zone][tz1][hour];
sprintf(s, "[Takt DM %6.3f/%7.3fs]", t[sort[n1].prefix].taktpreis[zone], tarif);
}
else
sprintf(s, "[Takt %d/%d]", t[sort[n1].prefix].takt1[zone], t[sort[n1].prefix].takt2[zone]);
print_msg(PRT_NORMAL, "010%02d:%s%*sDM %5.3f %s\n", sort[n1].prefix,
t[sort[n1].prefix].Provider, 15 - strlen(t[sort[n1].prefix].Provider), "", sort[n1].tarif, s);
} /* if */
return(cheapest);
} /* showcheapest */

View File

@ -1,3 +1,23 @@
# Tarifauswahl fuer PTA (Post & Telekom Austria)
# 1: Minimumtarif (ATS 1.116 je Impuls)
# 2: Standardtarif (ATS 1.056 je Impuls)
# 3: Geschaeftstarif 1 (ATS 0.996 je Impuls)
# 4: Geschaeftstarif 2 (ATS 0.936 je Impuls)
# 5: Geschaeftstarif 3 (ATS 0.816 je Impuls)
P:00=2
# Dont use EWE Tel
P:14=99
# Dont use NetCologne
P:22=99
# Dont use Telebridge
P:28=99
# Dont use ACC
P:49=99
# Kennzahl 98, moegliche Varianten:
# 0=Nikoma Minutentakt
# 1=Nikoma Sekundentakt

View File

@ -1,3 +1,23 @@
# Tarifauswahl fuer PTA (Post & Telekom Austria)
# 1: Minimumtarif (ATS 1.116 je Impuls)
# 2: Standardtarif (ATS 1.056 je Impuls)
# 3: Geschaeftstarif 1 (ATS 0.996 je Impuls)
# 4: Geschaeftstarif 2 (ATS 0.936 je Impuls)
# 5: Geschaeftstarif 3 (ATS 0.816 je Impuls)
P:00=2
# Dont use EWE Tel
P:14=99
# Dont use NetCologne
P:22=99
# Dont use Telebridge
P:28=99
# Dont use ACC
P:49=99
# Kennzahl 98, moegliche Varianten:
# 0=Nikoma Minutentakt
# 1=Nikoma Sekundentakt

View File

@ -1,13 +1,13 @@
# @(#)tarif.dat 1.14 24-Mar-99 20:43
# @(#)tarif.dat 1.17 03-Apr-99 13:46
#
# Copyright 1995, 1999 by Andreas Kool (akool@isdn4linux.de)
#
V:1.14 [24-Mar-99]
V:1.17 [03-Apr-99]
#
# P: Provider
# G: tt.mm.jjjj Tarif g<EFBFBD>ltig ab
# G: tt.mm.jjjj Tarif gueltig ab
# C: Comment's
# +: Verbindungsentgelt pro Gespräch
# +: Verbindungsentgelt pro Gespraech
# -: kostenlose Zeit in Sekunden
# I: Internet-Zugangsnummer
# Z: (Zone)
@ -28,30 +28,30 @@ V:1.14 [24-Mar-99]
# *=jeder Tag (flat rate)
#
################################################################
P:11=o.tel.o
G:01.03.1999
P:11,0=o.tel.o
G:01.04.1999
C:Homepage: http://www.o-tel-o.de
C:Hotline: 01803/1998 oder 0800/7370 (Geschaeftskunden)
C:Adresse: 96038 Bamberg
I:0191501 # (Benutzername: otelo; Passwort: online)
Z:2-3,60/60
T:W08-18=0.20
T:W08-18=0.15
T:W18-08=0.10
T:E=0.095
Z:4-9,60/60
T:W08-18=0.94
T:W18-08=0.47
T:E=0.47
# W22-09 sowie E* sinkt der Tarif ab der 31. Minute auf DM 0.03
# Internet:W22-09 sowie E* sinkt der Tarif ab der 31. Minute auf DM 0.03
Z:H,60/60
T:*=0.059
################################################################
P:13=Tele 2
P:13,0=Tele 2
G:08.02.1999
C:Homepage: http://www.tele2.de
C:Hotline: 0800/24-01013
C:Adresse: Postfach 130840, 40558
C: Düsseldorf
C: Duesseldorf
Z:2-3,60/60
T:W07-19=0.15
T:W19-22=0.07
@ -68,19 +68,68 @@ T:*=0.47
Z:G,60/60
T:*=2.44
################################################################
P:14,0=EWE Tel
G:01.04.1999
C:Name: EWE Tel GmbH
C:Homepage: http://www.ewetel.de
C:Hotline: 01803 252423
C:Adresse: Postfach 2509
C: 26015 Oldenburg
C:Internet: ueber WinShuttle, siehe
C: http://www.shuttle.de
I:04919999999
I:04413508000
I:04413508888
Z:1-3,1/1
T:W06-18=0.18
T:W18-21=0.12
T:W21-06=0.08
T:E06-21=0.12
T:E21-06=0.08
Z:4-7,1/1
T:W09-18=0.88
T:W18-09=0.48
T:E=0.48
Z:8,1/1
T:W09-18=1.29
T:W18-09=0.55
T:E=0.55
Z:9,1/1
T:W09-18=0.96
T:W18-09=0.48
T:E=0.48
Z:A,1/1
T:*=0.62
Z:B,1/1
T:*=0.69
Z:C,1/1
T:*=1.04
Z:D,1/1
T:*=0.69
Z:E,1/1
T:*=1.79
Z:F,1/1
T:*=2.29
Z:G,1/1
T:*=3.09
Z:H,1/1
T:W09-21=0.07
T:W21-09=0.04
T:E09-21=0.07
T:E21-09=0.04
################################################################
P:15,0=RSL COM
G:23.11.1998
G:01.04.1999
C:Clever call
Z:2-3,60/60
T:W08-18=0.25 # Standard
T:W18-21=0.13 # Abend
T:W21-08=0.07 # Nacht
T:E08-21=0.13
T:W08-21=0.18
T:W21-08=0.07
T:E08-21=0.14
T:E21-08=0.07
Z:4-9,60/60
T:W08-21=0.65
T:W21-08=0.45
T:E=0.45
T:W08-21=0.69
T:W21-08=0.49
T:E=0.49
Z:D,60/60
T:*=0.40
Z:E,60/60
@ -113,7 +162,8 @@ C:Fax : 0221/2222-390
C:Adresse : Maarweg 163, 50825 Koeln
C:Internet-Telefonkosten: Pauschaltarif 35DM/Monat bzw. Zeittakt H
C:Reine Internetkosten : 39DM/Monat inkl. 60 Std., danach 5Pf/Min.
C 5DM/Monat + 5Pf/Min.
C: 5DM/Monat + 5Pf/Min.
I:?????
Z:1,6/1
T:W08-18=0.06
T:W18-08=0.035
@ -137,15 +187,15 @@ T:W08-18=0.04
T:W18-08=0.02
T:E=0.02
################################################################
P:23=tesion ))
G:01.02.1999
P:23,0=tesion ))
G:18.03.1999
C:Name: tesion )) Neue
C: Telekommunikation
C:Homepage: http://www.tesion.de
C: Hotline: 0800/711 0 711
C: Telefon: 0711/20 21-610
C: Telefax: 0711/20 21-611
C: Adresse: Kriegsbergstraße 11,
C: Adresse: Kriegsbergstrasse 11,
C: 70174 Stuttgart
+:0.06
Z:2-3,1/1
@ -165,93 +215,137 @@ T:*=0.59
Z:E,1/1
T:*=1.61
################################################################
P:28=Telebridge
G:01.01.1999
P:24,0=TelePassport
G:01.04.1999
C:Name: TelePassport Service GmbH
C:Homepage: http://www.telepassport.de
C:Hotline: 0800/808 808 8
C:Telefon: 0361/594 2500
C:Telefax: 0800/808 808 9
C:Adresse: Juri-Gagarin-Ring 88, 99084
C: Erfurt
I:?????
Z:2-3,60/60
T:W08-18=0.18
T:W18-08=0.12
T:E=0.12
Z:4-9,60/60
T:*=0.58
Z:H,60/60
T:*=0.12
################################################################
P:28,0=Telebridge
G:01.03.1999
C:Hotline: 01805/335 440
C:Adresse: Zeppelinstraße 3, 73105
C: Dürnau
C:Adresse: Zeppelinstrasse 3, 73105
C: Duernau
C:Reseller von COLT
-:5
Z:1,120/120
T:*=0.09
T:*=0.13
Z:2,60/60
T:*=0.14
T:*=0.13
Z:3,60/60
T:*=0.22
T:*=0.13
Z:4-9,60/60
T:*=0.49
T:*=0.47
################################################################
P:30=TelDaFax
G:04.01.1999
P:30,0=TelDaFax
G:31.03.1999
C:Name: TeDaFax Telefon-, Daten- und Faxtransfer AG
C:Homepage: http://www.teldafax.de
C:Hotline: 0800/01030-00
C:Adresse: Postfach 2206
C: 35010 Marburg
Z:2-3,1/1
T:W09-18=0.17
T:W18-09=0.09
T:W07-09=0.09
T:W09-18=0.15
T:W18-21=0.09
T:W21-07=0.06
T:E=0.09
Z:4-9,1/1
T:W09-18=0.84
T:W18-09=0.48
T:E=0.48
T:*=0.48
################################################################
P:33,0=DTAG
G:15.01.1999
G:01.04.1999
C:Name: Deutsche Telekom AG
C:Homepage: http://www.dtag.de
C:Hotline: 0800/33-01000
C:Internet-Zugang: Citytarif zzgl. DM 0.05/Minute Nutzungsentgeld
C: pro Monat 2 Stunden Nutzungsentgelt frei
C: monatliche Grundgeb<65>hr DM 8,00
C:Hotline: 0800/33-01000, T-Online Tarifhotline: 0800/33-03333
C:Internet-Zugang: monatliche Grundgeb<65>hr DM 8,00 enthalten 2 Freistunden
C: dort ist nur das Verbindungsentgeld faellig
C:ISDN-Tarif
C:FIXME: Tarife überprüfen! 04-Mar-99
C:FORMEL: 7,2 / Minutenpreis => Taktlaenge
C:Quelle: http://www.telekom.de/untern/tarife/mobil/index.htm
I:0191011
Z:1,0.12
T:W02-05=240 # Nacht
T:W05-09=150 # Spar
T:W09-18=90 # Standard
T:W18-21=150 # Spar
T:W21-02=240 # Mondschein
T:E05-21=150 # Spar
T:E21-05=240 # Mondschein
Z:2-3,0.12
T:W02-05=120 # Nacht
T:W05-09=60 # Spar
T:W09-18=30 # Standard
T:W18-21=60 # Spar
T:W21-02=60 # Mondschein
T:E=60 # Spar
T:W09-18=90
T:W18-21=150
T:W21-05=240
T:W05-09=150
T:E05-21=150
T:E21-05=240
Z:2,0.12
T:W09-18=30
T:W18-21=60
T:W21-06=120
T:W06-09=60
T:E06-21=60
T:E21-06=120
Z:3,0.12
T:W09-18=30
T:W18-21=60
T:W21-06=120 # FALSCH: Seit 1.4.99 kostet hier die Einheit nur DM 0,06
T:W06-09=60
T:E06-21=60
T:E21-06=120 # FALSCH: Seit 1.4.99 kostet hier die Einheit nur DM 0,06
# Z:3 Fern
# T:1-5/09-18=0.12/30:600,0.084/30 Standard
# T:1-5/18-21=0.12/60:600,0.084/60 Spar
# T:1-5/21-06=0.06/60 Nacht
# T:1-5/06-09=0.12/60:600,0.084/60 Spar
# T:6-7,H/06-21=0.12/60:600,0.084/60 Spar
# T:6-7,H/21-06=0.06/60 Nacht
# Z:H T-Online
# A:0191011
# T:*=0.06/0,0.06/10
Z:4-9,0.12
T:W09-18=7.5 # Standard
T:W18-09=15 # Spar
T:E=15 # Spar
Z:5,60/60
T:W09-18=0.632 # Standard
T:W18-09=0.431 # Spar
T:E=0.431 # Spar
Z:7-9,60/60
T:W09-18=0.96 # Standard
T:W18-09=0.48 # Spar
T:E=0.60 # Spar
Z:8,60/60
T:W09-18=1.44 # Standard
T:W18-09=0.60 # Spar
T:E=0.60 # Spar
T:W09-18=7.5
T:W18-09=15
T:E=15
Z:5,0,12
T:W09-18=11.392
T:W18-09=16.705
T:E=16.705
Z:8,0.12
T:W09-18=5.294
T:W18-09=12.811
T:E=12.811
Z:H,10/10
T:W05-09=0.098
T:W09-18=0.13
T:W18-21=0.098
T:W21-05=0.08
T:E05-21=0.098
T:E21-05=0.08
# ab 1.4.1999
# Z:H,60/60
# T:*=0.06
T:*=0.06
# zzgl. DM 0.06 Verbindungsentgeld/Einwahl
################################################################
P:49=ACC
G:01.01.1999
P:40,0=Esprit
G:01.04.1999
C:Name: Esprit Telecom
C:Homepage: http://www.esprittelecom.de
C:Hotline: 0800/1040800
C:Adresse: August-Thyssen-Str. 1, 40211
C: Duesseldorf
I:0192340 # (Benutzername: Esprit Telecom, Kennwort: Internet)
Z:2-3,60/60
T:W18-21=0.09
T:W21-08=0.05
T:E08-21=0.09
T:E21-08=0.05
Z:4-9,60/60
T:W18-08=0.48
T:E=0.48
Z:H,60/60
T:W08-18=0.08
T:W18-08=0.06
################################################################
P:49,0=ACC
G:01.04.1999
C:Name: ACC Telecom
C:Homepage: http://www.acctelecom.de
C:Hotline: 0800/122 55 222 bzw.
@ -263,7 +357,7 @@ T:W08-18=0.12
T:W18-08=0.09
T:E=0.09
Z:2-3,30/30
T:W08-18=0.18
T:W08-18=0.15
T:W18-08=0.09
T:E=0.09
Z:4-9,1/1
@ -283,7 +377,7 @@ T:E=0.55
Z:E,1/1
T:*=1.64
################################################################
P:50=Talkline
P:50,0=Talkline
G:03.03.1999
C:Homepage: http://www.null1050.de
C:Hotline: 01802/2002
@ -294,7 +388,7 @@ T:W08-21=0.18
T:W21-08=0.09
T:E=0.09
Z:4-9,60/60
T:*=0.99
T:*=0.69
Z:H,180/180
T:W08-09=0.09
T:W09-18=0.16
@ -302,22 +396,32 @@ T:W18-21=0.09
T:W21-08=0.09
T:E=0.09
################################################################
P:51=01051 Telecom
P:51,0=01051
G:17.02.1999
C:Homepage: http://www.01051.com
C:Adresse: Königsalle 60f
C: 40210 Düsseldorf
C:Adresse: Koenigsallee 60f
C: 40210 Duesseldorf
Z:2-3,60/60
T:*=0.09
################################################################
P:70=Arcor
G:01.01.1999
P:70,0=Arcor
G:01.04.1999
C:Mannesmann Arcor
I:0192070 # (Benutzername: arcor; Passwort: internet; Proxy: proxy.arcor-ip.de:80; Startseite: http://www.call.arcor.net)
Z:2-3,60/60
T:W09-18=0.18 # Standard
T:W18-09=0.10 # Spar
T:E=0.10 # Spar
Z:2,60/60
T:W06-09=0.075
T:W09-18=0.14
T:W18-21=0.075
T:W21-06=0.04
T:E06-21=0.075
T:E21-06=0.04
Z:3,60/60
T:W06-09=0.095
T:W09-18=0.18
T:W18-21=0.095
T:W21-06=0.06
T:E06-21=0.095
T:E21-06=0.06
Z:4-6,60/60
T:W09-18=0.96
T:W18-09=0.48
@ -339,13 +443,31 @@ T:*=2.72 # FIXME
Z:H,60/60
T:*=0.06
################################################################
P:79=Viatel
G:24.12.1999
P:78,0=3U
G:01.04.1999
C:3U Telekommunikation GmbH
C:Homepage: http://www.uuu.de
C:Hotline: 01805/01078-0
C:Adresse: Mergenthalerallee 79-81
C: 65760 Eschborn
Z:2-3,1/1
T:W08-20=0.139
T:W20-08=0.059
T:E08-20=0.139
T:E20-08=0.059
Z:4-9,1/1
T:W08-20=0.419
T:W20-08=0.399
T:E08-20=0.419
T:E20-08=0.399
################################################################
P:79,0=Viatel
G:24.12.1998
C:Homepage: http://www.viatel.de
C:Hotline: 0800/79-01079
C:Telefon: 069/94 994-0
C:Telefax: 069/94 994-100
C:Adresse: Hanauer Landstraße 187-189,
C:Adresse: Hanauer Landstrasse 187-189
C: 60314 Frankfurt am Main
Z:2-3,30/1
T:W09-18=0.16
@ -356,7 +478,7 @@ T:W09-18=0.73
T:W18-09=0.36
T:E=0.36
################################################################
P:85=GTS-WESTCom
P:85,0=GTS-WESTCom
G:01.02.1999
C:Homepage: http://www.westcom.de
C:Hotline: 0800/937-8266
@ -373,7 +495,7 @@ T:W21-09=0.60
T:E09-21=0.74
T:E21-09=0.60
################################################################
P:88=WorldCom
P:88,0=WorldCom
C:Dies sind *nicht* die korrekten Tarife von WorldCom, da WorldCom
C:keine Tarifdaten veroeffentlicht!
C:Vielmehr handelt es sich hier nur um die Tarife fuer den
@ -387,7 +509,7 @@ T:W21-05=0.03
T:E05-21=0.048
T:E21-05=0.03
################################################################
P:90=Viag Intercom
P:90,0=Viag Intercom
G:01.01.1999
Z:2-3,60/60
T:W08-18=0.17
@ -485,3 +607,26 @@ Z:F,60/60
T:*=0.199
Z:G,60/60
T:*=0.259
#
# Wichtige Provider:
# 1. Echtes Call-by-call (per 1-Apr-99):
# 11:o.tel.o
# 15:Debitel
# 19:MobilCom
# 24:TelePassport
# 30:TelDaFax
# 33:Deutsche Telekom
# 40:Esprit
# 50:Talkline
# 51:01051 Telecom
# 70:Arcor
# 78:3U
# 79:Viatel
# 85:GTS-WESTCom
# 90:Viag Interkom
#
# 2. Angemeldet:
# 13:Tele 2
# 15:RSL COM
# 88:UUnet
# 98:Mox

View File

@ -1,4 +1,4 @@
/* $Id: tools.c,v 1.21 1999/03/20 16:55:22 akool Exp $
/* $Id: tools.c,v 1.22 1999/04/03 12:47:45 akool Exp $
*
* ISDN accounting for isdn4linux. (Utilities)
*
@ -19,6 +19,19 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: tools.c,v $
* Revision 1.22 1999/04/03 12:47:45 akool
* - isdnlog Version 3.12
* - "%B" tag in ILABEL/OLABEL corrected
* - isdnlog now register's incoming calls when there are no free B-channels
* (idea from sergio@webmedia.es)
* - better "samples/rate.conf.de" (suppress provider without true call-by-call)
* - "tarif.dat" V:1.17 [03-Apr-99]
* - Added EWE-Tel rates from Reiner Klaproth <rk1@msjohan.dd.sn.schule.de>
* - isdnconf can now be used to generate a Least-cost-router table
* (try "isdnconf -c .")
* - isdnlog now simulate a RELEASE COMPLETE if nothing happpens after a SETUP
* - CHARGEMAX Patches from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
*
* Revision 1.21 1999/03/20 16:55:22 akool
* isdnlog 3.09 : support for all Internet-by-call numbers
*
@ -856,7 +869,7 @@ int iprintf(char *obuf, int chan, register char *fmt, ...)
case 'C' : p = itoa(call[chan].cref, p, 10, 0);
break;
case 'B' : p = itoa(chan, p, 10, 0);
case 'B' : p = itoa(call[chan].channel, p, 10, 0);
break;
case 'A' : s = sx;

View File

@ -1,4 +1,4 @@
/* $Id: tools.h,v 1.33 1999/03/24 19:39:06 akool Exp $
/* $Id: tools.h,v 1.34 1999/04/03 12:47:50 akool Exp $
*
* ISDN accounting for isdn4linux.
*
@ -20,6 +20,19 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: tools.h,v $
* Revision 1.34 1999/04/03 12:47:50 akool
* - isdnlog Version 3.12
* - "%B" tag in ILABEL/OLABEL corrected
* - isdnlog now register's incoming calls when there are no free B-channels
* (idea from sergio@webmedia.es)
* - better "samples/rate.conf.de" (suppress provider without true call-by-call)
* - "tarif.dat" V:1.17 [03-Apr-99]
* - Added EWE-Tel rates from Reiner Klaproth <rk1@msjohan.dd.sn.schule.de>
* - isdnconf can now be used to generate a Least-cost-router table
* (try "isdnconf -c .")
* - isdnlog now simulate a RELEASE COMPLETE if nothing happpens after a SETUP
* - CHARGEMAX Patches from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
*
* Revision 1.33 1999/03/24 19:39:06 akool
* - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/
@ -963,7 +976,7 @@ _EXTERN char *qmsg(int type, int version, int val);
_EXTERN char *Myname;
_EXTERN void initTarife(char *msg);
_EXTERN void exitTarife(void);
_EXTERN void showcheapest(int zone, int duration, int ignoreprovider, char *info);
_EXTERN int showcheapest(int zone, int duration, char *ignoreprovider, char *info, int tz, int hour, int verbose);
_EXTERN void price(int chan, char *hint, int viarep);
_EXTERN char *realProvidername(int prefix);
_EXTERN void preparecint(int chan, char *msg, char *hint, int viarep);