isdnlog-4.38

- isdnlog now uses ioctl(IIOCNETGPN) to associate phone numbers, interfaces
   and slots in "/dev/isdninfo".
   This requires a Linux-Kernel 2.2.12 or better.
   Support for older Kernel's are implemented.
   If IIOCNETGPN is available, the entries "INTERFACE = xxx" in
   "/etc/isdn/isdn.conf" are obsolete.
 - added 01013:Tele2 totally Freecall on 12. and 13. August 2000
 - resolved *any* warning's from "rate-de.dat" (once more ...)
 - Patch from oliver@escape.de (Oliver Wellnitz) against
 	 "Ziffernwahl verschluckt Nummern"

   **Please "make clean" before using this version of isdnlog!!**
This commit is contained in:
akool 2000-08-06 13:06:52 +00:00
parent 5c99c0e3b7
commit 79607ee6e2
5 changed files with 233 additions and 78 deletions

View File

@ -1,4 +1,4 @@
## $Id: Makefile.in,v 1.176 2000/08/04 11:08:26 paul Exp $ ## $Id: Makefile.in,v 1.177 2000/08/06 13:06:52 akool Exp $
## ##
## ISDN accounting for isdn4linux. ## ISDN accounting for isdn4linux.
## ##
@ -19,6 +19,21 @@
## 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.177 2000/08/06 13:06:52 akool
## isdnlog-4.38
## - isdnlog now uses ioctl(IIOCNETGPN) to associate phone numbers, interfaces
## and slots in "/dev/isdninfo".
## This requires a Linux-Kernel 2.2.12 or better.
## Support for older Kernel's are implemented.
## If IIOCNETGPN is available, the entries "INTERFACE = xxx" in
## "/etc/isdn/isdn.conf" are obsolete.
## - added 01013:Tele2 totally Freecall on 12. and 13. August 2000
## - resolved *any* warning's from "rate-de.dat" (once more ...)
## - Patch from oliver@escape.de (Oliver Wellnitz) against
## "Ziffernwahl verschluckt Nummern"
##
## **Please "make clean" before using this version of isdnlog!!**
##
## Revision 1.176 2000/08/04 11:08:26 paul ## Revision 1.176 2000/08/04 11:08:26 paul
## Also remove *.gdbm in distclean target ## Also remove *.gdbm in distclean target
## ##
@ -1337,7 +1352,7 @@ SERVICEFILE = /etc/services
# DON'T EDIT BELOW THIS LINE # DON'T EDIT BELOW THIS LINE
###################################################################### ######################################################################
VERSION = 4.37 VERSION = 4.38
MANPAGES = isdnlog/callerid.conf.5 isdnlog/isdn.conf.5 \ MANPAGES = isdnlog/callerid.conf.5 isdnlog/isdn.conf.5 \
isdnlog/isdnformat.5 isdnlog/isdnlog.5 isdnlog/isdnlog.8 \ isdnlog/isdnformat.5 isdnlog/isdnlog.5 isdnlog/isdnlog.8 \

View File

@ -1,10 +1,10 @@
ISDNLOG - Version 4.37 - 27-July-2000 ISDNLOG - Version 4.38 - 04-Aug-2000
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-4.25 wurde ausgiebig mit Linux-2.0.38, Linux-2.2.14 sowie isdnlog-4.25 wurde ausgiebig mit Linux-2.0.38, Linux-2.2.16-SMP sowie
Linux-2.3.35 getestet. Linux-2.3.35 getestet.
@ -1183,9 +1183,14 @@ Lage ist, die Zone des Gegners zu ermitteln.
------------------------------ ------------------------------
Dieser Eintrag repraesentiert das IP-Interface, welches auf dieser Dieser Eintrag repraesentiert das IP-Interface, welches auf dieser
Nummer konfiguriert wurde, oder ein "-", falls dieser Nummer kein Rufnummer konfiguriert wurde, oder ein "-", falls dieser Nummer kein
IP-Interface zugeordnet wurde. IP-Interface zugeordnet wurde.
Diese Information wird fuer die "-hx" huptimeout Option benoetigt. Diese Information wird fuer die "-hx" huptimeout Option sowie
fuer die Anzeige des Durchsatzes (ibytes/obytes) benoetigt.
Ab Linux-2.2.12 sowie isdnlog-4.38 ist dieser Eintrag obsolete,
und kann daher ersatzlos entfallen, da isdnlog ab diesen Versionen das
Interface selbstst„ndig detektieren kann.
Beispiel: Beispiel:

View File

@ -1,4 +1,4 @@
/* $Id: processor.c,v 1.110 2000/08/01 20:31:30 akool Exp $ /* $Id: processor.c,v 1.111 2000/08/06 13:06:53 akool Exp $
* *
* ISDN accounting for isdn4linux. (log-module) * ISDN accounting for isdn4linux. (log-module)
* *
@ -19,6 +19,21 @@
* 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.111 2000/08/06 13:06:53 akool
* isdnlog-4.38
* - isdnlog now uses ioctl(IIOCNETGPN) to associate phone numbers, interfaces
* and slots in "/dev/isdninfo".
* This requires a Linux-Kernel 2.2.12 or better.
* Support for older Kernel's are implemented.
* If IIOCNETGPN is available, the entries "INTERFACE = xxx" in
* "/etc/isdn/isdn.conf" are obsolete.
* - added 01013:Tele2 totally Freecall on 12. and 13. August 2000
* - resolved *any* warning's from "rate-de.dat" (once more ...)
* - Patch from oliver@escape.de (Oliver Wellnitz) against
* "Ziffernwahl verschluckt Nummern"
*
* **Please "make clean" before using this version of isdnlog!!**
*
* Revision 1.110 2000/08/01 20:31:30 akool * Revision 1.110 2000/08/01 20:31:30 akool
* isdnlog-4.37 * isdnlog-4.37
* - removed "09978 Schoenthal Oberpfalz" from "zone-de.dtag.cdb". Entry was * - removed "09978 Schoenthal Oberpfalz" from "zone-de.dtag.cdb". Entry was
@ -1056,6 +1071,7 @@ static void processlcr(char *p);
static int HiSax = 0, hexSeen = 0, uid = UNKNOWN, lfd = 0; static int HiSax = 0, hexSeen = 0, uid = UNKNOWN, lfd = 0;
static char *asnp, *asnm = NULL; static char *asnp, *asnm = NULL;
static int chanused[2] = { 0, 0 }; static int chanused[2] = { 0, 0 };
static int IIOCNETGPNavailable = -1; /* -1 = unknown, 0 = no, 1 = yes */
#ifdef Q931 #ifdef Q931
#define Q931dmp q931dmp #define Q931dmp q931dmp
@ -1064,6 +1080,9 @@ static int chanused[2] = { 0, 0 };
#endif #endif
#define INTERFACE ((IIOCNETGPNavailable == 1) ? call[chan].interface : known[call[chan].confentry[OTHER]]->interface)
static void Q931dump(int mode, int val, char *msg, int version) static void Q931dump(int mode, int val, char *msg, int version)
{ {
#ifdef Q931 #ifdef Q931
@ -1663,7 +1682,7 @@ static void emergencyStop(int chan, int strength)
if (strength == 1) { if (strength == 1) {
if (c == -1) if (c == -1)
strength++; strength++;
else if (*known[c]->interface < '@') else if (*INTERFACE < '@')
strength++; strength++;
} /* if */ } /* if */
@ -1674,7 +1693,7 @@ static void emergencyStop(int chan, int strength)
strength++; strength++;
switch (strength) { switch (strength) {
case 1 : cc = replay ? 0 : ioctl(sockets[ISDNCTRL].descriptor, IIOCNETHUP, known[c]->interface); case 1 : cc = replay ? 0 : ioctl(sockets[ISDNCTRL].descriptor, IIOCNETHUP, INTERFACE);
if (cc < 0) if (cc < 0)
p = "failed"; p = "failed";
@ -1684,7 +1703,7 @@ static void emergencyStop(int chan, int strength)
p = "hung up"; p = "hung up";
sprintf(msg, "EMERGENCY-STOP#%d: no traffic since %d EH: hangup %s = %s\007\007", sprintf(msg, "EMERGENCY-STOP#%d: no traffic since %d EH: hangup %s = %s\007\007",
strength, call[chan].aoce - call[chan].traffic, known[c]->interface, p); strength, call[chan].aoce - call[chan].traffic, INTERFACE, p);
break; break;
case 2 : (void)detach(); case 2 : (void)detach();
@ -1896,7 +1915,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
sprintf(s, "%s (%s)", qmsg(TYPE_CAUSE, version, call[chan].cause), py); sprintf(s, "%s (%s)", qmsg(TYPE_CAUSE, version, call[chan].cause), py);
if (tei == call[chan].tei) if (tei == call[chan].tei)
info(chan, PRT_SHOWCAUSE, STATE_CAUSE, s); info(chan, PRT_SHOWCAUSE, STATE_CAUSE, s);
else if (other) { else if (other) {
auto char sx[256]; auto char sx[256];
@ -2119,7 +2138,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
/* seit 2 Gebuehrentakten kein Traffic mehr! */ /* seit 2 Gebuehrentakten kein Traffic mehr! */
if (!replay && watchdog && ((c = call[chan].confentry[OTHER]) > -1)) { if (!replay && watchdog && ((c = call[chan].confentry[OTHER]) > -1)) {
if ((type == FACILITY) && (version == VERSION_EDSS1) && expensive(call[chan].bchan) && (*known[c]->interface > '@')) { if ((type == FACILITY) && (version == VERSION_EDSS1) && expensive(call[chan].bchan) && (*INTERFACE > '@')) {
if (call[chan].aoce > call[chan].traffic + watchdog + 2) if (call[chan].aoce > call[chan].traffic + watchdog + 2)
emergencyStop(chan, 4); emergencyStop(chan, 4);
else if (call[chan].aoce > call[chan].traffic + watchdog + 1) else if (call[chan].aoce > call[chan].traffic + watchdog + 1)
@ -3203,10 +3222,10 @@ static void huptime(int chan, int setup)
if (replay) if (replay)
net_dv = 4; net_dv = 4;
if (hupctrl && (c != UNKNOWN) && (*known[c]->interface > '@') /* && expensive(call[chan].bchan) */) { if (hupctrl && (c != UNKNOWN) && (*INTERFACE > '@') /* && expensive(call[chan].bchan) */) {
memset(&cfg, 0, sizeof(cfg)); /* clear in case of older kernel */ memset(&cfg, 0, sizeof(cfg)); /* clear in case of older kernel */
strcpy(cfg.name, known[c]->interface); strcpy(cfg.name, INTERFACE);
if (replay || (ioctl(sockets[ISDNCTRL].descriptor, IIOCNETGCF, &cfg) >= 0)) { if (replay || (ioctl(sockets[ISDNCTRL].descriptor, IIOCNETGCF, &cfg) >= 0)) {
#if NET_DV >= NETDV_CHARGEINT #if NET_DV >= NETDV_CHARGEINT
@ -3216,7 +3235,7 @@ static void huptime(int chan, int setup)
call[chan].huptimeout = oldhuptimeout = cfg.onhtime; call[chan].huptimeout = oldhuptimeout = cfg.onhtime;
if (!oldhuptimeout && !replay) { if (!oldhuptimeout && !replay) {
sprintf(sx, "HUPTIMEOUT %s is *disabled* - unchanged", known[c]->interface); sprintf(sx, "HUPTIMEOUT %s is *disabled* - unchanged", INTERFACE);
info(chan, PRT_SHOWNUMBERS, STATE_HUPTIMEOUT, sx); info(chan, PRT_SHOWNUMBERS, STATE_HUPTIMEOUT, sx);
return; return;
} /* if */ } /* if */
@ -3265,22 +3284,22 @@ static void huptime(int chan, int setup)
if (replay || (ioctl(sockets[ISDNCTRL].descriptor, IIOCNETSCF, &cfg) >= 0)) { if (replay || (ioctl(sockets[ISDNCTRL].descriptor, IIOCNETSCF, &cfg) >= 0)) {
sprintf(sx, "CHARGEINT %s %d (was %d)%s%s", sprintf(sx, "CHARGEINT %s %d (was %d)%s%s",
known[c]->interface, newchargeint, oldchargeint, (*why ? " - " : ""), why); INTERFACE, newchargeint, oldchargeint, (*why ? " - " : ""), why);
info(chan, PRT_INFO, STATE_HUPTIMEOUT, sx); info(chan, PRT_INFO, STATE_HUPTIMEOUT, sx);
sprintf(sx, "HUPTIMEOUT %s %d (was %d)", sprintf(sx, "HUPTIMEOUT %s %d (was %d)",
known[c]->interface, newhuptimeout, oldhuptimeout); INTERFACE, newhuptimeout, oldhuptimeout);
info(chan, PRT_INFO, STATE_HUPTIMEOUT, sx); info(chan, PRT_INFO, STATE_HUPTIMEOUT, sx);
} /* if */ } /* if */
} }
else { else {
sprintf(sx, "CHARGEINT %s still %d%s%s", known[c]->interface, sprintf(sx, "CHARGEINT %s still %d%s%s", INTERFACE,
oldchargeint, (*why ? " - " : ""), why); oldchargeint, (*why ? " - " : ""), why);
info(chan, PRT_SHOWNUMBERS, STATE_HUPTIMEOUT, sx); info(chan, PRT_SHOWNUMBERS, STATE_HUPTIMEOUT, sx);
sprintf(sx, "HUPTIMEOUT %s still %d", known[c]->interface, oldhuptimeout); sprintf(sx, "HUPTIMEOUT %s still %d", INTERFACE, oldhuptimeout);
info(chan, PRT_SHOWNUMBERS, STATE_HUPTIMEOUT, sx); info(chan, PRT_SHOWNUMBERS, STATE_HUPTIMEOUT, sx);
} /* else */ } /* else */
} /* if */ } /* if */
@ -3315,7 +3334,78 @@ static void oops(int where)
sprintf(s, "WARNING \"hisaxctrl %s 1 4\" called! (#%d)", ifo[0].id, where); sprintf(s, "WARNING \"hisaxctrl %s 1 4\" called! (#%d)", ifo[0].id, where);
info(0, PRT_ERR, STATE_AOCD, s); info(0, PRT_ERR, STATE_AOCD, s);
} /* if */ } /* oops */
static int findinterface()
{
#ifdef IIOCNETGPN
register char *p;
auto FILE *iflst;
auto char s[255], name[10], sx[BUFSIZ];
auto isdn_net_ioctl_phone phone;
auto int rc, chan, l, l1, l2, lmin, lmax, ldiv, match;
if ((iflst = fopen("/proc/net/dev", "r")) == NULL)
return(-1);
while (fgets(s, sizeof(s), iflst)) {
if ((p = strchr(s, ':'))) {
*p = 0;
sscanf(s, "%s", name);
memset(&phone, 0, sizeof(phone));
strncpy(phone.name, name, sizeof(phone.name));
rc = ioctl(sockets[ISDNINFO].descriptor, IIOCNETGPN, &phone);
if (!rc) { /* 'name' connected from/to 'phone.phone' */
l1 = strlen(phone.phone);
for (chan = 0; chan < MAXCHAN; chan++) {
l2 = strlen(call[chan].onum[OTHER]);
if (l2) {
lmin = min(l1, l2);
lmax = max(l1, l2);
ldiv = lmax - lmin;
if (lmin == lmax)
match = !strcmp(phone.phone, call[chan].onum[OTHER]);
else if (l1 > l2)
match = !strcmp(phone.phone + ldiv, call[chan].onum[OTHER]);
else
match = !strcmp(phone.phone, call[chan].onum[OTHER] + ldiv);
if (match) {
strcpy(call[chan].interface, name);
strcpy(call[chan].fnum, phone.phone); /* "fnum" -> Fritz-Num. Rufnummer, wie Fritz (Elfert) alias Link-Level sie intern haelt (also z.b. evtl. mit vorlaufendem "R") */
sprintf(sx, "INTERFACE %s %s %s", call[chan].interface,
(call[chan].dialin ? "called by" : "calling"),
call[chan].fnum);
info(chan, PRT_SHOWNUMBERS, STATE_HUPTIMEOUT, sx);
break;
} /* if */
} /* if */
} /* for */
}
else if (errno == EINVAL) {
info(chan, PRT_SHOWNUMBERS, STATE_HUPTIMEOUT, "Sorry, IIOCNETGPN not available in your kernel (2.2.12 or higher is required)");
return(0);
} /* else */
} /* if */
} /* while */
fclose(iflst);
return(1);
#else
return(0);
#endif
} /* findinterface */
static void processbytes() static void processbytes()
@ -3488,13 +3578,21 @@ static void processinfo(char *s)
break; break;
if (!Q931dmp) { if (!Q931dmp) {
print_msg(PRT_NORMAL, "(ISDN subsystem with ISDN_MAX_CHANNELS > 16 detected - %d active channels, %d MSN/SI entries)\n", chans, mymsns); print_msg(PRT_NORMAL, "(ISDN subsystem with ISDN_MAX_CHANNELS > 16 detected, ioctl(IIOCNETGPN) is %savailable)\n",
IIOCNETGPNavailable = findinterface() ? "" : "un");
print_msg(PRT_NORMAL, "isdn.conf:%d active channels, %d MSN/SI entries\n", chans, mymsns);
if (dual) { if (dual) {
if (hfcdual) if (hfcdual)
print_msg(PRT_NORMAL, "(watching \"%s\" as HFC/echo mode)\n", isdnctrl); print_msg(PRT_NORMAL, "(watching \"%s\" as HFC/echo mode)\n", isdnctrl);
else else
print_msg(PRT_NORMAL, "(watching \"%s\" and \"%s\")\n", isdnctrl, isdnctrl2); print_msg(PRT_NORMAL, "(watching \"%s\" and \"%s\")\n", isdnctrl, isdnctrl2);
} /* if */ } /* if */
if (IIOCNETGPNavailable)
print_msg(PRT_NORMAL, "Everything is fine, isdnlog-%s is running in full featured mode.\n", VERSION);
else
print_msg(PRT_NORMAL, "HINT: Please upgrade to Linux-2.2.12 or higher for all features of isdnlog-%s\n", VERSION);
} /* if */ } /* if */
/* /*
@ -3575,7 +3673,7 @@ static void processinfo(char *s)
#endif #endif
for (chan = 0; chan < MAXCHAN; chan++) for (chan = 0; chan < MAXCHAN; chan++)
if (memcmp(ifo[j].n, "???", 3) && !strcmp(ifo[j].n, call[chan].onum[OTHER])) { if (memcmp(ifo[j].n, "???", 3) && !strcmp(ifo[j].n, (IIOCNETGPNavailable == 1) ? call[chan].fnum : call[chan].onum[OTHER])) {
call[chan].bchan = j; call[chan].bchan = j;
strcpy(call[chan].id, ifo[j].id); strcpy(call[chan].id, ifo[j].id);
@ -3686,7 +3784,8 @@ void clearchan(int chan, int total)
else else
for (i = 0; i < MAXMSNS; i++) for (i = 0; i < MAXMSNS; i++)
*call[chan].onum[i] = *call[chan].onum[i] =
*call[chan].num[i] = 0; *call[chan].num[i] =
*call[chan].interface = 0;
call[chan].bchan = -1; call[chan].bchan = -1;
@ -4082,7 +4181,7 @@ static void processctrl(int card, char *s)
if (!memcmp(ps, "D2", 2)) { /* AVMB1 */ if (!memcmp(ps, "D2", 2)) { /* AVMB1 */
if (firsttime) { if (firsttime) {
firsttime = 0; firsttime = 0;
print_msg (PRT_NORMAL, "(AVM B1 driver detected (D2))\n"); print_msg (PRT_NORMAL, "(AVM B1 driver detected (D2))");
} /* if */ } /* if */
memcpy(ps, "HEX: ", 5); memcpy(ps, "HEX: ", 5);
} /* if */ } /* if */
@ -4090,7 +4189,7 @@ static void processctrl(int card, char *s)
if (!memcmp(ps, "DTRC:", 5)) { /* Eicon Driver */ if (!memcmp(ps, "DTRC:", 5)) { /* Eicon Driver */
if (firsttime) { if (firsttime) {
firsttime = 0; firsttime = 0;
print_msg (PRT_NORMAL, "(Eicon active driver detected)\n"); print_msg (PRT_NORMAL, "(Eicon active driver detected)");
} /* if */ } /* if */
memcpy(ps, "HEX: ", 5); memcpy(ps, "HEX: ", 5);
} /* if */ } /* if */
@ -4104,7 +4203,7 @@ static void processctrl(int card, char *s)
firsttime = 0; firsttime = 0;
if (!Q931dmp) if (!Q931dmp)
print_msg(PRT_NORMAL, "(HiSax driver detected)\n"); print_msg(PRT_NORMAL, "(HiSax driver detected)");
HiSax = 1; HiSax = 1;
strcpy(last, s); strcpy(last, s);
@ -4259,7 +4358,7 @@ static void processctrl(int card, char *s)
if (firsttime) { if (firsttime) {
firsttime = 0; firsttime = 0;
print_msg(PRT_NORMAL, "(AVM B1 driver detected (D3))\n"); print_msg(PRT_NORMAL, "(AVM B1 driver detected (D3))");
} /* if */ } /* if */
if (*(ps + 2) == '<') /* this is our "direction flag" */ if (*(ps + 2) == '<') /* this is our "direction flag" */
@ -4470,11 +4569,13 @@ static void processctrl(int card, char *s)
chan = call[chan].channel - 1; chan = call[chan].channel - 1;
/* nicht --channel, channel muss unveraendert bleiben! */ if (!chanused[chan]) {
memcpy((char *)&call[chan], (char *)&call[5], sizeof(CALL)); /* nicht --channel, channel muss unveraendert bleiben! */
Change_Channel(5, chan); memcpy((char *)&call[chan], (char *)&call[5], sizeof(CALL));
addlist(chan, type, 1); Change_Channel(5, chan);
clearchan(5, 1); addlist(chan, type, 1);
clearchan(5, 1);
} /* if */
} }
else else
print_msg(PRT_DEBUG_BUGS, " DEBUG> %s: OOPS, C_PROC/S_ACK ohne channel? tei %d\n", print_msg(PRT_DEBUG_BUGS, " DEBUG> %s: OOPS, C_PROC/S_ACK ohne channel? tei %d\n",
@ -4625,7 +4726,7 @@ static void processctrl(int card, char *s)
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s1); info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s1);
if (((known[c]->charge + call[chan].pay) >= chargemax) && (*known[c]->interface > '@')) if (((known[c]->charge + call[chan].pay) >= chargemax) && (*INTERFACE > '@'))
chargemaxAction(chan, (known[c]->charge + call[chan].pay - chargemax)); chargemaxAction(chan, (known[c]->charge + call[chan].pay - chargemax));
} /* if */ } /* if */
@ -4648,6 +4749,9 @@ static void processctrl(int card, char *s)
} /* if */ } /* if */
} /* if */ } /* if */
if (IIOCNETGPNavailable)
IIOCNETGPNavailable = findinterface();
if (sound) if (sound)
ringer(chan, RING_CONNECT); ringer(chan, RING_CONNECT);
@ -5463,7 +5567,7 @@ void processcint()
info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s1); info(chan, PRT_SHOWCHARGEMAX, STATE_AOCD, s1);
if (((known[c]->charge + call[chan].pay) >= chargemax) && (*known[c]->interface > '@')) if (((known[c]->charge + call[chan].pay) >= chargemax) && (*INTERFACE > '@'))
chargemaxAction(chan, (known[c]->charge + call[chan].pay - chargemax)); chargemaxAction(chan, (known[c]->charge + call[chan].pay - chargemax));
} /* if */ } /* if */
} /* if */ } /* if */

View File

@ -1,4 +1,4 @@
V:1.10-Germany [01-Aug-2000 21:46:58] V:1.10-Germany [06-Aug-2000 15:01:56]
# Währungsformat # Währungsformat
U:%.3f DM U:%.3f DM
@ -8,7 +8,7 @@ U:%.3f DM
# #
# (C) Copyright 1999, 2000 by Andreas Kool (akool@isdn4linux.de) # (C) Copyright 1999, 2000 by Andreas Kool (akool@isdn4linux.de)
# #
# $Id: rate-de.dat,v 1.103 2000/08/01 20:31:29 akool Exp $ # $Id: rate-de.dat,v 1.104 2000/08/06 13:06:52 akool Exp $
# #
# #
# Das "A:" Tag muß folgendermaßen gefüllt werden: # Das "A:" Tag muß folgendermaßen gefüllt werden:
@ -205,6 +205,7 @@ N:0192361 # L
N:01924924 # Internet Private CbC Telepassport # 0102401924924 (User:beliebig: pw:beliebig) N:01924924 # Internet Private CbC Telepassport # 0102401924924 (User:beliebig: pw:beliebig)
N:019251 # Talknet (Talkline) # 01050019251 (User:talknet: pw:talknet) N:019251 # Talknet (Talkline) # 01050019251 (User:talknet: pw:talknet)
N:0192658 # MSN Easysurfer (Worldcom/UUnet) # 0192658 (User:beliebig; pw:beliebig) N:0192658 # MSN Easysurfer (Worldcom/UUnet) # 0192658 (User:beliebig; pw:beliebig)
N:0192666120# MDS-Online # 010750192666120(User:mds; pw:online)
N:01928111 # comsign AG surfsolution # 0101901928111 (User:beliebig; pw:beliebig) N:01928111 # comsign AG surfsolution # 0101901928111 (User:beliebig; pw:beliebig)
N:01928120 # eXpress-Net eXpress-Dial # 0101901928120 (User:beliebig; pw:beliebig) N:01928120 # eXpress-Net eXpress-Dial # 0101901928120 (User:beliebig; pw:beliebig)
N:01928121 # netweaver netweaver # 0101901928121 (User:beliebig; pw:beliebig) N:01928121 # netweaver netweaver # 0101901928121 (User:beliebig; pw:beliebig)
@ -3404,16 +3405,15 @@ A:+49
T:[11.06.2000-12.06.2000]*/*=0 Pfingstangebot T:[11.06.2000-12.06.2000]*/*=0 Pfingstangebot
T:[02.07.2000-03.07.2000]*/*=0 Sonderangebot T:[02.07.2000-03.07.2000]*/*=0 Sonderangebot
T:[16.07.2000-17.07.2000]*/*=0 Sonderangebot T:[16.07.2000-17.07.2000]*/*=0 Sonderangebot
T:W/06-18=0.06/60 T:[12.08.2000-14.08.2000]*/*=0 Sonderangebot
T:W/18-06=0.04/60 T:[-11.08.2000]W/06-18=0.06/60
T:E,H/*=0.04/60 T:[-11.08.2000]W/18-06=0.04/60
T:[-11.08.2000]E,H/*=0.04/60
T:[14.08.2000-]W/06-18=0.06/60
T:[14.08.2000-]W/18-06=0.04/60
T:[14.08.2000-]E,H/*=0.04/60
Z:10 Mobilfunknetz Z:10 Mobilfunknetz
A:_DEMCM A:_DEMF
A:_DEMC
A:_DEMD1
A:_DEMD2
A:_DEME1
A:_DEME2
T:*/*=0.38/60 T:*/*=0.38/60
Z:200 Euro 1 / USA, Kanada # gilt *NICHT* für Mobilfunknetze in diese Länder! Z:200 Euro 1 / USA, Kanada # gilt *NICHT* für Mobilfunknetze in diese Länder!
A:US,CA,NL,BE,FR,ES A:US,CA,NL,BE,FR,ES
@ -3487,16 +3487,18 @@ A:112
T:*/*=0 T:*/*=0
Z:1-4 National Z:1-4 National
A:+49 A:+49
T:W/06-18=0.06(60)/1 T:[11.06.2000-12.06.2000]*/*=0 Pfingstangebot
T:W/18-06=0.04(60)/1 T:[02.07.2000-03.07.2000]*/*=0 Sonderangebot
T:E,H/*=0.04(60)/1 T:[16.07.2000-17.07.2000]*/*=0 Sonderangebot
T:[12.08.2000-14.08.2000]*/*=0 Sonderangebot
T:[-11.08.2000]W/06-18=0.06(60)/1
T:[-11.08.2000]W/18-06=0.04(60)/1
T:[-11.08.2000]E,H/*=0.04(60)/1
T:[14.08.2000-]W/06-18=0.06(60)/1
T:[14.08.2000-]W/18-06=0.04(60)/1
T:[14.08.2000-]E,H/*=0.04(60)/1
Z:10 Mobilfunknetz Z:10 Mobilfunknetz
A:_DEMCM A:_DEMF
A:_DEMC
A:_DEMD1
A:_DEMD2
A:_DEME1
A:_DEME2
T:*/*=0.38(60)/1 T:*/*=0.38(60)/1
Z:200 Euro 1 / USA, Kanada Z:200 Euro 1 / USA, Kanada
A:US,CA,NL,BE,FR,ES A:US,CA,NL,BE,FR,ES
@ -11071,7 +11073,7 @@ A:BB,BO,PY
T:*/*=1.19(60)/1 T:*/*=1.19(60)/1
Z:238 International 39 Z:238 International 39
A:GQ,BZ,BJ,BF,HN,JO,CM A:GQ,BZ,BJ,BF,HN,JO,CM
A:CV,CG,QA,_LBMF A:CV,QA,_LBMF
A:MG,MV,ML,FM,MN,OM,_PAMF A:MG,MV,ML,FM,MN,OM,_PAMF
A:_PEMF,LK,SH,SY,TT A:_PEMF,LK,SH,SY,TT
T:*/*=1.29(60)/1 T:*/*=1.29(60)/1
@ -13774,9 +13776,10 @@ T:*/*=0.319/60
Z:382 Senegal Z:382 Senegal
A:SN A:SN
T:*/*=1.989/60 T:*/*=1.989/60
Z:383 Serbien # FIXME: Bug in "country-de.dat", Dublette
A:YU # Z:383 Serbien
T:*/*=1.049/60 # A:Serbien
# T:*/*=1.049/60
Z:384 Seychellen Z:384 Seychellen
A:SC A:SC
T:*/*=2.279/60 T:*/*=2.279/60
@ -15275,9 +15278,10 @@ T:*/*=0.319/60
Z:382 Senegal Z:382 Senegal
A:SN A:SN
T:*/*=1.989/60 T:*/*=1.989/60
Z:383 Serbien # FIXME: Bug in "country-de.dat", Dublette
A:YU # Z:383 Serbien
T:*/*=1.049/60 # A:Serbien
# T:*/*=1.049/60
Z:384 Seychellen Z:384 Seychellen
A:SC A:SC
T:*/*=2.279/60 T:*/*=2.279/60
@ -16024,9 +16028,10 @@ T:*/*=0.319(60)/1
Z:382 Senegal Z:382 Senegal
A:SN A:SN
T:*/*=1.989(60)/1 T:*/*=1.989(60)/1
Z:383 Serbien # FIXME: Bug in "country-de.dat", Dublette
A:YU # Z:383 Serbien
T:*/*=1.049(60)/1 # A:Serbien
# T:*/*=1.049(60)/1
Z:384 Seychellen Z:384 Seychellen
A:SC A:SC
T:*/*=2.279(60)/1 T:*/*=2.279(60)/1
@ -16769,9 +16774,10 @@ T:*/*=0.319/60
Z:382 Senegal Z:382 Senegal
A:SN A:SN
T:*/*=1.989/60 T:*/*=1.989/60
Z:383 Serbien # FIXME: Bug in "country-de.dat", Dublette
A:YU # Z:383 Serbien
T:*/*=1.049/60 # A:Serbien
# T:*/*=1.049/60
Z:384 Seychellen Z:384 Seychellen
A:SC A:SC
T:*/*=2.279/60 T:*/*=2.279/60
@ -17516,9 +17522,10 @@ T:*/*=0.319(60)/1
Z:382 Senegal Z:382 Senegal
A:SN A:SN
T:*/*=1.989(60)/1 T:*/*=1.989(60)/1
Z:383 Serbien # FIXME: Bug in "country-de.dat", Dublette
A:YU # Z:383 Serbien
T:*/*=1.049(60)/1 # A:Serbien
# T:*/*=1.049(60)/1
Z:384 Seychellen Z:384 Seychellen
A:SC A:SC
T:*/*=2.279(60)/1 T:*/*=2.279(60)/1
@ -18263,9 +18270,10 @@ T:*/*=0.319/60
Z:382 Senegal Z:382 Senegal
A:SN A:SN
T:*/*=1.989/60 T:*/*=1.989/60
Z:383 Serbien # FIXME: Bug in "country-de.dat", Dublette
A:YU # Z:383 Serbien
T:*/*=1.049/60 # A:Serbien
# T:*/*=1.049/60
Z:384 Seychellen Z:384 Seychellen
A:SC A:SC
T:*/*=2.279/60 T:*/*=2.279/60
@ -19011,9 +19019,10 @@ T:*/*=0.319(60)/1
Z:382 Senegal Z:382 Senegal
A:SN A:SN
T:*/*=1.989(60)/1 T:*/*=1.989(60)/1
Z:383 Serbien # FIXME: Bug in "country-de.dat", Dublette
A:YU # Z:383 Serbien
T:*/*=1.049(60)/1 # A:Serbien
# T:*/*=1.049(60)/1
Z:384 Seychellen Z:384 Seychellen
A:SC A:SC
T:*/*=2.279(60)/1 T:*/*=2.279(60)/1
@ -21890,7 +21899,7 @@ Z:2-4 Inland
A:DE A:DE
T:W/08-18=0.099(60)/1 Hauptzeit T:W/08-18=0.099(60)/1 Hauptzeit
T:W/18-08=0.079(60)/1 Nebenzeit T:W/18-08=0.079(60)/1 Nebenzeit
T:E,H/*=0.0079(60)/1 Wochenende T:E,H/*=0.079(60)/1 Wochenende
Z:5 Mobile Talkline Z:5 Mobile Talkline
T:*/*=0.42(60)/1 T:*/*=0.42(60)/1
Z:6 Data (national) Z:6 Data (national)
@ -23705,6 +23714,11 @@ T:E/*=0.045/60
#T:W/8-18=0.045/60 #T:W/8-18=0.045/60
#T:W/18-8=0.035/60 #T:W/18-8=0.035/60
#T:E/*=0.035/60 #T:E/*=0.035/60
Z:104 MDS-Online
A:0192666120
C:Homepage: http://www.mds-online.net/
S:Internet by Call
T:*/*=0.025/60
Z:200 Europa Z:200 Europa
A:AT,CH A:AT,CH
T:*/*=0.36/60 T:*/*=0.36/60

View File

@ -1,4 +1,4 @@
/* $Id: tools.h,v 1.55 2000/06/29 17:38:28 akool Exp $ /* $Id: tools.h,v 1.56 2000/08/06 13:06:53 akool Exp $
* *
* ISDN accounting for isdn4linux. * ISDN accounting for isdn4linux.
* *
@ -20,6 +20,21 @@
* 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.56 2000/08/06 13:06:53 akool
* isdnlog-4.38
* - isdnlog now uses ioctl(IIOCNETGPN) to associate phone numbers, interfaces
* and slots in "/dev/isdninfo".
* This requires a Linux-Kernel 2.2.12 or better.
* Support for older Kernel's are implemented.
* If IIOCNETGPN is available, the entries "INTERFACE = xxx" in
* "/etc/isdn/isdn.conf" are obsolete.
* - added 01013:Tele2 totally Freecall on 12. and 13. August 2000
* - resolved *any* warning's from "rate-de.dat" (once more ...)
* - Patch from oliver@escape.de (Oliver Wellnitz) against
* "Ziffernwahl verschluckt Nummern"
*
* **Please "make clean" before using this version of isdnlog!!**
*
* Revision 1.55 2000/06/29 17:38:28 akool * Revision 1.55 2000/06/29 17:38:28 akool
* - Ported "imontty", "isdnctrl", "isdnlog", "xmonisdn" and "hisaxctrl" to * - Ported "imontty", "isdnctrl", "isdnlog", "xmonisdn" and "hisaxctrl" to
* Linux-2.4 "devfs" ("/dev/isdnctrl" -> "/dev/isdn/isdnctrl") * Linux-2.4 "devfs" ("/dev/isdnctrl" -> "/dev/isdn/isdnctrl")
@ -959,6 +974,8 @@ typedef struct {
int tz; int tz;
int tarifknown; int tarifknown;
RATE Rate; RATE Rate;
char interface[10];
char fnum[NUMSIZE];
} CALL; } CALL;
/****************************************************************************/ /****************************************************************************/