- 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. ## ISDN accounting for isdn4linux.
## ##
@ -19,6 +19,19 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
## ##
## $Log: Makefile.in,v $ ## $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 ## Revision 1.64 1999/03/25 19:39:41 akool
## - isdnlog Version 3.11 ## - isdnlog Version 3.11
## - make isdnlog compile with egcs 1.1.7 (Bug report from Christophe Zwecker <doc@zwecker.com>) ## - 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 # 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 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 isdnlog ist ein Utility zur Auswertung des D-Kanals eines
ISDN-BRI Anschlusses. 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 Fuer alle, die es nun ueberhaupt nicht mehr abwarten koennen, hier das
@ -773,7 +773,7 @@ koennen folgende Platzhalter angegeben werden:
%b Monat (-> "Aug") %b Monat (-> "Aug")
%e Tag im Monat (-> " 8") %e Tag im Monat (-> " 8")
%T Uhrzeit (-> "13:17:11") %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) %k Nummer der ISDN-Karte, von der die Meldung kam (0 = 1. Karte)
%p Nummer des Provider's %p Nummer des Provider's
%P "via <Providerbezeichnung>" %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) * ISDN accounting for isdn4linux. (Report-module)
* *
@ -20,6 +20,19 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
* $Log: isdnconf.c,v $ * $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 * Revision 1.16 1999/03/24 19:37:38 akool
* - isdnlog Version 3.10 * - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/ * - 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 main(int argc, char *argv[], char *envp[])
{ {
int c; int c;
@ -696,15 +833,19 @@ int main(int argc, char *argv[], char *envp[])
if (areacode[0] != '\0') if (areacode[0] != '\0')
{ {
char *ptr, msg[BUFSIZ]; char *ptr, msg[BUFSIZ], snfile[BUFSIZ];
int len, i, zone; int len, i, zone;
initSondernummern(snfile, NULL); strcpy(snfile, "/usr/lib/isdn/sonderrufnummern.dat"); /* FIXME */
initSondernummern(snfile, &ptr);
initTarife(msg); 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) if (!isdnmon)
{ {
@ -736,6 +877,30 @@ int main(int argc, char *argv[], char *envp[])
else else
zone = GLOBALCALL; 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 { else {
area = area_diff_string(NULL,areacode); area = area_diff_string(NULL,areacode);
zone = area_diff(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:""); print_msg(PRT_NORMAL,"%s%s%s\n",ptr,area[0] != '\0'?" / ":"", area[0] != '\0'?area:"");
} /* else */ } /* 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); 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) * ISDN accounting for isdn4linux. (log-module)
* *
@ -19,6 +19,19 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
* $Log: processor.c,v $ * $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 * Revision 1.48 1999/03/25 19:40:01 akool
* - isdnlog Version 3.11 * - isdnlog Version 3.11
* - make isdnlog compile with egcs 1.1.7 (Bug report from Christophe Zwecker <doc@zwecker.com>) * - 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 int HiSax = 0, hexSeen = 0, uid = UNKNOWN;
static char *asnp, *asnm; static char *asnp, *asnm;
static int chanused[2] = { 0, 0 };
#ifdef Q931 #ifdef Q931
static int lfd = 0; static int lfd = 0;
#endif #endif
@ -785,6 +799,9 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
*intern = strlen(num) < interns0; *intern = strlen(num) < interns0;
if (*provider == UNKNOWN)
*provider = preselect;
if (!dir && (who == CALLED) && !*intern) { if (!dir && (who == CALLED) && !*intern) {
*internetnumber = isInternetAccess(*provider, num); *internetnumber = isInternetAccess(*provider, num);
@ -2090,7 +2107,6 @@ static void decode(int chan, register char *p, int type, int version, int tei)
#else #else
n = facility_start(p, AOC_INITIAL, 0); n = facility_start(p, AOC_INITIAL, 0);
#endif #endif
if (n == AOC_OTHER) if (n == AOC_OTHER)
; /* info(chan, PRT_SHOWAOCD, STATE_AOCD, asnm); */ ; /* info(chan, PRT_SHOWAOCD, STATE_AOCD, asnm); */
else { else {
@ -2121,7 +2137,10 @@ static void decode(int chan, register char *p, int type, int version, int tei)
call[chan].aoce++; call[chan].aoce++;
} /* if */ } /* 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) if (currency_mode == AOC_UNITS)
call[chan].aoce = n; call[chan].aoce = n;
@ -2135,7 +2154,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
aoc_debug(-1, s); aoc_debug(-1, s);
if (!n) { if (!n) {
if (call[chan].provider == 33) /* Only DTAG send's AOCD */ if (call[chan].provider == DTAG) /* Only DTAG send's AOCD */
info(chan, PRT_SHOWAOCD, STATE_AOCD, "Free of charge"); info(chan, PRT_SHOWAOCD, STATE_AOCD, "Free of charge");
} }
else if (n < 0) { else if (n < 0) {
@ -2166,50 +2185,6 @@ static void decode(int chan, register char *p, int type, int version, int tei)
currency, currency,
double2str(call[chan].pay, 6, 2, DEB)); double2str(call[chan].pay, 6, 2, DEB));
} /* else */ } /* 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 */ else if (-n > 1) { /* try to guess Gebuehrenzone */
#ifdef ISDN_AT #ifdef ISDN_AT
@ -2302,42 +2277,6 @@ static void decode(int chan, register char *p, int type, int version, int tei)
} /* if */ } /* if */
} /* 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 */
} /* if */ } /* if */
@ -2667,9 +2606,6 @@ static void decode(int chan, register char *p, int type, int version, int tei)
} /* if */ } /* if */
#endif #endif
if ((c = call[chan].confentry[OTHER]) > -1)
known[c]->rcharge = 0.0;
/* This message comes before bearer capability */ /* This message comes before bearer capability */
/* So dont show it here, show it at 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) { if (call[chan].knock) {
info(chan, PRT_SHOWNUMBERS, STATE_RING, "NO FREE B-CHANNEL !!"); info(chan, PRT_SHOWNUMBERS, STATE_RING, "NO FREE B-CHANNEL !!");
info(chan, PRT_SHOWNUMBERS, STATE_RING, "********************"); 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 */
if (sound) if (sound)
@ -4051,9 +3996,10 @@ static void processctrl(int card, char *s)
register int wegchan; /* fuer gemakelte */ register int wegchan; /* fuer gemakelte */
auto int dialin, type = 0, cref = -1, creflen, version; auto int dialin, type = 0, cref = -1, creflen, version;
static int tei = BROADCAST, sapi = 0, net = 1, firsttime = 1; 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]; static char last[BUFSIZ];
auto int isAVMB1 = 0; auto int isAVMB1 = 0;
auto double tx;
hexSeen = 1; 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 */ if (call[chan].channel) { /* Aha, Kanal war dabei, dann nehmen wir den gleich */
chan = call[chan].channel - 1; 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); print_msg(PRT_DEBUG_BUGS, " DEBUG> %s: Chan auf %d gesetzt\n", st + 4, chan);
/* nicht --channel, channel muss unveraendert bleiben! */ /* nicht --channel, channel muss unveraendert bleiben! */
@ -4509,6 +4460,7 @@ static void processctrl(int card, char *s)
ein reingerufener Kanal eine gueltige tei */ ein reingerufener Kanal eine gueltige tei */
decode(chan, ps, type, version, tei); decode(chan, ps, type, version, tei);
chanused[chan] = 2;
switch (type) { switch (type) {
@ -4569,6 +4521,49 @@ static void processctrl(int card, char *s)
sprintf(sx, "1.CI %s %s (now)", currency, double2str(call[chan].pay, 6, 3, DEB)); sprintf(sx, "1.CI %s %s (now)", currency, double2str(call[chan].pay, 6, 3, DEB));
info(chan, PRT_SHOWCONNECT, STATE_CONNECT, sx); info(chan, PRT_SHOWCONNECT, STATE_CONNECT, sx);
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 */ } /* if */
@ -4703,6 +4698,7 @@ doppelt:break;
#endif #endif
logger(chan); logger(chan);
chanused[chan] = 0;
addlist(chan, type, 2); addlist(chan, type, 2);
if (call[chan].dialog || any) { if (call[chan].dialog || any) {
@ -4755,7 +4751,9 @@ doppelt:break;
(call[chan].loc == 3))) { /* Transit network */ (call[chan].loc == 3))) { /* Transit network */
auto char s[BUFSIZ], s1[BUFSIZ]; 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); sprintf(s, "OVERLOAD %s", s1);
@ -4764,6 +4762,7 @@ doppelt:break;
if (OUTGOING && ((c = call[chan].confentry[OTHER]) > -1)) { if (OUTGOING && ((c = call[chan].confentry[OTHER]) > -1)) {
if (chargemax != 0.0) { if (chargemax != 0.0) {
known[c]->charge += call[chan].pay;
sprintf(sx, "CHARGEMAX total=%s %s today=%s %s remaining=%s %s", sprintf(sx, "CHARGEMAX total=%s %s today=%s %s remaining=%s %s",
currency, currency,
double2str(known[c]->scharge + known[c]->charge, 7, 2, DEB), double2str(known[c]->scharge + known[c]->charge, 7, 2, DEB),
@ -4946,7 +4945,7 @@ retry:
; ;
else else
processctrl(atoi(p3), p3 + 3); processctrl(atoi(p3), p3 + 3);
} } /* else */
} }
else else
processctrl(card, p1); 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() void processcint()
{ {
register int chan; register int chan, c;
auto char sx[BUFSIZ], why[BUFSIZ]; auto char sx[BUFSIZ], s1[BUFSIZ], why[BUFSIZ];
auto double newcint; auto double newcint, tx;
auto int dur; auto int dur;
for (chan = 0; chan < 2; chan++) { for (chan = 0; chan < 2; chan++) {
if (OUTGOING && (call[chan].cint > 1)) {
if (cur_time >= call[chan].nextcint) {
dur = cur_time - call[chan].connect; 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 */ if (call[chan].cinth != hour) { /* Moeglicherweise Taktwechsel */
newcint = taktlaenge(chan, why); newcint = taktlaenge(chan, why);
@ -5103,6 +5134,23 @@ void processcint()
info(chan, PRT_SHOWCONNECT, STATE_CONNECT, sx); info(chan, PRT_SHOWCONNECT, STATE_CONNECT, sx);
call[chan].nextcint += (int)call[chan].cint; 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 */
} /* if */ } /* if */
} /* for */ } /* 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) * ISDN accounting for isdn4linux. (log-module)
* *
@ -19,6 +19,19 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
* $Log: takt_de.c,v $ * $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 * Revision 1.17 1999/03/24 19:38:03 akool
* - isdnlog Version 3.10 * - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/ * - moved "sondernnummern.c" from isdnlog/ to tools/
@ -1255,22 +1268,25 @@ static int compare(const SORT *s1, const SORT *s2)
} /* compare */ } /* 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 char why[BUFSIZ], s[BUFSIZ];
auto double cheaptarif, providertarif = 0.0, tarif; auto double cheaptarif, providertarif = 0.0, tarif;
auto time_t cur_time; auto time_t cur_time;
auto struct tm *tm; auto struct tm *tm;
if (hour == UNKNOWN) {
time(&cur_time); time(&cur_time);
tm = localtime(&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); print_msg(PRT_NORMAL, "%s\n", why);
} /* if */
} /* if */
if (!preselect) { if (!preselect) {
preselect = DTAG; preselect = DTAG;
@ -1280,14 +1296,18 @@ void showcheapest(int zone, int duration, int ignoreprovider, char *info)
cheaptarif = 99999.9; cheaptarif = 99999.9;
if (duration == -1) if (duration == UNKNOWN)
duration = TEST; duration = TEST;
for (prefix = 0; prefix < MAXPROVIDER; prefix++) { 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)); if (tz == UNKNOWN)
tarif = tpreis(prefix, zone, tz, tm->tm_hour, duration); tz1 = tarifzeit(tm, why, ((prefix == DTAG) && CityWeekend));
else
tz1 = tz;
tarif = tpreis(prefix, zone, tz1, hour, duration);
if (prefix == preselect) if (prefix == preselect)
providertarif = tarif; providertarif = tarif;
@ -1304,13 +1324,14 @@ void showcheapest(int zone, int duration, int ignoreprovider, char *info)
} /* if */ } /* if */
} /* for */ } /* for */
if ((cheapest != UNKNOWN) && (ignoreprovider != UNKNOWN)) {
if (!verbose) {
sprintf(info, "Try 010%02d:%s", cheapest, t[cheapest].Provider); sprintf(info, "Try 010%02d:%s", cheapest, t[cheapest].Provider);
return; return(cheapest);
} /* if */ } /* if */
if (cheapest != UNKNOWN) { 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) if (t[cheapest].takt1[zone] == UNKNOWN)
sprintf(s, "DM %5.3f/%7.3fs", t[cheapest].taktpreis[zone], tarif); 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); qsort(sort, n, sizeof(SORT), compare);
for (n1 = 0; n1 < n; n1++) for (n1 = 0; n1 < n; n1++)
if (sort[n1].tarif != -1) 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 (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 */ } /* 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: # Kennzahl 98, moegliche Varianten:
# 0=Nikoma Minutentakt # 0=Nikoma Minutentakt
# 1=Nikoma Sekundentakt # 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: # Kennzahl 98, moegliche Varianten:
# 0=Nikoma Minutentakt # 0=Nikoma Minutentakt
# 1=Nikoma Sekundentakt # 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) # Copyright 1995, 1999 by Andreas Kool (akool@isdn4linux.de)
# #
V:1.14 [24-Mar-99] V:1.17 [03-Apr-99]
# #
# P: Provider # P: Provider
# G: tt.mm.jjjj Tarif g<EFBFBD>ltig ab # G: tt.mm.jjjj Tarif gueltig ab
# C: Comment's # C: Comment's
# +: Verbindungsentgelt pro Gespräch # +: Verbindungsentgelt pro Gespraech
# -: kostenlose Zeit in Sekunden # -: kostenlose Zeit in Sekunden
# I: Internet-Zugangsnummer # I: Internet-Zugangsnummer
# Z: (Zone) # Z: (Zone)
@ -28,30 +28,30 @@ V:1.14 [24-Mar-99]
# *=jeder Tag (flat rate) # *=jeder Tag (flat rate)
# #
################################################################ ################################################################
P:11=o.tel.o P:11,0=o.tel.o
G:01.03.1999 G:01.04.1999
C:Homepage: http://www.o-tel-o.de C:Homepage: http://www.o-tel-o.de
C:Hotline: 01803/1998 oder 0800/7370 (Geschaeftskunden) C:Hotline: 01803/1998 oder 0800/7370 (Geschaeftskunden)
C:Adresse: 96038 Bamberg C:Adresse: 96038 Bamberg
I:0191501 # (Benutzername: otelo; Passwort: online) I:0191501 # (Benutzername: otelo; Passwort: online)
Z:2-3,60/60 Z:2-3,60/60
T:W08-18=0.20 T:W08-18=0.15
T:W18-08=0.10 T:W18-08=0.10
T:E=0.095 T:E=0.095
Z:4-9,60/60 Z:4-9,60/60
T:W08-18=0.94 T:W08-18=0.94
T:W18-08=0.47 T:W18-08=0.47
T:E=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 Z:H,60/60
T:*=0.059 T:*=0.059
################################################################ ################################################################
P:13=Tele 2 P:13,0=Tele 2
G:08.02.1999 G:08.02.1999
C:Homepage: http://www.tele2.de C:Homepage: http://www.tele2.de
C:Hotline: 0800/24-01013 C:Hotline: 0800/24-01013
C:Adresse: Postfach 130840, 40558 C:Adresse: Postfach 130840, 40558
C: Düsseldorf C: Duesseldorf
Z:2-3,60/60 Z:2-3,60/60
T:W07-19=0.15 T:W07-19=0.15
T:W19-22=0.07 T:W19-22=0.07
@ -68,19 +68,68 @@ T:*=0.47
Z:G,60/60 Z:G,60/60
T:*=2.44 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 P:15,0=RSL COM
G:23.11.1998 G:01.04.1999
C:Clever call C:Clever call
Z:2-3,60/60 Z:2-3,60/60
T:W08-18=0.25 # Standard T:W08-21=0.18
T:W18-21=0.13 # Abend T:W21-08=0.07
T:W21-08=0.07 # Nacht T:E08-21=0.14
T:E08-21=0.13
T:E21-08=0.07 T:E21-08=0.07
Z:4-9,60/60 Z:4-9,60/60
T:W08-21=0.65 T:W08-21=0.69
T:W21-08=0.45 T:W21-08=0.49
T:E=0.45 T:E=0.49
Z:D,60/60 Z:D,60/60
T:*=0.40 T:*=0.40
Z:E,60/60 Z:E,60/60
@ -113,7 +162,8 @@ C:Fax : 0221/2222-390
C:Adresse : Maarweg 163, 50825 Koeln C:Adresse : Maarweg 163, 50825 Koeln
C:Internet-Telefonkosten: Pauschaltarif 35DM/Monat bzw. Zeittakt H C:Internet-Telefonkosten: Pauschaltarif 35DM/Monat bzw. Zeittakt H
C:Reine Internetkosten : 39DM/Monat inkl. 60 Std., danach 5Pf/Min. 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 Z:1,6/1
T:W08-18=0.06 T:W08-18=0.06
T:W18-08=0.035 T:W18-08=0.035
@ -137,15 +187,15 @@ T:W08-18=0.04
T:W18-08=0.02 T:W18-08=0.02
T:E=0.02 T:E=0.02
################################################################ ################################################################
P:23=tesion )) P:23,0=tesion ))
G:01.02.1999 G:18.03.1999
C:Name: tesion )) Neue C:Name: tesion )) Neue
C: Telekommunikation C: Telekommunikation
C:Homepage: http://www.tesion.de C:Homepage: http://www.tesion.de
C: Hotline: 0800/711 0 711 C: Hotline: 0800/711 0 711
C: Telefon: 0711/20 21-610 C: Telefon: 0711/20 21-610
C: Telefax: 0711/20 21-611 C: Telefax: 0711/20 21-611
C: Adresse: Kriegsbergstraße 11, C: Adresse: Kriegsbergstrasse 11,
C: 70174 Stuttgart C: 70174 Stuttgart
+:0.06 +:0.06
Z:2-3,1/1 Z:2-3,1/1
@ -165,93 +215,137 @@ T:*=0.59
Z:E,1/1 Z:E,1/1
T:*=1.61 T:*=1.61
################################################################ ################################################################
P:28=Telebridge P:24,0=TelePassport
G:01.01.1999 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:Hotline: 01805/335 440
C:Adresse: Zeppelinstraße 3, 73105 C:Adresse: Zeppelinstrasse 3, 73105
C: Dürnau C: Duernau
C:Reseller von COLT C:Reseller von COLT
-:5 -:5
Z:1,120/120 Z:1,120/120
T:*=0.09 T:*=0.13
Z:2,60/60 Z:2,60/60
T:*=0.14 T:*=0.13
Z:3,60/60 Z:3,60/60
T:*=0.22 T:*=0.13
Z:4-9,60/60 Z:4-9,60/60
T:*=0.49 T:*=0.47
################################################################ ################################################################
P:30=TelDaFax P:30,0=TelDaFax
G:04.01.1999 G:31.03.1999
C:Name: TeDaFax Telefon-, Daten- und Faxtransfer AG
C:Homepage: http://www.teldafax.de
C:Hotline: 0800/01030-00 C:Hotline: 0800/01030-00
C:Adresse: Postfach 2206 C:Adresse: Postfach 2206
C: 35010 Marburg C: 35010 Marburg
Z:2-3,1/1 Z:2-3,1/1
T:W09-18=0.17 T:W07-09=0.09
T:W18-09=0.09 T:W09-18=0.15
T:W18-21=0.09
T:W21-07=0.06
T:E=0.09 T:E=0.09
Z:4-9,1/1 Z:4-9,1/1
T:W09-18=0.84 T:*=0.48
T:W18-09=0.48
T:E=0.48
################################################################ ################################################################
P:33,0=DTAG P:33,0=DTAG
G:15.01.1999 G:01.04.1999
C:Name: Deutsche Telekom AG C:Name: Deutsche Telekom AG
C:Homepage: http://www.dtag.de C:Homepage: http://www.dtag.de
C:Hotline: 0800/33-01000 C:Hotline: 0800/33-01000, T-Online Tarifhotline: 0800/33-03333
C:Internet-Zugang: Citytarif zzgl. DM 0.05/Minute Nutzungsentgeld C:Internet-Zugang: monatliche Grundgeb<65>hr DM 8,00 enthalten 2 Freistunden
C: pro Monat 2 Stunden Nutzungsentgelt frei C: dort ist nur das Verbindungsentgeld faellig
C: monatliche Grundgeb<65>hr DM 8,00
C:ISDN-Tarif C:ISDN-Tarif
C:FIXME: Tarife überprüfen! 04-Mar-99
C:FORMEL: 7,2 / Minutenpreis => Taktlaenge C:FORMEL: 7,2 / Minutenpreis => Taktlaenge
C:Quelle: http://www.telekom.de/untern/tarife/mobil/index.htm C:Quelle: http://www.telekom.de/untern/tarife/mobil/index.htm
I:0191011 I:0191011
Z:1,0.12 Z:1,0.12
T:W02-05=240 # Nacht T:W09-18=90
T:W05-09=150 # Spar T:W18-21=150
T:W09-18=90 # Standard T:W21-05=240
T:W18-21=150 # Spar T:W05-09=150
T:W21-02=240 # Mondschein T:E05-21=150
T:E05-21=150 # Spar T:E21-05=240
T:E21-05=240 # Mondschein Z:2,0.12
Z:2-3,0.12 T:W09-18=30
T:W02-05=120 # Nacht T:W18-21=60
T:W05-09=60 # Spar T:W21-06=120
T:W09-18=30 # Standard T:W06-09=60
T:W18-21=60 # Spar T:E06-21=60
T:W21-02=60 # Mondschein T:E21-06=120
T:E=60 # Spar 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 Z:4-9,0.12
T:W09-18=7.5 # Standard T:W09-18=7.5
T:W18-09=15 # Spar T:W18-09=15
T:E=15 # Spar T:E=15
Z:5,60/60 Z:5,0,12
T:W09-18=0.632 # Standard T:W09-18=11.392
T:W18-09=0.431 # Spar T:W18-09=16.705
T:E=0.431 # Spar T:E=16.705
Z:7-9,60/60 Z:8,0.12
T:W09-18=0.96 # Standard T:W09-18=5.294
T:W18-09=0.48 # Spar T:W18-09=12.811
T:E=0.60 # Spar T:E=12.811
Z:8,60/60
T:W09-18=1.44 # Standard
T:W18-09=0.60 # Spar
T:E=0.60 # Spar
Z:H,10/10 Z:H,10/10
T:W05-09=0.098 T:*=0.06
T:W09-18=0.13 # zzgl. DM 0.06 Verbindungsentgeld/Einwahl
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
################################################################ ################################################################
P:49=ACC P:40,0=Esprit
G:01.01.1999 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:Name: ACC Telecom
C:Homepage: http://www.acctelecom.de C:Homepage: http://www.acctelecom.de
C:Hotline: 0800/122 55 222 bzw. C:Hotline: 0800/122 55 222 bzw.
@ -263,7 +357,7 @@ T:W08-18=0.12
T:W18-08=0.09 T:W18-08=0.09
T:E=0.09 T:E=0.09
Z:2-3,30/30 Z:2-3,30/30
T:W08-18=0.18 T:W08-18=0.15
T:W18-08=0.09 T:W18-08=0.09
T:E=0.09 T:E=0.09
Z:4-9,1/1 Z:4-9,1/1
@ -283,7 +377,7 @@ T:E=0.55
Z:E,1/1 Z:E,1/1
T:*=1.64 T:*=1.64
################################################################ ################################################################
P:50=Talkline P:50,0=Talkline
G:03.03.1999 G:03.03.1999
C:Homepage: http://www.null1050.de C:Homepage: http://www.null1050.de
C:Hotline: 01802/2002 C:Hotline: 01802/2002
@ -294,7 +388,7 @@ T:W08-21=0.18
T:W21-08=0.09 T:W21-08=0.09
T:E=0.09 T:E=0.09
Z:4-9,60/60 Z:4-9,60/60
T:*=0.99 T:*=0.69
Z:H,180/180 Z:H,180/180
T:W08-09=0.09 T:W08-09=0.09
T:W09-18=0.16 T:W09-18=0.16
@ -302,22 +396,32 @@ T:W18-21=0.09
T:W21-08=0.09 T:W21-08=0.09
T:E=0.09 T:E=0.09
################################################################ ################################################################
P:51=01051 Telecom P:51,0=01051
G:17.02.1999 G:17.02.1999
C:Homepage: http://www.01051.com C:Homepage: http://www.01051.com
C:Adresse: Königsalle 60f C:Adresse: Koenigsallee 60f
C: 40210 Düsseldorf C: 40210 Duesseldorf
Z:2-3,60/60 Z:2-3,60/60
T:*=0.09 T:*=0.09
################################################################ ################################################################
P:70=Arcor P:70,0=Arcor
G:01.01.1999 G:01.04.1999
C:Mannesmann Arcor C:Mannesmann Arcor
I:0192070 # (Benutzername: arcor; Passwort: internet; Proxy: proxy.arcor-ip.de:80; Startseite: http://www.call.arcor.net) I:0192070 # (Benutzername: arcor; Passwort: internet; Proxy: proxy.arcor-ip.de:80; Startseite: http://www.call.arcor.net)
Z:2-3,60/60 Z:2,60/60
T:W09-18=0.18 # Standard T:W06-09=0.075
T:W18-09=0.10 # Spar T:W09-18=0.14
T:E=0.10 # Spar 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 Z:4-6,60/60
T:W09-18=0.96 T:W09-18=0.96
T:W18-09=0.48 T:W18-09=0.48
@ -339,13 +443,31 @@ T:*=2.72 # FIXME
Z:H,60/60 Z:H,60/60
T:*=0.06 T:*=0.06
################################################################ ################################################################
P:79=Viatel P:78,0=3U
G:24.12.1999 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:Homepage: http://www.viatel.de
C:Hotline: 0800/79-01079 C:Hotline: 0800/79-01079
C:Telefon: 069/94 994-0 C:Telefon: 069/94 994-0
C:Telefax: 069/94 994-100 C:Telefax: 069/94 994-100
C:Adresse: Hanauer Landstraße 187-189, C:Adresse: Hanauer Landstrasse 187-189
C: 60314 Frankfurt am Main C: 60314 Frankfurt am Main
Z:2-3,30/1 Z:2-3,30/1
T:W09-18=0.16 T:W09-18=0.16
@ -356,7 +478,7 @@ T:W09-18=0.73
T:W18-09=0.36 T:W18-09=0.36
T:E=0.36 T:E=0.36
################################################################ ################################################################
P:85=GTS-WESTCom P:85,0=GTS-WESTCom
G:01.02.1999 G:01.02.1999
C:Homepage: http://www.westcom.de C:Homepage: http://www.westcom.de
C:Hotline: 0800/937-8266 C:Hotline: 0800/937-8266
@ -373,7 +495,7 @@ T:W21-09=0.60
T:E09-21=0.74 T:E09-21=0.74
T:E21-09=0.60 T:E21-09=0.60
################################################################ ################################################################
P:88=WorldCom P:88,0=WorldCom
C:Dies sind *nicht* die korrekten Tarife von WorldCom, da WorldCom C:Dies sind *nicht* die korrekten Tarife von WorldCom, da WorldCom
C:keine Tarifdaten veroeffentlicht! C:keine Tarifdaten veroeffentlicht!
C:Vielmehr handelt es sich hier nur um die Tarife fuer den 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:E05-21=0.048
T:E21-05=0.03 T:E21-05=0.03
################################################################ ################################################################
P:90=Viag Intercom P:90,0=Viag Intercom
G:01.01.1999 G:01.01.1999
Z:2-3,60/60 Z:2-3,60/60
T:W08-18=0.17 T:W08-18=0.17
@ -485,3 +607,26 @@ Z:F,60/60
T:*=0.199 T:*=0.199
Z:G,60/60 Z:G,60/60
T:*=0.259 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) * ISDN accounting for isdn4linux. (Utilities)
* *
@ -19,6 +19,19 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
* $Log: tools.c,v $ * $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 * Revision 1.21 1999/03/20 16:55:22 akool
* isdnlog 3.09 : support for all Internet-by-call numbers * 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); case 'C' : p = itoa(call[chan].cref, p, 10, 0);
break; break;
case 'B' : p = itoa(chan, p, 10, 0); case 'B' : p = itoa(call[chan].channel, p, 10, 0);
break; break;
case 'A' : s = sx; 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. * ISDN accounting for isdn4linux.
* *
@ -20,6 +20,19 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
* $Log: tools.h,v $ * $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 * Revision 1.33 1999/03/24 19:39:06 akool
* - isdnlog Version 3.10 * - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/ * - moved "sondernnummern.c" from isdnlog/ to tools/
@ -963,7 +976,7 @@ _EXTERN char *qmsg(int type, int version, int val);
_EXTERN char *Myname; _EXTERN char *Myname;
_EXTERN void initTarife(char *msg); _EXTERN void initTarife(char *msg);
_EXTERN void exitTarife(void); _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 void price(int chan, char *hint, int viarep);
_EXTERN char *realProvidername(int prefix); _EXTERN char *realProvidername(int prefix);
_EXTERN void preparecint(int chan, char *msg, char *hint, int viarep); _EXTERN void preparecint(int chan, char *msg, char *hint, int viarep);