- 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:
parent
f06dd7862a
commit
94d4c12474
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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>"
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
|
@ -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 */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue