isdnlog Version 3.14

- "make install" now install's "rate-xx.dat", "rate.conf" and "ausland.dat"
- "holiday-xx.dat" Version 1.1
- many rate fixes (Thanks again to Michael Reinelt <reinelt@eunet.at>)
This commit is contained in:
Andreas Kool 1999-04-14 13:17:30 +00:00
parent 2be65b0e36
commit b45a4110b3
18 changed files with 1590 additions and 442 deletions

View File

@ -19,6 +19,30 @@
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
##
## $Log$
## Revision 1.66 1999/04/10 16:34:57 akool
## isdnlog Version 3.13
##
## WARNING: This is pre-ALPHA-dont-ever-use-Code!
## "tarif.dat" (aka "rate-xx.dat"): the next generation!
##
## You have to do the following to test this version:
## cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
## cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
## cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
##
## After that, add the following entries to your "/etc/isdn/isdn.conf" or
## "/etc/isdn/callerid.conf" file:
##
## [ISDNLOG]
## SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
## HOLIDAYS = /usr/lib/isdn/holiday-de.dat
## RATEFILE = /usr/lib/isdn/rate-de.dat
## RATECONF = /etc/isdn/rate.conf
##
## Please replace any "de" with your country code ("at", "ch", "nl")
##
## Good luck (Andreas Kool and Michael Reinelt)
##
## Revision 1.65 1999/04/03 12:46:39 akool
## - isdnlog Version 3.12
## - "%B" tag in ILABEL/OLABEL corrected
@ -511,7 +535,7 @@ SERVICEFILE = /etc/services
# DON'T EDIT BELOW THIS LINE
######################################################################
VERSION = 3.13
VERSION = 3.14
MANPAGES = isdnlog/callerid.conf.5 isdnlog/isdn.conf.5 \
isdnlog/isdnformat.5 isdnlog/isdnlog.5 isdnlog/isdnlog.8 \
@ -622,7 +646,8 @@ uninstall: rootperm
$(DESTDIR)$(MAN5DIR)/isdnlog$(MAN5EXT) \
$(DESTDIR)$(MAN5DIR)/isdnlog.users$(MAN5EXT) \
$(DESTDIR)$(DATADIR)/sonderrufnummern.dat \
$(DESTDIR)$(DATADIR)/tarif.dat \
$(DESTDIR)$(DATADIR)/ausland.dat \
$(DESTDIR)$(DATADIR)/rate-$(NATION).dat \
$(DESTDIR)$(DATADIR)/vorwahl.dat \
installdirs: rootperm
@ -658,13 +683,15 @@ install: all rootperm installdirs
$(INSTALL_DATA) isdnlog/isdnlog.5 $(DESTDIR)$(MAN5DIR)/isdnlog$(MAN5EXT)
$(INSTALL_DATA) isdnlog/isdnlog.users.5 $(DESTDIR)$(MAN5DIR)/isdnlog.users$(MAN5EXT)
$(INSTALL_DATA) sonderrufnummern.dat $(DESTDIR)$(DATADIR)
$(INSTALL_DATA) tarif.dat $(DESTDIR)$(DATADIR)
$(INSTALL_DATA) ausland.dat $(DESTDIR)$(DATADIR)
$(INSTALL_DATA) rate-$(NATION).dat $(DESTDIR)$(DATADIR)
$(INSTALL_DATA) holiday-$(NATION).dat $(DESTDIR)$(DATADIR)
$(INSTALL_DATA) vorwahl.dat.bz2 $(DESTDIR)$(DATADIR)
$(BUNZIP2) $(DESTDIR)$(DATADIR)/vorwahl.dat.bz2
@if [ ! -f "$(DESTDIR)$(I4LCONFDIR)/tarif.conf" ]; then \
$(INSTALL_DATA) samples/tarif.conf $(DESTDIR)$(I4LCONFDIR) ; \
@if [ ! -f "$(DESTDIR)$(I4LCONFDIR)/rate.conf" ]; then \
$(INSTALL_DATA) samples/rate.conf.$(NATION) $(DESTDIR)$(I4LCONFDIR)/rate.conf ; \
else \
$(INSTALL_DATA) samples/tarif.conf $(DESTDIR)$(I4LCONFDIR)/tarif.conf.new ; \
$(INSTALL_DATA) samples/rate.conf.$(NATION) $(DESTDIR)$(I4LCONFDIR)/rate.conf.new ; \
fi
@echo ""
@echo "Don't forget to create $(I4LCONFDIR)/$(USERFILE)"

566
isdnlog/ausland.dat Normal file
View File

@ -0,0 +1,566 @@
+995:Georgien
+994:Aserbaidschan
+993:Turkmenistan
+98:Iran
+977:Nepal
+976:Mongolei
+975:Bhutan
+974:Katar
+973:Bahrain
+972:Israel
+971:Ver. Arabische Emirate
+969:Jemen, (Arab. Republik)
+968:Oman
+967:Jemen, (Arab. Republik)
+966:Saudi Arabien
+965:Kuwait
+964:Irak
+963:Syrien
+962:Jordanien
+961:Libanon
+960:Malediven
+95:Myanmar, Burma
+94:Sri Lanka
+93:Afghanistan
+92:Pakistan
+91:Indien
+90:Türkei, Nordzypern
+886:China, (Taiwan)
+8817:Iridium 008817
+8816:Iridium 008816
+880:Bangladesch
+8748:Inmarsat A Daten/Fax
+87476:Inmarsat Mini-M
+8746:Inmarsat M
+8745:Inmarsat Aero
+87439:Inmarsat B HSD
+8743:Inmarsat B
+8741:Inmarsat A
+874:Atlantischer Ozean (West)
+8738:Inmarsat A Daten/Fax
+87376:Inmarsat Mini-M
+8736:Inmarsat M
+8735:Inmarsat Aero
+87339:Inmarsat B HSD
+8733:Inmarsat B
+8731:Inmarsat A
+873:Indischer Ozean
+8728:Inmarsat A Daten/Fax
+87276:Inmarsat Mini-M
+8726:Inmarsat M
+8725:Inmarsat Aero
+87239:Inmarsat B HSD
+8723:Inmarsat B
+8721:Inmarsat A
+872:Pazifischer Ozean
+8718:Inmarsat A Daten/Fax
+87176:Inmarsat Mini-M
+8716:Inmarsat M
+8715:Inmarsat Aero
+87139:Inmarsat B HSD
+8713:Inmarsat B
+8711:Inmarsat A
+871:Atlantischer Ozean (Ost)
+86:China, (Volksrepulik)
+856:Laos
+855:Kambodscha
+853:Macao
+852:Hongkong
+850:Korea (Dem. Republik), Nordkorea
+84:Vietnam
+82:Korea (Republik), Südkorea
+813:Tokyo
+81:Japan
+800:international freephone
+7902:Russische Föderat. (westl.)
+7901:Russische Föderat. (westl.)
+7863:Russische Föderat. (westl.)
+7862:Russische Föderat. (westl.)
+7861:Russische Föderat. (westl.)
+7820:Russische Föderat. (westl.)
+7817:Russische Föderat. (westl.)
+7816:Russische Föderat. (westl.)
+7815:Russische Föderat. (westl.)
+7814:Russische Föderat. (westl.)
+7812:St. Petersburg
+7811:Russische Föderat. (westl.)
+7590:Usbekistan
+7543:Russische Föderat. (westl.)
+7517:Russische Föderat. (westl.)
+751285:St. Petersburg
+75112:Russische Föderat. (westl.)
+75110:Russische Föderat. (westl.)
+7510:Russische Föderat. (westl.)
+7505:Russische Föderat. (westl.)
+7503:Russische Föderat. (westl.)
+7502:Russische Föderat. (westl.)
+7501:Russische Föderat. (westl.)
+7436:Usbekistan
+7433:Tadschikistan
+7431:Tadschikistan
+743:Usbekistan
+74:Tadschikistan
+7379:Tadschikistan
+7377:Tadschikistan
+7376:Tadschikistan
+7375:Usbekistan
+7374:Usbekistan
+7373:Usbekistan
+7372:Usbekistan
+7371:Usbekistan
+737:Usbekistan
+7369:Usbekistan
+7367:Usbekistan
+7366:Usbekistan
+7365:Usbekistan
+7364:Tadschikistan
+7362:Usbekistan
+7361:Usbekistan
+7339:Kirgistan
+7336:Kasachstan
+7335:Kirgistan
+7334:Kirgistan
+7333:Kirgistan
+7332:Kirgistan
+7331:Kirgistan
+7330:Kasachstan
+733:Kirgistan
+7329:Kasachstan
+7328:Kasachstan
+7327:Kasachstan
+7326:Kasachstan
+7325:Kasachstan
+7324:Kasachstan
+7323:Kasachstan
+7322:Kasachstan
+7321:Kasachstan
+7319:Kirgistan
+7318:Kasachstan
+7317:Kasachstan
+7316:Kasachstan
+7315:Kasachstan
+7314:Kasachstan
+7313:Kasachstan
+7312:Kasachstan
+7311:Kasachstan
+7310:Kasachstan
+73:Kasachstan
+7096:Russische Föderat. (westl.)
+7095:Moskau
+709246:Russische Föderat. (westl.)
+709245:Russische Föderat. (westl.)
+709244:Russische Föderat. (westl.)
+709243:Russische Föderat. (westl.)
+709237:Russische Föderat. (westl.)
+7091:Russische Föderat. (westl.)
+7087:Russische Föderat. (westl.)
+7086:Russische Föderat. (westl.)
+7085:Russische Föderat. (westl.)
+7084:Russische Föderat. (westl.)
+7083:Russische Föderat. (westl.)
+7082:Russische Föderat. (westl.)
+7081:Russische Föderat. (westl.)
+7074:Russische Föderat. (westl.)
+7073:Russische Föderat. (westl.)
+7072:Russische Föderat. (westl.)
+7071:Russische Föderat. (westl.)
+7011:Russische Föderat. (westl.)
+7:Russische Förderation (östl.)
+6998:Midway-Inseln
+6996:Chatham-Inseln
+6993:Wake Inseln
+692:Marshallinseln
+691:Mikronesien
+690:Tokelan
+689:Französisch-Polynesien
+688:Tuvalu
+687:Neukaledonien
+686:Kiribati
+685:Samoa (West)
+684:Amerikanisch-Samoa
+683:Niue-Inseln
+682:Cookinseln
+681:Wallis und Futuna
+680:Palau /Belau
+679:Fidschi
+678:Vanuatu
+677:Salomonen
+676:Tonga
+675:Papua-Neuguinea
+674:Nauru
+673:Brunei
+6724:Weihnachtsinsel (Australien)
+6723:Norfolkinseln (Australien)
+6722:Kokosinseln (Australien)
+6721:Antarktis
+671:Guam
+670:Marianen
+66:Thailand
+65:Singapur
+649:Pitcairn Inseln
+64:Neuseeland
+63:Philippinen
+62:Indonesien
+61:Australien
+60:Malaysia
+599:Niederl. Antillen
+598:Uruguay
+597:Suriname
+596:Martinique / Franz. Antillen
+595:Paraguay
+594:Französisch-Guayana
+593:Ecuador
+592:Guyana
+591:Bolivien
+590:Guadeloupe
+58:Venezuela
+57:Kolumbien
+56:Chile
+55:Brasilien
+54:Argentinien
+5321:Guantanamo
+53:Kuba
+52:Mexiko
+51:Peru
+509:Haiti
+508:St. Pierre und Miquelon
+507:Panama
+506:Costa Rica
+505:Nicaragua
+504:Honduras
+503:El Salvador
+502:Guatemala
+501:Belize
+500:Falklandinseln
+48:Polen
+47:Norwegen
+468:Stockholm
+46:Schweden
+4574:Sønderjylland
+4573:Sønderjylland
+45:Dänemark
+44181:London (Außenbezirk)
+44171:London (Innenbezirk)
+44131:Edinburgh
+44:Großbritannien, Insel Man, Kanalinseln
+431:Wien
+43:Österreich
+421:Slowakei, Slowakische Republik
+420:Tschechien, Tschechische Republik
+4175:Liechtenstein
+4122:Genf
+411:Zürich
+41:Schweiz
+40:Rumänien
+3906:Vatikanstadt / Rom
+3902:Mailand
+39:Italien
+389:Mazedonien
+387:Bosnien-Herzegowina
+386:Slowenien
+385:Kroatien
+381:Jugoslawien(Serbien/Montenegro)
+380:Ukraine
+378:San Marino
+377:Monaco
+376:Andorra
+375:Weissrussland, Belarus
+374:Armenien
+373:Moldavien, Moldau (Republik)
+372:Estland
+371:Lettland
+370:Litauen
+36:Ungarn
+359:Bulgarien
+358:Finnland
+357:Zypern
+356:Malta
+355:Albanien
+354:Island
+353:Irland
+352:Luxemburg
+35196:Azoren
+35195:Azoren
+35192:Azoren
+35191:Madeira
+351:Portugal
+350:Gibraltar
+34977:Tarragona
+34972:Gerona
+34971:Mallorca
+3496:Valencia
+3494:Bilbao
+3493:Barcelona
+34928:Kanarische Inseln
+34922:Teneriffa
+3491:Madrid
+34:Spanien
+331:Paris
+33:Frankreich
+323:Antwerpen
+322:Brüssel
+3216:Leuven
+32:Belgien
+3170:Den Haag
+3120:Amsterdam
+3110:Rotterdam
+31:Niederlande
+30:Griechenland
+299:Grönland
+298:Färöer, Faeröer
+297:Aruba
+291:Eritrea
+290:St. Helena
+2897:Tristan da Cunha
+27:Südafrika
+2697:Komoren
+269:Mayotte
+268:Swasiland
+267:Botsuana, Botswana
+266:Lesotho
+265:Malawi
+264:Namibia
+263:Simbabwe
+262:Reunion
+261:Madagaskar
+260:Sambia
+258:Mosambik
+257:Burundi
+256:Uganda
+255:Tansania, Sansiba
+254:Kenia
+253:Dschibuti
+252:Somalia
+251:Äthiopien
+250:Ruanda
+249:Sudan
+248:Seyschellen, Seychellen
+247:Ascension
+246:Diego Garcia
+245:Guinea-Bissau
+244:Angola
+243:Zaire
+242:Kongo
+241:Gabun
+240:Äquatorial-Guinea
+239:Sao Tome und Principe
+238:Cape Verde, Kap Verde
+237:Kamerun
+236:Zentralafrikanische Reublik
+235:Tschad
+234:Nigeria
+233:Ghana
+232:Sierra Leone
+231:Liberia
+230:Mauritius
+229:Benin
+228:Togo
+227:Niger
+226:Burkina Faso, Obervolta
+225:Elfenbeinküste, Cote de Ivoire
+224:Guinea
+223:Mali
+222:Mauretanien
+221:Senegal
+220:Gambia
+218:Libyen, Libysch-Arabische Dschamahirija
+216:Tunesien
+213:Algerien
+212:Marokko
+20:Ägypten
+1907:Alaska
+1905:Kanada
+1902:Kanada
+1876:Jamaika
+1869:St. Kitts und Nevis
+1868:Trinidad und Tobago
+1867:Kanada
+184:Dominikanische Republik
+1819:Kanada
+1809971:Dominikanische Republik
+1809970:Dominikanische Republik
+1809946:Turks- und Caicosinseln
+1809941:Turks- und Caicosinseln
+1809908:Dominikanische Republik
+1809818:Dominikanische Republik
+1809814:Dominikanische Republik
+1809813:Dominikanische Republik
+1809810:Dominikanische Republik
+1809808:Dominikanische Republik
+1809807:Dominikanische Republik
+1809806:Dominikanische Republik
+180977:Amerikanische Jungferninseln
+1809719:Amerikanische Jungferninseln
+1809715:Amerikanische Jungferninseln
+1809714:Amerikanische Jungferninseln
+1809713:Amerikanische Jungferninseln
+1809712:Amerikanische Jungferninseln
+1809710:Dominikanische Republik
+1809707:Dominikanische Republik
+1809701:Dominikanische Republik
+1809699:Dominikanische Republik
+1809698:Dominikanische Republik
+1809697:Dominikanische Republik
+1809696:Dominikanische Republik
+1809695:Dominikanische Republik
+1809694:Dominikanische Republik
+1809693:Amerikanische Jungferninseln
+1809692:Amerikanische Jungferninseln
+1809690:Amerikanische Jungferninseln
+1809689:Dominikanische Republik
+1809688:Dominikanische Republik
+1809687:Dominikanische Republik
+1809686:Dominikanische Republik
+1809685:Dominikanische Republik
+1809684:Dominikanische Republik
+1809683:Dominikanische Republik
+1809682:Dominikanische Republik
+1809681:Dominikanische Republik
+1809680:Trinidad und Tobago
+180967:Trinidad und Tobago
+180966:Trinidad und Tobago
+180965:Trinidad und Tobago
+180964:Trinidad und Tobago
+180963:Trinidad und Tobago
+180962:Trinidad und Tobago
+1809619:Trinidad und Tobago
+1809616:Dominikanische Republik
+1809615:Dominikanische Republik
+1809612:Dominikanische Republik
+1809611:Amerikanische Jungferninseln
+1809606:Dominikanische Republik
+1809604:Dominikanische Republik
+180959:Dominikanische Republik
+180958:Dominikanische Republik
+180957:Dominikanische Republik
+180956:Dominikanische Republik
+1809559:Dominikanische Republik
+1809558:Dominikanische Republik
+1809557:Dominikanische Republik
+1809556:Dominikanische Republik
+1809554:Dominikanische Republik
+1809553:Dominikanische Republik
+1809552:Dominikanische Republik
+1809551:Dominikanische Republik
+1809550:Dominikanische Republik
+180954:Dominikanische Republik
+180953:Dominikanische Republik
+180952:Dominikanische Republik
+1809519:Dominikanische Republik
+1809518:Dominikanische Republik
+1809513:Amerikanische Jungferninseln
+1809512:Dominikanische Republik
+1809508:Dominikanische Republik
+1809506:Dominikanische Republik
+1809504:Dominikanische Republik
+1809499:Britische Jungferninseln
+1809496:Britische Jungferninseln
+1809495:Britische Jungferninseln
+1809494:Britische Jungferninseln
+1809493:St. Vincent und Grenadinen
+1809490:St. Vincent und Grenadinen
+1809485:St. Vincent und Grenadinen
+1809481:Dominikanische Republik
+180947:Dominikanische Republik
+1809458:St. Vincent und Grenadinen
+1809457:St. Vincent und Grenadinen
+1809456:St. Vincent und Grenadinen
+1809449:Dominica
+1809448:Dominica
+1809447:Dominica
+1809446:Dominica
+1809445:Dominica
+1809444:Grenada
+1809443:Grenada
+1809442:Grenada
+1809441:Grenada
+1809440:Grenada
+1809414:Dominikanische Republik
+1809412:Dominikanische Republik
+1809408:Grenada
+1809407:Grenada
+1809350:Dominikanische Republik
+1809343:Dominikanische Republik
+1809320:Dominikanische Republik
+1809310:Dominikanische Republik
+1809301:Dominikanische Republik
+1809299:Dominikanische Republik
+1809295:Dominikanische Republik
+1809293:Dominikanische Republik
+1809292:Dominikanische Republik
+1809291:Dominikanische Republik
+1809290:Dominikanische Republik
+1809282:Dominikanische Republik
+1809281:Dominikanische Republik
+1809280:Dominikanische Republik
+1809279:Dominikanische Republik
+1809278:Dominikanische Republik
+1809277:Dominikanische Republik
+1809276:Dominikanische Republik
+1809275:Dominikanische Republik
+1809274:Dominikanische Republik
+1809273:Dominikanische Republik
+1809248:Dominikanische Republik
+1809247:Dominikanische Republik
+1809246:Dominikanische Republik
+1809245:Dominikanische Republik
+1809244:Dominikanische Republik
+1809243:Dominikanische Republik
+1809242:Dominikanische Republik
+1809241:Dominikanische Republik
+1809240:Dominikanische Republik
+1809239:Dominikanische Republik
+1809238:Dominikanische Republik
+1809237:Dominikanische Republik
+1809236:Dominikanische Republik
+1809235:Dominica
+1809234:Dominikanische Republik
+1809233:Dominikanische Republik
+1809231:Dominikanische Republik
+1809227:Dominikanische Republik
+1809226:Dominikanische Republik
+1809225:Dominikanische Republik
+1809224:Dominikanische Republik
+1809223:Dominikanische Republik
+1809222:Dominikanische Republik
+1809221:Dominikanische Republik
+1809220:Dominikanische Republik
+1809209:Dominikanische Republik
+1809208:Dominikanische Republik
+1809204:Dominikanische Republik
+1809188:Dominikanische Republik
+1809:Britische Jungferninseln
+1808:Hawaii
+1807:Kanada
+1787:Puerto Rico
+1784:St. Vincent und Grenadinen
+1767:Dominica
+1758:St. Lucia
+1709:Kanada
+1705:Kanada
+1671:Marianen (Guam)
+1670:Marianen (Saipan,Nord-)
+1664:Montserrat
+1649:Turks- und Caicosinseln
+1613:Kanada
+1604:Kanada
+1600:Kanada
+1519:Kanada
+1514:Kanada
+1506:Kanada
+1473:Grenada
+1441:Bermuda
+1418:Kanada
+1416:Kanada
+1403:Kanada
+1345:Kaimaninseln
+1340:Amerikanische Jungferninseln
+1306:Kanada
+1284:Britische Jungferninseln
+1268:Antigua und Barbuda
+1264:Anguilla
+1250:Kanada
+1246:Barbados
+1242:Bahamas
+1204:Kanada
+1:USA

View File

@ -1,4 +1,4 @@
V:1.0-Austria [15-Mar-1999]
V:1.1-Austria [12-Apr-1999]
W:1 Montag
W:2 Dienstag
@ -7,6 +7,7 @@ W:4 Donnerstag
W:5 Freitag
W:6 Samstag
W:7 Sonntag
W:W Werktag
W:E Wochenende
W:H Feiertag

View File

@ -1,4 +1,4 @@
V:1.0-Switzerland [15-Mar-1999]
V:1.1-Switzerland [12-Apr-1999]
W:1 Montag
W:2 Dienstag
@ -7,6 +7,7 @@ W:4 Donnerstag
W:5 Freitag
W:6 Samstag
W:7 Sonntag
W:W Werktag
W:E Wochenende
W:H Feiertag

View File

@ -1,4 +1,4 @@
V:1.0-Germany [15-Mar-1999]
V:1.1-Germany [12-Apr-1999]
W:1 Montag
W:2 Dienstag
@ -7,6 +7,7 @@ W:4 Donnerstag
W:5 Freitag
W:6 Samstag
W:7 Sonntag
W:W Werktag
W:E Wochenende
W:H Feiertag

View File

@ -1,4 +1,4 @@
V:0.9-Netherlands [15-Mar-1999]
V:0.91-Netherlands [12-Apr-1999]
# Fixme: these need to be translated
@ -9,6 +9,7 @@ W:4 Thursdag
W:5 Fridag
W:6 Saturdag
W:7 Sundag
W:W Workday
W:E Weekend
W:H Holiday

View File

@ -20,6 +20,30 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.18 1999/04/10 16:35:14 akool
* isdnlog Version 3.13
*
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
*
* You have to do the following to test this version:
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
*
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
* "/etc/isdn/callerid.conf" file:
*
* [ISDNLOG]
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
* RATEFILE = /usr/lib/isdn/rate-de.dat
* RATECONF = /etc/isdn/rate.conf
*
* Please replace any "de" with your country code ("at", "ch", "nl")
*
* Good luck (Andreas Kool and Michael Reinelt)
*
* Revision 1.17 1999/04/03 12:46:54 akool
* - isdnlog Version 3.12
* - "%B" tag in ILABEL/OLABEL corrected
@ -881,7 +905,7 @@ int main(int argc, char *argv[], char *envp[])
!memcmp(areacode, "0179", 4))
zone = E2_NETZ;
else
zone = GLOBALCALL;
zone = WELT_4;
}
else if (strlen(areacode) == 1) {
switch (toupper(*areacode)) {
@ -901,7 +925,6 @@ int main(int argc, char *argv[], char *envp[])
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);

View File

@ -19,6 +19,9 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.51 1999/04/10 17:19:51 akool
* fix a typo
*
* Revision 1.50 1999/04/10 16:35:35 akool
* isdnlog Version 3.13
*
@ -583,15 +586,9 @@
*
*/
/* Fixme: */
#define isInternetAccess(x,y) 0 /* Fixme: should be removed completely */
#if 0
^MICHI: Die folgenden 2 Variablen sind uns verlorengegangen ;-)
~MICHI
#endif
/* Fixme: should be removed completely */
#define prepreis 0.0
#define hintpreis 0.0
/* Fixme: */
#define _PROCESSOR_C_
@ -678,7 +675,7 @@ static char *location(int loc)
} /* location */
static void buildnumber(char *num, int oc3, int oc3a, char *result, int version, int *provider, int *sondernummer, int *intern, int *internetnumber, int dir, int who)
static void buildnumber(char *num, int oc3, int oc3a, char *result, int version, int *provider, int *sondernummer, int *intern, int *local, int dir, int who)
{
auto char n[BUFSIZ];
auto int partner = ((dir && (who == CALLING)) || (!dir && (who == CALLED)));
@ -686,7 +683,7 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
*sondernummer = UNKNOWN;
*intern = 0;
*internetnumber = 0;
*local = 0;
if (Q931dmp) {
register char *ps;
@ -830,20 +827,15 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
*intern = strlen(num) < interns0;
if (*provider == UNKNOWN)
if ((*provider == UNKNOWN) && !*intern)
*provider = preselect;
if (!dir && (who == CALLED) && !*intern) {
*internetnumber = isInternetAccess(*provider, num);
if (!*internetnumber) {
*sondernummer = is_sondernummer(num, *provider);
if (*sondernummer == UNKNOWN)
/* Fixme: DTAG is specific to Germany */
*sondernummer = is_sondernummer(num, DTAG); /* try with DTAG, these provider must support them all (i think) */
} /* if */
*sondernummer = is_sondernummer(num, *provider);
if (*sondernummer == UNKNOWN)
/* Fixme: DTAG is specific to Germany */
*sondernummer = is_sondernummer(num, DTAG); /* try with DTAG, these provider must support them all (i think) */
} /* if */
if (Q931dmp) {
@ -855,29 +847,26 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
Q931dump(TYPE_STRING, -1, s, version);
} /* if */
if (*internetnumber) {
sprintf(s, "(Internet access number %s)", num);
Q931dump(TYPE_STRING, -1, s, version);
} /* if */
if (*intern)
Q931dump(TYPE_STRING, -1, "(Interne Nummer)", version);
} /* if */
if ((*sondernummer == UNKNOWN) && !*intern && !*internetnumber)
if ((*sondernummer == UNKNOWN) && !*intern)
switch (oc3 & 0x70) { /* Calling party number Information element, Octet 3 - Table 4-11/Q.931 */
case 0x00 : if (*num) { /* 000 Unknown */
if (*num != '0')
if (*num != '0') {
sprintf(result, "%s%s", mycountry, myarea);
*local = 1;
}
else {
if (num[1] != '0') /* Falls es doch Ausland ist -> nichts machen!!! */
strcpy(result, mycountry);
if (num[1] != '0') /* Falls es doch Ausland ist -> nichts machen!!! */
strcpy(result, mycountry);
else
strcpy(result, countryprefix);
strcpy(result, countryprefix);
while (*num == '0')
num++;
num++;
} /* else */
} /* if */
break;
@ -889,15 +878,17 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
case 0x20 : if (version != VERSION_1TR6) {
strcpy(result, mycountry); /* 010 National */
while (*num == '0')
num++;
while (*num == '0')
num++;
} /* if */
break;
case 0x30 : break; /* 011 Network specific number */
case 0x40 : if (*num != '0') /* 100 Subscriber number */
case 0x40 : if (*num != '0') { /* 100 Subscriber number */
sprintf(result, "%s%s", mycountry, myarea);
*local = 1;
}
else {
strcpy(result, mycountry);
@ -916,8 +907,8 @@ static void buildnumber(char *num, int oc3, int oc3a, char *result, int version,
else
strcpy(result, "");
print_msg(PRT_DEBUG_DECODE, " DEBUG> %s: num=\"%s\", oc3=%s(%02x), result=\"%s\", sonder=%d, intern=%d, internet=%d, partner=%d\n",
st + 4, n, i2a(oc3, 8, 2), oc3 & 0x70, result, *sondernummer, *intern, *internetnumber, partner);
print_msg(PRT_DEBUG_DECODE, " DEBUG> %s: num=\"%s\", oc3=%s(%02x), result=\"%s\", sonder=%d, intern=%d, local=%d, partner=%d\n",
st + 4, n, i2a(oc3, 8, 2), oc3 & 0x70, result, *sondernummer, *intern, *local, partner);
} /* buildnumber */
@ -2398,7 +2389,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
strcpy(s, s1);
} /* if */
buildnumber(s, oc3, oc3a, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].internetnumber[CALLED], 0, CALLED);
buildnumber(s, oc3, oc3a, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].local[CALLED], 0, CALLED);
if (!dual)
strcpy(call[chan].vnum[CALLED], vnum(chan, CALLED));
@ -2453,7 +2444,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
if (strcmp(call[chan].onum[CALLING], s)) { /* different! */
if ((call[chan].screening == 3) && ((oc3a & 3) < 3)) { /* we believe the first one! */
strcpy(call[chan].onum[CLIP], s);
buildnumber(s, oc3, oc3a, call[chan].num[CLIP], version, &call[chan].provider, &call[chan].sondernummer[CLIP], &call[chan].intern[CLIP], &call[chan].internetnumber[CLIP], 0, 0);
buildnumber(s, oc3, oc3a, call[chan].num[CLIP], version, &call[chan].provider, &call[chan].sondernummer[CLIP], &call[chan].intern[CLIP], &call[chan].local[CLIP], 0, 0);
strcpy(call[chan].vnum[CLIP], vnum(6, CLIP));
if (Q931dmp && (*call[chan].vnum[CLIP] != '?') && *call[chan].vorwahl[CLIP]
&& oc3 && ((oc3 & 0x70) != 0x40)) {
@ -2494,7 +2485,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
call[chan].screening = (oc3a & 3);
strcpy(call[chan].onum[CALLING], s);
buildnumber(s, oc3, oc3a, call[chan].num[CALLING], version, &call[chan].provider, &call[chan].sondernummer[CALLING], &call[chan].intern[CALLING], &call[chan].internetnumber[CALLING], call[chan].dialin, CALLING);
buildnumber(s, oc3, oc3a, call[chan].num[CALLING], version, &call[chan].provider, &call[chan].sondernummer[CALLING], &call[chan].intern[CALLING], &call[chan].local[CALLING], call[chan].dialin, CALLING);
strcpy(call[chan].vnum[CALLING], vnum(chan, CALLING));
if (Q931dmp && (*call[chan].vnum[CALLING] != '?') && *call[chan].vorwahl[CALLING]
@ -2546,9 +2537,9 @@ static void decode(int chan, register char *p, int type, int version, int tei)
strcpy(call[chan].onum[CALLED], s);
call[chan].oc3 = oc3;
if (Q931dmp)
buildnumber(s, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].internetnumber[CALLED], call[chan].dialin, CALLED);
buildnumber(s, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].local[CALLED], call[chan].dialin, CALLED);
buildnumber(call[chan].digits, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].internetnumber[CALLED], call[chan].dialin, CALLED);
buildnumber(call[chan].digits, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].local[CALLED], call[chan].dialin, CALLED);
strcpy(call[chan].vnum[CALLED], vnum(chan, CALLED));
@ -2570,7 +2561,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
}
else {
strcpy(call[chan].onum[CALLED], s);
buildnumber(s, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].internetnumber[CALLED], call[chan].dialin, CALLED);
buildnumber(s, oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].local[CALLED], call[chan].dialin, CALLED);
strcpy(call[chan].vnum[CALLED], vnum(chan, CALLED));
if (Q931dmp && (*call[chan].vnum[CALLED] != '?') && *call[chan].vorwahl[CALLED]
@ -2630,7 +2621,7 @@ static void decode(int chan, register char *p, int type, int version, int tei)
*pd = 0;
strcpy(call[chan].onum[REDIR], s);
buildnumber(s, oc3, -1, call[chan].num[REDIR], version, &call[chan].provider, &call[chan].sondernummer[REDIR], &call[chan].intern[REDIR], &call[chan].internetnumber[REDIR], 0, 0);
buildnumber(s, oc3, -1, call[chan].num[REDIR], version, &call[chan].provider, &call[chan].sondernummer[REDIR], &call[chan].intern[REDIR], &call[chan].local[REDIR], 0, 0);
strcpy(call[chan].vnum[REDIR], vnum(chan, REDIR));
if (Q931dmp && (*call[chan].vnum[REDIR] != '?') && *call[chan].vorwahl[REDIR]
@ -3415,13 +3406,7 @@ static void huptime(int chan, int setup)
/* der erste Versuch, dem einmaligen Verbindungsentgelt
(DM 0,06/Anwahl) zu entkommen ... */
#if 0
^MICHI:
Hier benoetige ich eigentlich als Information, das es einen
"Nullten Takt" gibt - dann kann DTAG/Zone=17 wieder raus!
~MICHI
#endif
if ((call[chan].Rate.prefix == DTAG) && (call[chan].Rate.zone == 17))
if (call[chan].Rate.Basic) /* wenn es eine Grundgebuehr gibt (z.b. T-Online eco) */
newhuptimeout = 240;
}
else
@ -3997,13 +3982,14 @@ void processRate(int chan1)
} /* processRate */
static void processLCR(int chan, char **hint)
static void processLCR(int chan, char *hint)
{
auto RATE bestRate, pselRate;
auto char sx[BUFSIZ], sy[BUFSIZ], sz[BUFSIZ];
static char lcrhint[BUFSIZ];
*hint = 0;
bestRate = pselRate = call[chan].Rate;
bestRate.prefix = getLeastCost(&bestRate, -1);
@ -4052,7 +4038,7 @@ static void processLCR(int chan, char **hint)
if ((call[chan].hint != UNKNOWN) && (call[chan].hint != bestRate.prefix))
sprintf(sz, " saving vs. hint (010%02d:%s) %s %s",
call[chan].hint, bestRate.Provider,
call[chan].hint, getProvidername(call[chan].hint),
currency,
double2str(hintpreis - call[chan].pay, 6, 3, DEB));
@ -4080,15 +4066,13 @@ static void processLCR(int chan, char **hint)
#endif
if (*sx || *sy || *sz)
if (hint)
sprintf(*hint = lcrhint, "HINT: %s%s%s LCR:%s", sx, sy, sz, ((bestRate.prefix == call[chan].provider) ? "OK" : "FAILED"));
sprintf(hint, "HINT: %s%s%s LCR:%s", sx, sy, sz, ((bestRate.prefix == call[chan].provider) ? "OK" : "FAILED"));
} /* processLCR */
static void prepareRate(int chan, char **msg, char **tip, int viarep)
{
auto int provider = UNKNOWN;
auto int zone = UNKNOWN;
auto int zone = UNKNOWN;
auto RATE lcRate;
static char message[BUFSIZ];
static char lcrhint[BUFSIZ];
@ -4114,56 +4098,73 @@ static void prepareRate(int chan, char **msg, char **tip, int viarep)
if (call[chan].intern[CALLED]) {
call[chan].zone = INTERN;
call[chan].tarifknown = 0;
if (msg)
sprintf(*msg = message, "CHARGE: free of charge - internal call");
sprintf(message, "CHARGE: free of charge - internal call");
return;
} /* if */
provider = ((call[chan].provider == UNKNOWN) ? preselect : call[chan].provider);
zone = getZone(provider, call[chan].num[CALLED]);
zone = getZone(call[chan].provider, call[chan].num[CALLED]);
#if 0 /* AK:06-Apr-99 dadurch wird der "A:" Tag wieder ueberschrieben :-( */
if (call[chan].sondernummer[CALLED] != UNKNOWN)
switch (sondertarif(call[chan].sondernummer[CALLED])) {
case SO_FREE : call[chan].zone = CITYCALL; /* Fixme: is 'CITYCALL == Zone 1' true worldwide ??? */
call[chan].tarifknown = 0;
if (msg)
sprintf(*msg = message, "CHARGE: free of charge - FreeCall");
return;
if (!zone) { /* FreeCall */
call[chan].zone = FREECALL;
call[chan].tarifknown = 0;
case SO_CITYCALL : zone = CITYCALL; /* Fixme: is 'CITYCALL == Zone 1' true worldwide ??? */
break;
} /* switch */
#endif
if (msg)
sprintf(message, "CHARGE: free of charge - FreeCall");
return;
} /* if */
if (zone == UNKNOWN) {
zone = area_diff(NULL, call[chan].num[CALLED]);
if ((zone == AREA_ERROR) || (zone == AREA_UNKNOWN))
zone = UNKNOWN;
else if (zone == AREA_ABROAD) /* Fixme: muss noch stark verbessert werden! */
zone = GLOBALCALL; /* Fixme: GLOBALCALL is valid in Germany only */
if (call[chan].local[CALLED])
zone = LOCALCALL;
else {
zone = area_diff(NULL, call[chan].num[CALLED]);
switch (zone) {
case AREA_ERROR :
case AREA_UNKNOWN : zone = UNKNOWN; break;
case AREA_LOCAL : zone = CITYCALL; break;
case AREA_R50 : zone = REGIOCALL; break;
case AREA_FAR : zone = GERMANCALL; break;
case AREA_ABROAD : zone = UNKNOWN; break;
} /* switch */
} /* else */
} /* if */
call[chan].zone = zone;
call[chan].provider = provider;
processRate(chan);
if (zone == UNKNOWN)
call[chan].tarifknown = 0;
else
processRate(chan);
if (viarep)
return;
if (call[chan].tarifknown) {
if (msg)
sprintf(*msg = message, "CHARGE: %s %s/%ds = %s %s/Min (%s, %s, %s, %s)",
currency, double2str(call[chan].Rate.Price, 5, 3, DEB),
(int)(call[chan].Rate.Duration + 0.5),
currency, double2str(60 * call[chan].Rate.Price / call[chan].Rate.Duration, 5, 3, DEB),
call[chan].Rate.Provider, call[chan].Rate.Zone, call[chan].Rate.Day, call[chan].Rate.Hour);
if (call[chan].Rate.Basic > 0)
sprintf(message, "CHARGE: %s %s + %s/%ds = %s %s + %s/Min (%s)",
currency, double2str(call[chan].Rate.Basic, 5, 3, DEB),
double2str(call[chan].Rate.Price, 5, 3, DEB),
(int)(call[chan].Rate.Duration + 0.5),
currency, double2str(call[chan].Rate.Basic, 5, 3, DEB),
double2str(60 * call[chan].Rate.Price / call[chan].Rate.Duration, 5, 3, DEB),
explainRate(&call[chan].Rate));
else
sprintf(message, "CHARGE: %s %s/%ds = %s %s/Min (%s)",
currency, double2str(call[chan].Rate.Price, 5, 3, DEB),
(int)(call[chan].Rate.Duration + 0.5),
currency, double2str(60 * call[chan].Rate.Price / call[chan].Rate.Duration, 5, 3, DEB),
explainRate(&call[chan].Rate));
}
else {
if (msg)
sprintf(*msg = message, "CHARGE: Uh-oh: No charge info for provider %d, zone %d, number %s",
provider, zone, call[chan].num[CALLED]);
sprintf(message, "CHARGE: Uh-oh: No charge info for provider %d, zone %d, number %s",
call[chan].provider, call[chan].zone, call[chan].num[CALLED]);
#if 0
^MICHI: Hier kann man darueber streiten, ob bei unbekanntem Tarif
@ -4186,7 +4187,7 @@ static void prepareRate(int chan, char **msg, char **tip, int viarep)
if ((call[chan].hint = getLeastCost(&lcRate, -1)) != UNKNOWN) {
if (tip)
sprintf(*tip = lcrhint, "HINT: Better use 010%02d:%s, %s %s/%ds = %s %s/Min, saving %s %s/%lds",
sprintf(lcrhint, "HINT: Better use 010%02d:%s, %s %s/%ds = %s %s/Min, saving %s %s/%lds",
lcRate.prefix, lcRate.Provider,
currency, double2str(lcRate.Price, 5, 3, DEB),
(int)(lcRate.Duration + 0.5),
@ -4202,9 +4203,6 @@ static void prepareRate(int chan, char **msg, char **tip, int viarep)
06.Apr 10:04:18 [1]Calling AK via Mobilcom with HDLC CHARGE: DM 0,120/60s = DM 0,120/Min (Mobilcom, GermanCall, Dienstag, )
06.Apr 10:04:18 [1]Calling AK via Mobilcom with HDLC HINT: Better use 01051:01051, DM 0,090/60s = DM 0,090/Min, saving DM *****/181s
---------------------------------------------------------------------------------------------------------------------------^^^^^
Evtl. knnte hier auch die Angabe des Minutenpreises entfallen,
da (bei diesem Provider) sowieso der Minutenpreis angegeben wird.
~MICHI
#endif
currency, double2str(call[chan].Rate.Charge - lcRate.Charge, 5, 3, DEB),
@ -4222,6 +4220,7 @@ static void processctrl(int card, char *s)
static int tei = BROADCAST, sapi = 0, net = 1, firsttime = 1;
auto char sx[BUFSIZ], s1[BUFSIZ], s2[BUFSIZ];
auto char *why, *hint;
auto char hints[BUFSIZ];
static char last[BUFSIZ];
auto int isAVMB1 = 0;
auto double tx;
@ -4683,7 +4682,7 @@ static void processctrl(int card, char *s)
if (!Q931dmp)
if (dual && *call[chan].digits) {
strcpy(call[chan].onum[CALLED], call[chan].digits);
buildnumber(call[chan].digits, call[chan].oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].internetnumber[CALLED], call[chan].dialin, CALLED);
buildnumber(call[chan].digits, call[chan].oc3, -1, call[chan].num[CALLED], version, &call[chan].provider, &call[chan].sondernummer[CALLED], &call[chan].intern[CALLED], &call[chan].local[CALLED], call[chan].dialin, CALLED);
strcpy(call[chan].vnum[CALLED], vnum(chan, CALLED));
} /* if */
@ -4904,11 +4903,13 @@ doppelt:break;
if (OUTGOING) {
processRate(chan);
processLCR(chan, &hint);
/* ^MICHI: Hier gibt's gerne mal einen core-dump: ~MICHI */
if (*hint)
info(chan, PRT_SHOWHANGUP, STATE_HANGUP, hint);
if (call[chan].tarifknown) {
processLCR(chan, hints);
if (*hints)
info(chan, PRT_SHOWHANGUP, STATE_HANGUP, hints);
} /* if */
} /* if */
if (!Q931dmp)

View File

@ -24,6 +24,30 @@
*
*
* $Log$
* Revision 1.61 1999/04/10 16:36:00 akool
* isdnlog Version 3.13
*
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
*
* You have to do the following to test this version:
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
*
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
* "/etc/isdn/callerid.conf" file:
*
* [ISDNLOG]
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
* RATEFILE = /usr/lib/isdn/rate-de.dat
* RATECONF = /etc/isdn/rate.conf
*
* Please replace any "de" with your country code ("at", "ch", "nl")
*
* Good luck (Andreas Kool and Michael Reinelt)
*
* Revision 1.60 1999/03/24 19:38:33 akool
* - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/
@ -2447,7 +2471,7 @@ static void repair(one_call *cur_call)
preparecint(0, why, hint, 1);
#endif
if (call[0].zone == GLOBALCALL) {
if (call[0].zone == UNKNOWN) {
#if DEBUG
print_msg(PRT_NORMAL, "Ooops: GlobalCall %s -- assuming \"Welt 4\"",
cur_call->num[CALLED]);

View File

@ -204,7 +204,7 @@ T:1-4/12-13,16-18=1.116/4.2353 Tageszeit 2
T:5/12-18=1.116/4.2353 Tageszeit 2
T:E,H/06-20=1.116/4.8 Sparzeit
T:*/20-06=1.116/4.8 Supersparzeit
A:+27,+373,+64,+852,
A:+27,+373,+64,+852
Z:11 Ausland Zone 6
T:1-5/06-08,18-20=1.116/4.2353 Sparzeit
@ -794,7 +794,7 @@ T:1-4/12-13,16-18=0.996/4.2353 Tageszeit 2
T:5/12-18=0.996/4.2353 Tageszeit 2
T:E,H/06-20=0.996/4.8 Sparzeit
T:*/20-06=0.996/4.8 Supersparzeit
A:+27,+373,+64,+852,
A:+27,+373,+64,+852
Z:11 Ausland Zone 6
T:1-5/06-08,18-20=0.996/4.2353 Sparzeit
@ -1089,7 +1089,7 @@ T:1-4/12-13,16-18=0.936/4.2353 Tageszeit 2
T:5/12-18=0.936/4.2353 Tageszeit 2
T:E,H/06-20=0.936/4.8 Sparzeit
T:*/20-06=0.936/4.8 Supersparzeit
A:+27,+373,+64,+852,
A:+27,+373,+64,+852
Z:11 Ausland Zone 6
T:1-5/06-08,18-20=0.936/4.2353 Sparzeit

View File

@ -1,8 +1,9 @@
V:1.0-Germany [10-Apr-1999]
V:1.0-Germany [14-Apr-1999]
# Zonenvergabe:
#
# 0 : Verbindungen an der eigenen Tk-Anlage (zwangsläufig kostenlos)
# sowie alle "FreeCall" (kostenlos) Nummern des jeweiligen Providers
# 1 : Ortszone (alle Nummern, die ohne Vorwahl erreichbar sind.
# Z.Zt. nur über den preselected Provider erreichbar)
# 2 : Cityzone (Nummern im Umkreis von max. 20 km)
@ -38,10 +39,10 @@ V:1.0-Germany [10-Apr-1999]
# Inmarsat
# werden z.Zt. nicht unterstützt
#####################################################################
P:10,0 Teleglobe
P:10 Teleglobe
C:GmbH, Gutleutstraße 85, 60329 Frankfurt 01010
#####################################################################
P:11,0 o.tel.o CbC
P:11 o.tel.o CbC
G:01.04.1999
C:o.tel.o communications GmbH, Am Bonneshof 35, 40474 Düsseldorf 01011
C:Homepage: http://www.o-tel-o.de
@ -52,18 +53,11 @@ T:1-5/08-18=0.15/60
T:1-5/18-08=0.10/60
T:6-7,H/*=0.095
Z:5-10 Mobil
A:01610
A:01617
A:01619
A:01618 # C
A:0170
A:0171 # D1
A:0172
A:0173 # D2
A:0177
A:0178 # Eplus
A:0176
A:0179 # E2
A:01610,01617,01619,01618 # C
A:0170,0171 # D1
A:0172,0173 # D2
A:0177,0178 # Eplus
A:0176,0179 # E2
T:1-5/08-18=0.94/60
T:1-5/18-08=0.47/60
T:6-7,H/*=0.47/60
@ -73,10 +67,10 @@ T:1-5/09-22=0.059/60
T:1-5/22-09=0.059/60:1800,0.03/60
T:6-7,H/*=0.059/60:1800,0.03/60
#####################################################################
P:12,0 Tele Danmark
P:12 Tele Danmark
C:Internetz GmbH, Süderstraße 75, 20097 Hamburg 01012
#####################################################################
P:13,0 Tele 2
P:13 Tele 2
G:08.02.1999
C:Tele 2 Kinnevik Telecommunciations International S.A., 75, route de Longwy, L-8080 Bertrange, Luxembourg 01013
C:Homepage: http://www.tele2.de
@ -91,18 +85,11 @@ T:6-7,H/07-19=0.10/60
T:6-7,H/19-22=0.07/60
T:6-7,H/22-07=0.05/60
Z:5-10 Mobilfunknetz
A:01610
A:01617
A:01619
A:01618 # C
A:0170
A:0171 # D1
A:0172
A:0173 # D2
A:0177
A:0178 # Eplus
A:0176
A:0179 # E2
A:01610,01617,01619,01618 # C
A:0170,0171 # D1
A:0172,0173 # D2
A:0177,0178 # Eplus
A:0176,0179 # E2
T:*/*=0.79/60
Z:12 Euro 1 / USA, Kanada
A:+1 # Kanada
@ -167,10 +154,10 @@ A:+852 # Hongkong
A:+972 # Israel
T:*/*=0.97/60
Z:15 Welt 2
# UNKNOWN: Diego Garcia
# UNKNOWN: Guantanamo
A:+246 # Diego Garcia
A:+5321 # Guantanamo
# UNKNOWN: Solomon Inseln
# UNKNOWN: Wallis und Futuna Inseln
A:+681 # Wallis und Futuna Inseln
A:+1242 # Bahamas
A:+1246 # Barbados
A:+1264 # Anguilla
@ -198,7 +185,7 @@ A:+224 # Guinea
A:+225 # Cote d'Ivoire (Elfenbeinküste)
A:+226 # Burkina Faso (Obervolta)
A:+227 # Niger
A:+227 # Niger (FUZZ 2:``Niue'' ~ ``Niger'')
A:+683 # Niue-Inseln
A:+228 # Togo
A:+229 # Benin
A:+230 # Mauritius
@ -337,22 +324,22 @@ A:+996 # Kirgisistan
A:+998 # Usbekistan
T:*/*=2.44/60
#####################################################################
P:14,0 EWE TEL
P:14 EWE TEL
C:GmbH, Donnerschweer Straße 22-26, 26123 Oldenburg 01014
#####################################################################
P:15,0 RSL COM
P:15 RSL COM
C:Deutschland GmbH, Lyoner Straße 36, 60528 Frankfurt/Main 01015
#####################################################################
P:16,0 LausitzNet
P:16 LausitzNet
C:Telekommunikationsgesellschaft mbH, Lausitzer Straße 1-7, 03046 Cottbus 01016
#####################################################################
P:17,0 SEC
P:17 SEC
C:Service AG, Dieskaustraße 246, 04249 Leipzig 01017
#####################################################################
P:18,0 debitel
P:18 debitel
C:Kommunikationstechnik GmbH & Co KG, Schelmenwasenstr. 37 - 39, 70567 Stuttgart 01018
#####################################################################
P:19,0 Mobilcom CbC
P:19 Mobilcom CbC
C:CityLine Telefondienste GmbH, Schwarzer Weg 13, 24837 Schleswig 01019
G:06.04.1999
C:MobilCom AG
@ -366,42 +353,65 @@ T:*/19-22=0.08/60 Spar
T:*/22-07=0.04/60 Nacht
Z:6-10 Mobilfunk
T:*/*=0.49/60
Z:14 Gruppe A
A:+1 # Vereinigte Staaten (USA)
A:+30 # Griechenland
A:+31 # Niederlande
A:+32 # Belgien
A:+33 # Frankreich
A:+34 # Spanien
A:+350 # Gibraltar
A:+351 # Portugal
A:+352 # Luxemburg
A:+353 # Irland
A:+356 # Malta
A:+358 # Finnland
A:+376 # Andorra
A:+377 # Monaco
A:+39 # Italien
A:+41 # Schweiz
A:+43 # Österreich
A:+44 # Großbritannien und Nordirland
A:+45 # Dänemark
A:+46 # Schweden
A:+47 # Norwegen
T:*/*=0.49/60
Z:20 Internet
A:01929 # (Benutzername: mobilcom; Passwort: mobilcom)
T:*/*=0.05/60 FreeNet
#####################################################################
P:20,0 ISIS
P:20 ISIS
C:Multimedia Net GmbH, Kaistraße 6, 40221 Düsseldorf 01020
#####################################################################
P:21,0 QS
P:21 QS
C:Communication Service GmbH, Oberländer Ufer 180-182, 50968 Köln 01021
#####################################################################
P:22,0 NetCologne
P:22 NetCologne
C:GmbH, Maarweg 163, 50825 Köln 01022
#####################################################################
P:23,0 tesion
P:23 tesion
C:Communikationsnetze Süd-West GmbH & Co. KG, Kriegsbergstr. 11, 70174 Stuttgart 01023
#####################################################################
P:24,0 Telepassport
P:24 Telepassport
C:GmbH, Schwindstraße 3, 60325 Frankfurt 01024
#####################################################################
P:25,0 CityKom
P:25 CityKom
C:Münster, Haferlandweg 8, 48155 Münster 01025
#####################################################################
P:26,0 ECN
P:26 ECN
C:Telekommunikation GmbH, Schmickstraße 38-40, 60314 Frankfurt 01026
#####################################################################
P:27,0 Communications Netzmanagement
P:27 Communications Netzmanagement
C:Bremen GmbH, Theodor-Heuss-Allee 20, 28215 Bremen 01027
#####################################################################
P:28,0 Colt
P:28 Colt
C:Telecom GmbH, Gervinusstraße 18-22, 60323 Frankfurt 01028
C:Reseller von COLT : Telebridge, Global Communications, Nikoma
#####################################################################
P:29,0 Unisource
P:29 Unisource
C:Carrier Services, Industriestraße 21, CH-8304 Wallisellen/Schweiz 01029
#####################################################################
P:30,0 TelDaFax
P:30 TelDaFax
G:31.03.1999
C:Telefon-, Daten- und Fax-Transfer GmbH & Co. KG, Schuppertsgasse 30, 35083 Wetter (Hessen) 01030
C:Name: TeDaFax Telefon-, Daten- und Faxtransfer AG
@ -418,13 +428,13 @@ T:6-7,H/*=0.09(60)/1
Z:6-10 C/D/E-Netz
T:*/*=0.48(60)/1
#####################################################################
P:31,0 HEAG
P:31 HEAG
C:MediaNet GmbH, Luisenplatz 6, 64283 Darmstadt 01031
#####################################################################
P:32,0 KDD
P:32 KDD
C:Deutschland GmbH, Immermannstraße 45, 40210 Düsseldorf 01032
#####################################################################
P:33,0 DTAG
P:33 DTAG
G:01.04.1999
C:Deutsche Telekom AG, Friedrich-Ebert-Allee 140, 53113 Bonn 01033
C:Name: Deutsche Telekom AG
@ -435,7 +445,15 @@ C: dort ist nur das Verbindungsentgeld faellig
C:ISDN-Tarif
C:FORMEL: 7,2 / Minutenpreis => Taktlaenge
C:Quelle: http://www.telekom.de/untern/tarife/mobil/index.htm
Z:1-2 CityCall
# Fixme: Z:1-2 CityCall!
Z:1 Ortszone
T:1-5/09-18=0.12/90 Standard
T:1-5/18-21=0.12/150 Spar
T:1-5/21-05=0.12/240 Nacht
T:1-5/05-09=0.12/150 Spar
T:6-7,H/05-21=0.12/150 Spar
T:6-7,H/21-05=0.12/240 Nacht
Z:2 CityCall
T:1-5/09-18=0.12/90 Standard
T:1-5/18-21=0.12/150 Spar
T:1-5/21-05=0.12/240 Nacht
@ -457,67 +475,79 @@ T:1-5/06-09=0.12/60:600,0.1084/60 Spar
T:6-7,H/06-21=0.12/60:600,0.1084/60 Spar
T:6-7,H/21-06=0.06/60 Nacht
Z:8 Mobilfunknetz D2
A:0172
A:0173
A:0172,0173
T:1-5/09-18=0.12/7.5
T:1-5/18-09=0.12/15
T:6-7,H/0-24=0.12/15
Z:20 Internet
A:0191011
T:*/*=0.06/0,0.06/60 T-Online eco
Z:0 FreeCall
A:0010 # Operator Service
A:0130 # freecall 0130
A:0800 # freecall 0800
A:01113 # Telekom Direkt
A:01114 # Telekom Privatkundenvertrieb
A:01115 # Telekom Geschaftskundenvertrieb
A:01136 # Telegrammaufnahme per Telefax
A:01171 # Störungsannahme PK
A:01172 # Störungsannahme GK
A:01174 # Störungsannahme Kabelfernsehen
A:110 # Polizei / Notruf
A:112 # Feuerwehr / Rettungsleitstelle
#####################################################################
P:34,0 NEFkom
P:34 NEFkom
C:Telekommunikation GmbH & Co. KG, Bärenschanzstraße 4, 90429 Nürnberg 01034
#####################################################################
P:35,0 interCOM
P:35 interCOM
C:GmbH, Hauptstraße 52a, 28876 Oyten 01035
#####################################################################
P:36,0 Hutchison
P:36 Hutchison
C:Münsterstraße 109, 48155 Münster 01036
#####################################################################
P:37,0 ETS
P:37 ETS
C:Verwaltung für Sprach- und Datennetze GmbH, Brunnenstraße 4, 61191 Rosbach 01037
#####################################################################
P:38,0 MediaWays
P:38 MediaWays
C:GmbH, An der Autobahn, 33311 Gütersloh 01038
#####################################################################
P:39,0 First Telecom
P:39 First Telecom
C:GmbH, Lyoner Straße 51, 60528 Frankfurt/Main 01039
#####################################################################
P:40,0 PLUSNET
P:40 PLUSNET
C:Gesellschaft für Netzwerk Services mbH, August-Thyssen-Straße 1, 40211 Düsseldorf 01040
#####################################################################
P:41,0 HanseNet
P:41 HanseNet
C:Telekommunikation GmbH, Hammerbrookstraße 63, 20097 Hamburg 01041
#####################################################################
P:42,0 TeleBeL
P:42 TeleBeL
C:Telekommunikation Bergisches Land GmbH, Johannisberg 7, 42103 Wuppertal 01042
#####################################################################
P:43,0 KielNet
P:43 KielNet
C:GmbH, Postfach 41 60, 24100 Kiel 01043
#####################################################################
P:44,0 VEW TELNET
P:44 VEW TELNET
C:Gesellschaft für Telekommunikation und Netzdienste mbH, Unterste-Wilms-Straße 29, 44143 Dortmund 01044
#####################################################################
P:45,0 Global Network
P:45 Global Network
C:Telephone Deutschland, Grosser Plan 8, 29221 Celle 01045
#####################################################################
P:46,0 KomTel
P:46 KomTel
C:Gesellschaft für Kommunikation und Informationsdienste GmbH, Batteriestraße 48, 24937 Flensburg 01046
#####################################################################
P:47,0 PrimeTec
P:47 PrimeTec
C:International Europe Ltd. 01047
#####################################################################
P:48,0 DOKOM
P:48 DOKOM
C:GmbH, Im Defdahl 5, 44141 Dortmund 01048
#####################################################################
P:49,0 ACC
P:49 ACC
C:Telekommunikation GmbH, Heinrich-Heine-Allee 53, 40213 Düsseldorf 01049
#####################################################################
P:50,0 TALKLINE
P:50 TALKLINE
C:PS PhoneServices GmbH, Adenauer Damm 1, 25337 Elmshorn 01050
#####################################################################
P:51,0 01051
P:51 01051
C:ID-Switch GmbH, Graf-Adolf-Straße, 40210 Düsseldorf 01051
G:17.02.1999
C:Homepage: http://www.01051.com
@ -526,61 +556,61 @@ C: 40210 Duesseldorf
Z:2-4 Ferngespräche
T:*/*=0.09/60
#####################################################################
P:52,0 Long Distance
P:52 Long Distance
C:International Ltd., 5 Duke's Gate Acton, London W 4 5 DX, GB 01052
#####################################################################
P:53,0 WOBCOM
P:53 WOBCOM
C:GmbH Wolfsburg, Heßlinger Str. 1-5, 38440 Wolfsburg 01053
#####################################################################
P:54,0 USFI
P:54 USFI
C:Global Network Services Germany GmbH, Kindsbacherstraße 41, 66877 Ramstein 01054
#####################################################################
P:55,0 ESPRIT
P:55 ESPRIT
C:Telecom Deutschland GmbH, Kaistraße 16 A, 40221 Düsseldorf 01055
#####################################################################
P:56,0 BITel
P:56 BITel
C:Gesellschaft für kommunale Telekommunikation mbh, Schildescher Straße 16, 33611 Bielefeld 01056
#####################################################################
P:57,0 Mox
P:57 Mox
C:Telecom GmbH, Industriestraße 3a, 40878 Ratingen 01057
#####################################################################
P:58,0 KaTel
P:58 KaTel
C:Gesellschaft für Telekommunikation mbH, Mathias-Brüggen-Straße 87-89, 50829 Köln 01058
#####################################################################
P:59,0 Pacific Gateway Exchange
P:59 Pacific Gateway Exchange
C:Inc., 533 Airport Boulevard, Suite 505, Burlingame, CA 94010, USA 01059
#####################################################################
P:60,0 Telecom-InfoService
P:60 Telecom-InfoService
C:GmbH, Postfach 174, A-1000 Wien (A) 01060
#####################################################################
P:61,0 TelSA
P:61 TelSA
C:Telekommunikationsgesellschaft mbH, Magdeburger Str. 51, 06112 Halle 01061
#####################################################################
P:62,0 DENTEL
P:62 DENTEL
C:GmbH i.G. Grimmstraße 4 80336 München 01062
#####################################################################
P:63,0 Conos
P:63 Conos
C:Corporate Network & Services Aktiengesellschaft Lievelingsweg 125 52119 Bonn 01063
#####################################################################
P:64,0 Hannoversche
P:64 Hannoversche
C:Telekommunikations- und Netzgesellschaft mbH, Glockseestraße 33, 30161 Hannover 01064
#####################################################################
P:65,0 Rapid Link
P:65 Rapid Link
C:Telecommunications GmbH, Donaustraße 68, 68199 Mannheim 01065
#####################################################################
P:66,0 Interoute
P:66 Interoute
C:Telecom Deutschland GmbH, Lyoner Str. 15, 60528 Frankfurt 01066
#####################################################################
P:67,0 RegioCom
P:67 RegioCom
C:GmbH, Steinfeldstraße 3, 39179 Barleben 01067
#####################################################################
P:68,0 Tele Media
P:68 Tele Media
C:International, Wilhelm-Leuschner-Strasse 23-25, 60329 Frankfurt/Main 01068
#####################################################################
P:69,0 Primus
P:69 Primus
C:Telecommunications Ltd. 01069
#####################################################################
P:70,0 Arcor CbC
P:70 Arcor CbC
G:01.04.99
C:Mannesmann Arcor
C:Mannesmann AG & Co., Kölner Str. 12, 65760 Eschborn 01070
@ -611,8 +641,7 @@ T:1-5/09-18=0.96/60 Hauptzeit
T:1-5/18-09=0.48/60 Nebenzeit
T:6-7,H/*=0.48/60 Freizeit
Z:8 D2
A:0172
A:0173
A:0172,0173
T:1-5/09-18=0.94/60 Hauptzeit
T:1-5/18-09=0.46/60 Nebenzeit
T:6-7,H/*=0.46/60 Freizeit
@ -881,28 +910,80 @@ Z:20 Internet
A:0192070 # (Benutzername: arcor; Passwort: internet; Proxy: proxy.arcor-ip.de:80; Startseite: http://www.call.arcor.net)
T:*/*=0.06/60
#####################################################################
P:71,0 DeTeMobil
P:70,1 Arcor Town to Town
G:01.04.99
C:Mannesmann Arcor
C:Mannesmann AG & Co., Kölner Str. 12, 65760 Eschborn 01070
Z:2 Nah
T:1-5/06-09=0.05(60)/30 Freizeit
T:1-5/09-18=0.09(60)/30 Hauptzeit
T:1-5/18-21=0.05(60)/30 Freizeit
T:1-5/21-06=0.04(60)/30 Nebenzeit
T:6-7,H/06-21=0.05(60)/30 Freizeit
T:6-7,H/21-06=0.04(60)/30 Nebenzeit
Z:3 Regional
T:1-5/06-09=0.075(60)/30 Freizeit
T:1-5/09-18=0.14(60)/30 Hauptzeit
T:1-5/18-21=0.075(60)/30 Freizeit
T:1-5/21-06=0.04(60)/30 Nebenzeit
T:6-7,H/06-21=0.075(60)/30 Freizeit
T:6-7,H/21-06=0.04(60)/30 Nebenzeit
Z:3 Fern
T:1-5/06-09=0.095(60)/30 Freizeit
T:1-5/09-18=0.18(60)/30 Hauptzeit
T:1-5/18-21=0.095(60)/30 Freizeit
T:1-5/21-06=0.06(60)/30 Nebenzeit
T:6-7,H/06-21=0.095(60)/30 Freizeit
T:6-7,H/21-06=0.06(60)/30 Nebenzeit
#####################################################################
P:70,2 Arcor Town to Town Sekunde
G:01.04.99
C:Mannesmann Arcor
C:Mannesmann AG & Co., Kölner Str. 12, 65760 Eschborn 01070
Z:2 Nah
T:1-5/06-09=0.058/0,0.05(60)/1 Freizeit
T:1-5/09-18=0.058/0,0.09(60)/1 Hauptzeit
T:1-5/18-21=0.058/0,0.05(60)/1 Freizeit
T:1-5/21-06=0.058/0,0.04(60)/1 Nebenzeit
T:6-7,H/06-21=0.058/0,0.05(60)/1 Freizeit
T:6-7,H/21-06=0.058/0,0.04(60)/1 Nebenzeit
Z:3 Regional
T:1-5/06-09=0.058/0,0.075(60)/1 Freizeit
T:1-5/09-18=0.058/0,0.14(60)/1 Hauptzeit
T:1-5/18-21=0.058/0,0.075(60)/1 Freizeit
T:1-5/21-06=0.058/0,0.04(60)/1 Nebenzeit
T:6-7,H/06-21=0.058/0,0.075(60)/1 Freizeit
T:6-7,H/21-06=0.058/0,0.04(60)/1 Nebenzeit
Z:3 Fern
T:1-5/06-09=0.058/0,0.095(60)/1 Freizeit
T:1-5/09-18=0.058/0,0.18(60)/1 Hauptzeit
T:1-5/18-21=0.058/0,0.095(60)/1 Freizeit
T:1-5/21-06=0.058/0,0.06(60)/1 Nebenzeit
T:6-7,H/06-21=0.058/0,0.095(60)/1 Freizeit
T:6-7,H/21-06=0.058/0,0.06(60)/1 Nebenzeit
#####################################################################
P:71 DeTeMobil
C:Deutsche Telekom MobilNet GmbH, Landgrabenweg 151, 53227 Bonn 01071
#####################################################################
P:72,0 Mannesmann
P:72 Mannesmann
C:Mobilfunk GmbH, Am Seestern 1, 40547 Düsseldorf 01072
#####################################################################
P:73,0 AXXON
P:73 AXXON
C:Telecom GmbH, Am Seestern 24, 40547 Düsseldorf 01073
#####################################################################
P:74,0 Alpha
P:74 Alpha
C:Telecom GmbH, Beethovenstraße 1-3, 60325 Frankfurt/Main 01074
#####################################################################
P:75,0 ARCIS
P:75 ARCIS
C:Media Com Management GmbH, Maximilianstr. 14, 80539 München 01075
#####################################################################
P:76,0 QuickNet
P:76 QuickNet
C:Telenetworks & Service AG, Else-Lasker-Schüler-Straße 47, 42107 Wuppertal 01076
#####################################################################
P:77,0 E-Plus
P:77 E-Plus
C:Mobilfunk GmbH, E-Plus-Platz 1, 40468 Düsseldorf 01077
#####################################################################
P:78,0 3U
P:78 3U
G:01.04.1999
C:Telekommunikation GmbH, Äußere Zittauer Straße 51, 02708 Löbau 01078
C:3U Telekommunikation GmbH
@ -916,18 +997,11 @@ T:1-5/20-08=0.059(60)/1
T:6-7,H/08-20=0.139(60)/1
T:6-7,H/20-08=0.059(60)/1
Z:5-10
A:01610
A:01617
A:01619
A:01618 # C
A:0170
A:0171 # D1
A:0172
A:0173 # D2
A:0177
A:0178 # Eplus
A:0176
A:0179 # E2
A:01610,01617,01619,01618 # C
A:0170,0171 # D1
A:0172,0173 # D2
A:0177,0178 # Eplus
A:0176,0179 # E2
T:1-5/08-20=0.419(60)/1
T:1-5/20-08=0.399(60)/1
T:6-7,H/08-20=0.419(60)/1
@ -1649,7 +1723,7 @@ A:+8741 # Inmarsat A (W.Atlantic)
T:*/08-20=9.969(60)/1
T:*/20-08=9.949(60)/1
#####################################################################
P:79,0 Viatel
P:79 Viatel
G:24.12.1998
C:VIAPHONE GmbH, Hanauer Landstraße 187, 60314 Frankfurt 01079
C:Homepage: http://www.viatel.de
@ -1667,31 +1741,31 @@ T:1-5/09-18=0.73(60)/30,0.73(60)/1 Standard
T:1-5/18-09=0.36(60)/30,0.36(60)/1 Spar
T:6-7/*=0.36(60)/30,0.36(60)/1 Spar
#####################################################################
P:80,0 Telegate
P:80 Telegate
C:Aktiengesellschaft für telefonische Informationsdienste, Bahnhofstraße 26, 82211 Herrsching 01080
#####################################################################
P:81,0 Infotel
P:81 Infotel
C:bV, Onderlangs 120, 6812 CJ Arnhem, Niederlande 01081
#####################################################################
P:82,0 AugustaKom
P:82 AugustaKom
C:Telekommunikation GmbH & Co.KG Hoher Weg 1 86152 Augsburg 01082
#####################################################################
P:83,0 Wuerzburger
P:83 Wuerzburger
C:Telekommunikationsgesellschaft mbH, Bahnhofstraße 12-18, 97070 Würzburg 01083
#####################################################################
P:84,0 Telegroup
P:84 Telegroup
C:Network Services GmbH, Grossenbaumer Weg 6, 40472 Düsseldorf 01084
#####################################################################
P:85,0 WESTCom
P:85 WESTCom
C:GmbH, Hebelstraße 22 c, 69115 Heidelberg 01085
#####################################################################
P:86,0 ONE.TEL
P:86 ONE.TEL
C:Limited (UK), Clements House, 14-18 Gresham Street, London, EC2V 7JE, England 01086
#####################################################################
P:87,0 HAMCOM
P:87 HAMCOM
C:GmbH Telekommunikation, Südring 1-3, 59065 Hamm 01087
#####################################################################
P:88,0 WorldCom
P:88 WorldCom
C:Telecommunication Services GmbH, Brönnerstr. 15, 60313 Frankfurt 01088
C:Dies sind *nicht* die korrekten Tarife von WorldCom, da WorldCom
C:keine Tarifdaten veroeffentlicht!
@ -1706,133 +1780,191 @@ T:1-5/21-05=0.03(60)/1 UUnet
T:6-7,H/05-21=0.048(60)/1 UUnet
T:6-7,H/21-05=0.03(60)/1 UUnet
#####################################################################
P:89,0 M'net
P:89 M'net
C:Telekommunikations GmbH, Corneliusstraße 10, 80469 München 01089
#####################################################################
P:90,0 VIAG INTERKOM
P:90 VIAG INTERKOM
C:GmbH & Co. KG, Elsenheimer Straße 11, 81927 München 01090
#####################################################################
P:91,0 IDT
P:91 IDT
C:Global Limited, London, United Kingdom 01091
#####################################################################
P:92,0 Hallo Telefon Service
P:92 Hallo Telefon Service
C:GmbH Dinkelbergstraße 6 76684 Östringen 01092
#####################################################################
P:93,0 Kray
P:93 Kray
C:Informationssysteme, Brüder-Grimm-Allee 73 A, 37085 Göttingen 01093
#####################################################################
P:94,0 Global Communications
P:94 Global Communications
C:GmbH, Eupener Straße 57 - 59, 50933 Köln 01094
#####################################################################
P:95,0 Teleos
P:95 Teleos
C:GmbH, Bielefelder Straße 3, 32051 Herford 01095
#####################################################################
P:96,0 GELSEN-NET
P:96 GELSEN-NET
C:Kommunikationsgesellschaft mbH, Munscheidstraße 14, 45886 Gelsenkirchen 01096
#####################################################################
P:97,0 AT & T-Unisource
P:97 AT & T-Unisource
C:Communication Services (Deutschland) GmbH, Lyoner Str. 15, 60528 Frankfurt 01097
#####################################################################
P:98,0 STAR
P:98 STAR
C:Telecommunications Deutschland GmbH, Voltastraße 1a, 60486 Frankfurt 01098
C:Reseller von STAR : C@llas, Mox, Nikoma
#####################################################################
P:99,0 ECONOPHONE
P:98,1 Mox
G:01.04.1999
C:Mox Telecom AG
C:Reseller von Star Telecom
Z:2-4 Deutschlandweit
T:*/*=0.159(60)/1
Z:5-10 Fest-zu-Mobil
T:*/*=0.499(60)/1
# Großbritannien, USA 25,9 Pfg.
#
# Australien, Dänemark, Frankreich,
# Kanada, Niederlande, Norwegen, 35,9 Pfg.
# Schweden, Schweiz
#
# Belgien, Finnland, Italien,
# Luxemburg, Neuseeland, 45,9 Pfg.
# Österreich, Spanien
#
# Hong Kong, Israel, 55,9 Pfg.
# Japan, Südkorea
#
# Griechenland, Island, Kroatien,
# Moskau, Polen, Slovenien, 65,9 Pfg.
# Ungarn, Tschechien, Türkei
#
# Rußland*, Singapur 95,9 Pfg.
# und restliches Europa
#
# Aserbaidschan, Kasachstan, 125,9 Pfg.
# Georgien, Usbekistan, Ukraine
#
# Indien, Iran, Sri Lanka 175,9 Pfg.
#
# Restliche Welt 195,9 Pfg.
#####################################################################
P:99 ECONOPHONE
C:GmbH, Flughafenstraße 54b, 22335 Hamburg 01099
C:Reseller von ECONOPHONE : Telco
#####################################################################
P:100,0 TELELEV
P:100 TELELEV
C:Telekommunikation GmbH, Dönhoffstraße 39, 51373 Leverkusen 010000
#####################################################################
P:101,0 Netnet
P:101 Netnet
C:International AB, P.O. Box 6708, S-11385 Stockholm 010001
#####################################################################
P:102,0 EncoTel
P:102 EncoTel
C:GmbH & Co.KG, Leibnitzstraße 73, 07548 Gera 010002
#####################################################################
P:103,0 mevacom
P:103 mevacom
C:Telekommunikationsdienstleistungen GmbH, Posthofstraße 16, 14467 Potsdam 010003
#####################################################################
P:107,0 KPN
P:107 KPN
C:Telecom BV, Prinses Beatrixlaan 23, 2595 AK's Gravenhage, Niederlande 010007
#####################################################################
P:108,0 USA Global Link
P:108 USA Global Link
C:Deutschland GmbH, Theaterstraße 90, 52062 Aachen 010008
#####################################################################
P:110,0 Bertelsmann mediaSystems
P:110 Bertelsmann mediaSystems
C:GmbH, An der Autobahn, 33311 Gütersloh 010010
#####################################################################
P:111,0 RED LINE
P:111 RED LINE
C:Telekommunikationsgesellschaft mbH, Brückenstraße 17, 63897 Miltenberg 010011
#####################################################################
P:114,0 NordKom
P:114 NordKom
C:Weser-Elbe Telekommunikation GmbH, Stresemannstraße 48, 28207 Bremen 010014
#####################################################################
P:115,0 Delta Three
P:115 Delta Three
C:Inc., 430 Park Ave, New York 010015
#####################################################################
P:119,0 E.T.H.
P:119 E.T.H.
C:Telefondienste GmbH, Bettinastraße 25a, 60325 Frankfurt 010019
#####################################################################
P:120,0 Komm Consult
P:120 Komm Consult
C:Oberweg 15, 82024 Taufkirchen bei München 010020
#####################################################################
P:122,0 Motorola
P:122 Motorola
C:Electronic GmbH, Hagenauer Straße 47, 65203 Wiesbaden 010022
#####################################################################
P:130,0 tnp telenet
P:130 tnp telenet
C:potsdam, kommunikationsgesellschaft mbH, Erich-Weinert-Straße 100, 14478 Potsdam 010030
#####################################################################
P:131,0 accom
P:131 accom
C:Gesellschaft für Telekommunikationsnetze und -dienstleistungen GmbH & Co.KG, Borngasse 34, 52064 Aachen 010031
#####################################################################
P:133,0 Level 3
P:133 Level 3
C:Communications GmbH, Oberlindau 54 - 56, 60323 Frankfurt/Main 010033
#####################################################################
P:142,0 connection 42
P:142 connection 42
C:Ernst-Abbe-Straße 10, 25451 Quickborn 010042
#####################################################################
P:144,0 Carrier 1
P:144 Carrier 1
C:AG, Militärstraße 36, CH-8004 Zürich 010044
#####################################################################
P:150,0 Drillisch
P:150 Drillisch
C:AG, Horbeller Straße 33, 50858 Köln 010050
#####################################################################
P:155,0 Telia
P:155 Telia
C:Telekommunikation GmbH, Herrengraben 3, 20459 Hamburg 010055
#####################################################################
P:156,0 NETCOM
P:156 NETCOM
C:Kassel GmbH, Königstor 3 - 13, 34117 Kassel 010056
#####################################################################
P:160,0 JelloCom
P:160 JelloCom
C:GmbH & Co.KG, Prüssingstraße 41, 07745 Jena 010060
#####################################################################
P:166,0 InterCard
P:166 InterCard
C:GmbH, POS-Service, Mehlbeerenstraße 4, 82024 Taufkirchen bei München 010066
#####################################################################
P:170,0 Deutsche Telefon- und Marketing Services
P:170 Deutsche Telefon- und Marketing Services
C:GmbH, Isaac-Fulda-Allee 16, 55124 Mainz 010070
#####################################################################
P:173,0 TFN COM SA
P:173 TFN COM SA
C:World Of Communication, Via Greina 2 CP 2950, CH-6901 Lugano 010073
#####################################################################
P:177,0 WorldxChange
P:177 WorldxChange
C:Communications GmbH, Am Seedamm 44, 60489 Frankfurt 010077
#####################################################################
P:180,0 FaciliCom
P:180 FaciliCom
C:Telekommunikation GmbH; Windmühlstraße 1, 60329 Frankfurt/Main 010080
#####################################################################
P:184,0 Startec
P:184 Startec
C:Global Communications (Germany) GmbH, Broßstraße 6, 60487 Frankfurt 010084
#####################################################################
P:188,0 jk-tel
P:188 jk-tel
C:GmbH i.G., Hopfenplatz 5, 39120 Magdeburg 010088
#####################################################################
P:190,0 CNE
P:190 CNE
C:Corporate Network Essen Gesellschaft für Telekommunikation mbH, Kruppstraße 82 - 100, 45145 Essen 010090
#####################################################################
P:195,0 TeleNec
P:195 TeleNec
C:Telekommunikation Neustadt GmbH & Co.KG, Postfach 14 40, 96459 Neustadt 010095
#####################################################################
P:199,0 ESTel
P:199 ESTel
C:Energieversorgung Südsachsen Telekommunikationsgesellschaft mbH, Postfach 2 38, 09002 Chemnitz 010099
#
# 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

@ -13,6 +13,9 @@ P:28=99
# Dont use ACC
P:49=99
# Use Arcor CbC
P:70=0
# Kennzahl 98, moegliche Varianten:
# 0=Nikoma Minutentakt
# 1=Nikoma Sekundentakt

View File

@ -19,6 +19,30 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.4 1999/04/10 16:36:31 akool
* isdnlog Version 3.13
*
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
*
* You have to do the following to test this version:
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
*
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
* "/etc/isdn/callerid.conf" file:
*
* [ISDNLOG]
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
* RATEFILE = /usr/lib/isdn/rate-de.dat
* RATECONF = /etc/isdn/rate.conf
*
* Please replace any "de" with your country code ("at", "ch", "nl")
*
* Good luck (Andreas Kool and Michael Reinelt)
*
* Revision 1.3 1999/03/24 19:38:53 akool
* - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/
@ -57,15 +81,9 @@
* void exitHoliday()
* deinitialisiert die Feiertagsberechnung
*
* int isHoliday(struct tm *tm, char **name)
* 0 .. kein Feiertag
* 1 .. Feiertag, *name zeigt auf den Namen
*
* int getDay(struct tm *tm, char **name)
* 1 .. Montag
* 7 .. Sonntag
* 8 .. Feiertag
* *name zeigt auf den Namen
* int isDay(struct tm *tm, bitfield mask, char **name)
* prüft, ob <tm> ein Tag aus <mask> ist, und liefert
* eine Beschreibung in <*name>
*/
#define _HOLIDAY_C_
@ -84,9 +102,9 @@
#include "holiday.h"
#define COUNT(array) sizeof(array)/sizeof(array[0])
#define SOMEDAY (1<<MONDAY | 1<<THUESDAY | 1<<WEDNESDAY | 1<<THURSDAY | 1<<FRIDAY | 1<<SATURDAY | 1<<SUNDAY)
#define LENGTH 120 /* max length of lines in data file */
#define COUNT(array) sizeof(array)/sizeof(array[0])
typedef unsigned int julian;
@ -96,13 +114,15 @@ typedef struct {
char *name;
} HOLIDATE;
static char *defaultWeekday[] = { "Monday",
static char *defaultWeekday[] = { "",
"Monday",
"Thuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday",
"Workday",
"Weekend",
"Holiday" };
@ -192,7 +212,7 @@ void exitHoliday(void)
{
int i;
for (i=0; i<7; i++) {
for (i=0; i<COUNT(Weekday); i++) {
if (Weekday[i]) {
free (Weekday[i]);
Weekday[i]=NULL;
@ -212,7 +232,7 @@ int initHoliday(char *path, char **msg)
int i,m,d;
char *s, *date, *name;
char buffer[LENGTH];
char version[LENGTH]="";
char version[LENGTH]="<unknown>";
static char message[LENGTH];
if (msg)
@ -224,12 +244,12 @@ int initHoliday(char *path, char **msg)
Weekday[i]=strdup(defaultWeekday[i]);
if (!path || !*path) {
if (msg) snprintf (*msg=message, LENGTH, "Warning: no holiday database specified!");
if (msg) snprintf (message, LENGTH, "Warning: no holiday database specified!");
return 0;
}
if ((stream=fopen(path,"r"))==NULL) {
if (msg) snprintf (*msg=message, LENGTH, "Error: could not load holidays from %s: %s",
if (msg) snprintf (message, LENGTH, "Error: could not load holidays from %s: %s",
path, strerror(errno));
return -1;
}
@ -252,6 +272,9 @@ int initHoliday(char *path, char **msg)
warning("invalid weekday %d", d);
continue;
}
} else if (*s=='W') {
d=WORKDAY;
s++;
} else if (*s=='E') {
d=WEEKEND;
s++;
@ -270,8 +293,8 @@ int initHoliday(char *path, char **msg)
warning("empty weekday %d", d);
continue;
}
if (Weekday[d-1]) free(Weekday[d-1]);
Weekday[d-1]=strdup(name);
if (Weekday[d]) free(Weekday[d]);
Weekday[d]=strdup(name);
break;
case 'D':
@ -304,13 +327,13 @@ int initHoliday(char *path, char **msg)
}
fclose(stream);
if (msg) snprintf (*msg=message, LENGTH, "Holiday Version %s loaded [%d entries from %s]",
if (msg) snprintf (message, LENGTH, "Holiday Version %s loaded [%d entries from %s]",
version, nHoliday, path);
return nHoliday;
}
int isHoliday(struct tm *tm, char **name)
static int isHoliday(struct tm *tm, char **name)
{
int i;
julian easter, day;
@ -329,20 +352,43 @@ int isHoliday(struct tm *tm, char **name)
return 0;
}
int getDay(struct tm *tm, char **name)
int isDay(struct tm *tm, bitfield mask, char **name)
{
julian day;
char *s;
static char buffer[BUFSIZ];
if (isHoliday(tm, name))
if (name)
*(*name=buffer)='\0';
if (mask & (1<<EVERYDAY))
return EVERYDAY;
if ((mask & (1<<HOLIDAY)) && isHoliday(tm, &s)) {
sprintf (buffer, "%s (%s)", Weekday[HOLIDAY], s);
return HOLIDAY;
}
day=(date2julian(tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday)-6)%7+1;
if (name)
*name=Weekday[day-1];
if ((mask & (1<<WEEKEND)) && day>5) {
sprintf (buffer, "%s (%s)", Weekday[WEEKEND], Weekday[day]);
return WEEKEND;
}
if ((mask & (1<<WORKDAY)) && day<6) {
sprintf (buffer, "%s (%s)", Weekday[WORKDAY], Weekday[day]);
return WORKDAY;
}
if (mask & SOMEDAY) {
sprintf (buffer, "%s", Weekday[day]);
return day;
}
return 0;
}
#ifdef HOLITEST
void main (int argc, char *argv[])
{
@ -359,8 +405,14 @@ void main (int argc, char *argv[])
tm.tm_mon=atoi(strsep(argv+i,"."))-1;
tm.tm_year=atoi(strsep(argv+i,"."))-1900;
d=getDay(&tm,&name);
printf ("%02d.%02d.%04d\t%d=%s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,name);
d=isDay(&tm,1<<HOLIDAY,&name);
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Holiday");
d=isDay(&tm,1<<WEEKEND,&name);
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Weekend");
d=isDay(&tm,1<<WORKDAY,&name);
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Workday");
d=isDay(&tm,SOMEDAY,&name);
printf ("%02d.%02d.%04d\t%d = %s\n", tm.tm_mday,tm.tm_mon+1,tm.tm_year+1900,d,d?name:"no Day (Uh?)");
}
}
#endif

View File

@ -19,6 +19,30 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.3 1999/04/10 16:36:35 akool
* isdnlog Version 3.13
*
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
*
* You have to do the following to test this version:
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
*
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
* "/etc/isdn/callerid.conf" file:
*
* [ISDNLOG]
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
* RATEFILE = /usr/lib/isdn/rate-de.dat
* RATECONF = /etc/isdn/rate.conf
*
* Please replace any "de" with your country code ("at", "ch", "nl")
*
* Good luck (Andreas Kool and Michael Reinelt)
*
* Revision 1.2 1999/03/16 17:38:07 akool
* - isdnlog Version 3.07
* - Michael Reinelt's patch as of 16Mar99 06:58:58
@ -50,12 +74,15 @@
#define FRIDAY 5
#define SATURDAY 6
#define SUNDAY 7
#define WEEKEND 8
#define HOLIDAY 9
#define WORKDAY 8
#define WEEKEND 9
#define HOLIDAY 10
#define EVERYDAY 11
typedef unsigned long bitfield;
int initHoliday(char *path, char **msg);
void exitHoliday(void);
int isHoliday(struct tm *tm, char **name);
int getDay(struct tm *tm, char **name);
int isDay(struct tm *tm, bitfield mask, char **name);
#endif

View File

@ -19,6 +19,30 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.4 1999/04/10 16:36:39 akool
* isdnlog Version 3.13
*
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
*
* You have to do the following to test this version:
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
*
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
* "/etc/isdn/callerid.conf" file:
*
* [ISDNLOG]
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
* RATEFILE = /usr/lib/isdn/rate-de.dat
* RATECONF = /etc/isdn/rate.conf
*
* Please replace any "de" with your country code ("at", "ch", "nl")
*
* Good luck (Andreas Kool and Michael Reinelt)
*
* Revision 1.3 1999/03/24 19:39:00 akool
* - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/
@ -77,6 +101,10 @@
* versucht die Zone zu erraten, wenn mit den Daten in Rate
* units Einheiten gemeldet wurden
*
* char *explainRate (RATE *Rate)
* liefert eine textuelle Begründung für den Tarif in der Form
* "Provider, Zone, Wochentag, Zeit"
*
*/
#define _RATE_C_
@ -100,7 +128,10 @@
#define LENGTH 250 /* max length of lines in data file */
#define UNKNOWN -1
typedef unsigned long bitfield;
typedef struct _STACK {
int data;
struct _STACK *next;
} STACK;
typedef struct {
int Duration;
@ -126,6 +157,7 @@ typedef struct {
} ZONE;
typedef struct {
int booked;
int used;
char *Name;
int nZone;
@ -171,20 +203,57 @@ static char* str2set (char **s)
static char buffer[BUFSIZ];
char *p=buffer;
while (**s) {
if (**s==',') {
*p='\0';
if (**s==',')
break;
} else {
*p++=**s;
(*s)++;
}
else
*p++=*(*s)++;
}
*p = 0;
*p = '\0';
return buffer;
}
static int strmatch (const char *pattern, const char *string)
{
while (*pattern) {
if (*pattern!=*string || !*string)
return 0;
pattern++;
string++;
}
return 1;
}
static void push (STACK **stack, int data)
{
STACK *new=malloc(sizeof(STACK));
new->data=data;
new->next=*stack;
*stack=new;
}
static int pop (STACK **stack)
{
STACK *old=*stack;
int data;
if (!old)
return UNKNOWN;
data=old->data;
*stack=old->next;
return (data);
}
static void empty (STACK **stack)
{
STACK *old;
while (*stack) {
old=*stack;
*stack=old->next;
free(old);
}
}
void exitRate(void)
{
int i, j, k;
@ -215,34 +284,35 @@ int initRate(char *conf, char *dat, char **msg)
{
FILE *stream;
char buffer[LENGTH];
char Version[LENGTH]="";
static char message[LENGTH];
int use[MAXPROVIDER];
char Version[LENGTH]="<unknown>";
int booked[MAXPROVIDER];
int variant[MAXPROVIDER];
int Providers=0;
int nZone=0;
int nHour=0;
int ignore=0;
int prefix=UNKNOWN;
int version=UNKNOWN;
int zone=UNKNOWN;
int day1, day2, hour1, hour2;
STACK *zones=NULL, *zp;
int zone1, zone2, day1, day2, hour1, hour2;
bitfield day, hour;
double price, divider, duration;
int delay;
int i, t, u;
char *s;
int i, t, u, v, z;
char *a, *c, *s;
static char message[LENGTH];
if (msg)
*(*msg=message)='\0';
for (i=0; i<MAXPROVIDER; i++) {
use[i]=UNKNOWN;
booked[i]=0;
variant[i]=UNKNOWN;
}
line=0;
if (conf && *conf) {
if ((stream=fopen(conf,"r"))==NULL) {
if (msg) snprintf (*msg=message, LENGTH, "Error: could not load rate configuration from %s: %s",
if (msg) snprintf (message, LENGTH, "Error: could not load rate configuration from %s: %s",
conf, strerror(errno));
return -1;
} else {
@ -267,19 +337,22 @@ int initRate(char *conf, char *dat, char **msg)
warning ("Invalid provider-number %d", prefix);
continue;
}
booked[prefix]=1;
while (isblank(*s)) s++;
if (*s != '=') {
warning ("expected '=', got '%s'!", s);
continue;
}
if (*s == '=') {
s++;
while (isblank(*s)) s++;
if (!isdigit(*s)) {
warning ("Invalid variant %s", s);
continue;
}
use[prefix] = strtol(s, &s, 10);
if ((v=strtol(s, &s, 10))<1) {
warning ("Invalid variant %s", s);
continue;
}
variant[prefix]=v;
while (isblank(*s)) s++;
}
if (*s) {
warning ("trailing junk '%s' ignored.", s);
}
@ -294,13 +367,13 @@ int initRate(char *conf, char *dat, char **msg)
}
if (!dat || !*dat) {
if (msg) snprintf (*msg=message, LENGTH, "Warning: no rate database specified!",
if (msg) snprintf (message, LENGTH, "Warning: no rate database specified!",
conf, strerror(errno));
return 0;
}
if ((stream=fopen(dat,"r"))==NULL) {
if (msg) snprintf (*msg=message, LENGTH, "Error: could not load rate database from %s: %s",
if (msg) snprintf (message, LENGTH, "Error: could not load rate database from %s: %s",
dat, strerror(errno));
return -1;
}
@ -320,8 +393,8 @@ int initRate(char *conf, char *dat, char **msg)
case 'P': /* P:nn[,v] Bezeichnung */
ignore = 0;
version = UNKNOWN;
zone = UNKNOWN;
v = UNKNOWN;
empty(&zones);
s+=2; while (isblank(*s)) s++;
if (!isdigit(*s)) {
@ -340,10 +413,13 @@ int initRate(char *conf, char *dat, char **msg)
warning ("Invalid variant '%c'", *s);
continue;
}
version = strtol(s, &s ,10);
if ((v=strtol(s, &s ,10))<1) {
warning ("Invalid variant %d", v);
continue;
}
if ((use[prefix]!=UNKNOWN) && (version!=UNKNOWN) && (use[prefix]!=version)) {
version = UNKNOWN;
}
if ((variant[prefix]!=UNKNOWN) && (v!=UNKNOWN) && (variant[prefix]!=v)) {
v = UNKNOWN;
ignore = 1;
continue;
}
@ -357,7 +433,9 @@ int initRate(char *conf, char *dat, char **msg)
warning ("Duplicate entry for provider %d (%s)", prefix, Provider[prefix].Name);
if (Provider[prefix].Name) free(Provider[prefix].Name);
}
Provider[prefix].Name=strdup(strip(s));
while (isblank(*s)) s++;
Provider[prefix].Name=*s?strdup(s):NULL;
Provider[prefix].booked=booked[prefix];
Provider[prefix].nZone=0;
Provider[prefix].Zone=NULL;
Providers++;
@ -371,54 +449,101 @@ int initRate(char *conf, char *dat, char **msg)
if (ignore) continue;
break;
case 'I': /* I:nnn Internet-Zugangsnummer */
warning ("Obsolete entry '%c'", *s);
break;
case 'Z': /* Z:n[-n] Bezeichnung */
case 'Z': /* Z:n[-n][,n] Bezeichnung */
if (ignore) continue;
if (prefix == UNKNOWN) {
warning ("Unexpected tag '%c'", *s);
break;
}
s+=2; while (isblank(*s)) s++;
s+=2;
empty(&zones);
while (1) {
while (isblank(*s)) s++;
if (!isdigit(*s)) {
warning ("Invalid zone '%c'", *s);
empty(&zones);
break;
}
zone1=strtol(s,&s,10);
while (isblank(*s)) s++;
if (*s=='-') {
s++; while (isblank(*s)) s++;
if (!isdigit(*s)) {
warning ("Invalid zone '%c'", *s);
empty(&zones);
break;
}
zone2=strtol(++s,&s,10);
if (zone2<zone1) {
i=zone2; zone2=zone1; zone1=i;
}
for (i=zone1; i<=zone2; i++)
push (&zones, i);
} else {
push (&zones, zone1);
}
while (isblank(*s)) s++;
if (*s==',') {
s++;
continue;
}
zone=strtol(s,&s,10);
if (zone>=Provider[prefix].nZone) {
Provider[prefix].Zone=realloc(Provider[prefix].Zone, (zone+1)*sizeof(ZONE));
for (i=Provider[prefix].nZone; i<zone; i++)
Provider[prefix].Zone[i].used=0;
Provider[prefix].nZone = zone+1;
break;
}
Provider[prefix].Zone[zone].used=1;
Provider[prefix].Zone[zone].Name=strdup(strip(s));
Provider[prefix].Zone[zone].nArea=0;
Provider[prefix].Zone[zone].Area=NULL;
Provider[prefix].Zone[zone].nHour=0;
Provider[prefix].Zone[zone].Hour=NULL;
if (!zones)
break;
zp=zones;
while (zp) {
z=pop(&zp);
if (z>=Provider[prefix].nZone) {
Provider[prefix].Zone=realloc(Provider[prefix].Zone, (z+1)*sizeof(ZONE));
for (i=Provider[prefix].nZone; i<z; i++)
Provider[prefix].Zone[i].used=0;
Provider[prefix].nZone = z+1;
}
Provider[prefix].Zone[z].used=1;
Provider[prefix].Zone[z].Name=*s?strdup(s):NULL;
Provider[prefix].Zone[z].nArea=0;
Provider[prefix].Zone[z].Area=NULL;
Provider[prefix].Zone[z].nHour=0;
Provider[prefix].Zone[z].Hour=NULL;
nZone++;
}
break;
case 'A': /* A:areacode[,areacode...] */
if (ignore) continue;
if (zone == UNKNOWN) {
if (!zones) {
warning ("Unexpected tag '%c'", *s);
break;
}
s+=2;
do {
Provider[prefix].Zone[zone].Area=realloc(Provider[prefix].Zone[zone].Area,
(Provider[prefix].Zone[zone].nArea+1)*sizeof(char*));
Provider[prefix].Zone[zone].Area[Provider[prefix].Zone[zone].nArea++]=strdup(str2set(&s));
} while (*s==',');
zp=zones;
while (zp) {
z=pop(&zp);
a=s;
while(1) {
if (*(c=strip(str2set(&a)))) {
Provider[prefix].Zone[z].Area=realloc(Provider[prefix].Zone[z].Area,
(Provider[prefix].Zone[z].nArea+1)*sizeof(char*));
Provider[prefix].Zone[z].Area[Provider[prefix].Zone[z].nArea++]=strdup(c);
} else {
warning ("Ignoring empty areacode");
}
if (*a==',') {
a++;
continue;
}
break;
}
}
s=a;
break;
case 'T': /* T:d-d/h-h=p/s:t[=]Bezeichnung */
if (ignore) continue;
if (zone == UNKNOWN) {
if (!zones) {
warning ("Unexpected tag '%c'", *s);
break;
}
@ -428,22 +553,29 @@ int initRate(char *conf, char *dat, char **msg)
while (1) {
while (isblank(*s)) s++;
if (*s=='*') { /* jeder Tag */
day |= 0x1ff; /* 111111111 */
day |= 1<<EVERYDAY;
s++;
} else if (*s=='W') { /* Wochentag 1-5 */
day |= 0x1f; /* 000011111 */
day |= 1<<WORKDAY;
s++;
} else if (*s=='E') { /* weekEnd */
day |= 0x80; /* 010000000 */
day |= 1<<WEEKEND;
s++;
} else if (*s=='H') { /* Holiday */
day |= 0x100; /* 100000000 */
day |= 1<<HOLIDAY;
s++;
} else if (isdigit(*s)) { /* 1 oder 1-5 */
day1=strtol(s,&s,10);
while (isblank(*s)) s++;
if (*s=='-') day2=strtol(++s,&s,10);
else day2=day1;
if (*s=='-') {
s++; while (isblank(*s)) s++;
if (!isdigit(*s)) {
warning ("invalid day '%s'", s);
day=0;
break;
}
day2=strtol(s,&s,10);
} else day2=day1;
if (day1<1 || day1>7) {
warning ("invalid day %d", day1);
day=0;
@ -454,8 +586,11 @@ int initRate(char *conf, char *dat, char **msg)
day=0;
break;
}
if (day2<day1) {
i=day2; day2=day1; day1=i;
}
for (i=day1; i<=day2; i++)
day|=(1<<(i-1));
day|=(1<<i);
} else {
warning ("invalid day '%c'", *s);
day=0;
@ -469,14 +604,14 @@ int initRate(char *conf, char *dat, char **msg)
break;
}
if (!day)
break;
if (*s!='/') {
warning ("expected '/', got '%s'!", s);
day=0;
}
if (!day)
break;
s++;
while (1) {
while (isblank(*s)) s++;
@ -517,21 +652,25 @@ int initRate(char *conf, char *dat, char **msg)
break;
}
if (!hour)
break;
if (*s!='=') {
warning ("expected '=', got '%s'!", s);
hour=0;
}
if (!hour)
break;
t=Provider[prefix].Zone[zone].nHour++;
Provider[prefix].Zone[zone].Hour = realloc(Provider[prefix].Zone[zone].Hour, (t+1)*sizeof(HOUR));
Provider[prefix].Zone[zone].Hour[t].Name=NULL;
Provider[prefix].Zone[zone].Hour[t].Day=day;
Provider[prefix].Zone[zone].Hour[t].Hour=hour;
Provider[prefix].Zone[zone].Hour[t].nUnit=0;
Provider[prefix].Zone[zone].Hour[t].Unit=NULL;
zp=zones;
while (zp) {
z=pop(&zp);
t=Provider[prefix].Zone[z].nHour++;
Provider[prefix].Zone[z].Hour = realloc(Provider[prefix].Zone[z].Hour, (t+1)*sizeof(HOUR));
Provider[prefix].Zone[z].Hour[t].Name=NULL;
Provider[prefix].Zone[z].Hour[t].Day=day;
Provider[prefix].Zone[z].Hour[t].Hour=hour;
Provider[prefix].Zone[z].Hour[t].nUnit=0;
Provider[prefix].Zone[z].Hour[t].Unit=NULL;
}
s++;
while (1) {
@ -583,12 +722,16 @@ int initRate(char *conf, char *dat, char **msg)
warning("last rate must not have a delay, will be ignored!");
delay=UNKNOWN;
}
t=Provider[prefix].Zone[zone].nHour-1;
u=Provider[prefix].Zone[zone].Hour[t].nUnit++;
Provider[prefix].Zone[zone].Hour[t].Unit=realloc(Provider[prefix].Zone[zone].Hour[t].Unit, (u+1)*sizeof(UNIT));
Provider[prefix].Zone[zone].Hour[t].Unit[u].Duration=duration;
Provider[prefix].Zone[zone].Hour[t].Unit[u].Delay=delay;
Provider[prefix].Zone[zone].Hour[t].Unit[u].Price=price/divider;
zp=zones;
while (zp) {
z=pop(&zp);
t=Provider[prefix].Zone[z].nHour-1;
u=Provider[prefix].Zone[z].Hour[t].nUnit++;
Provider[prefix].Zone[z].Hour[t].Unit=realloc(Provider[prefix].Zone[z].Hour[t].Unit, (u+1)*sizeof(UNIT));
Provider[prefix].Zone[z].Hour[t].Unit[u].Duration=duration;
Provider[prefix].Zone[z].Hour[t].Unit[u].Delay=delay;
Provider[prefix].Zone[z].Hour[t].Unit[u].Price=price/divider;
}
nHour++;
if (*s==',') {
s++;
@ -596,8 +739,13 @@ int initRate(char *conf, char *dat, char **msg)
}
break;
}
t=Provider[prefix].Zone[zone].nHour-1;
Provider[prefix].Zone[zone].Hour[t].Name=strdup(strip(s));
while (isblank(*s)) s++;
zp=zones;
while (zp) {
z=pop(&zp);
t=Provider[prefix].Zone[z].nHour-1;
Provider[prefix].Zone[z].Hour[t].Name=*s?strdup(s):NULL;
}
break;
case 'V': /* V:xxx Version der Datenbank */
@ -610,8 +758,9 @@ int initRate(char *conf, char *dat, char **msg)
}
}
fclose(stream);
empty(&zones);
if (msg) snprintf (*msg=message, LENGTH, "Rate Version %s loaded [%d Providers, %d Zones, %d Rates from %s]",
if (msg) snprintf (message, LENGTH, "Rate Version %s loaded [%d Providers, %d Zones, %d Rates from %s]",
Version, Providers, nZone, nHour, dat);
return 0;
@ -619,7 +768,7 @@ int initRate(char *conf, char *dat, char **msg)
char *getProvidername (int prefix)
{
if (prefix<0 || prefix>nProvider || !Provider[prefix].used) {
if (prefix<0 || prefix>=nProvider || !Provider[prefix].used) {
return NULL;
}
return Provider[prefix].Name;
@ -629,7 +778,7 @@ int getZone (int prefix, char *number)
{
int a,z;
if (prefix<0 || prefix>nProvider || !Provider[prefix].used) {
if (prefix<0 || prefix>=nProvider || !Provider[prefix].used) {
return UNKNOWN;
}
@ -637,7 +786,7 @@ int getZone (int prefix, char *number)
if (!Provider[prefix].Zone[z].used)
continue;
for (a=0; a<Provider[prefix].Zone[z].nArea; a++) {
if (strncmp(number, Provider[prefix].Zone[z].Area[a], strlen(Provider[prefix].Zone[z].Area[a]))==0)
if (strmatch(Provider[prefix].Zone[z].Area[a], number))
return z;
}
}
@ -647,11 +796,11 @@ int getZone (int prefix, char *number)
int getRate(RATE *Rate, char **msg)
{
static char message[LENGTH];
bitfield dayMask, hourMask;
bitfield hourBits;
ZONE *Zone;
HOUR *Hour;
UNIT *Unit;
int prefix, zone, day, hour, i;
int prefix, zone, hour, i;
time_t now, run, end;
struct tm tm;
@ -662,23 +811,24 @@ int getRate(RATE *Rate, char **msg)
return UNKNOWN;
prefix=Rate->prefix;
if (prefix<0 || prefix>nProvider || !Provider[prefix].used) {
if (msg) snprintf(*msg=message, LENGTH, "unknown provider %d", prefix);
if (prefix<0 || prefix>=nProvider || !Provider[prefix].used) {
if (msg) snprintf(message, LENGTH, "unknown provider %d", prefix);
return UNKNOWN;
}
zone=Rate->zone;
if (zone<1 || zone>=Provider[prefix].nZone || !Provider[prefix].Zone[zone].used) {
if (msg) snprintf(*msg=message, LENGTH, "unknown zone %d", zone);
if (msg) snprintf(message, LENGTH, "unknown zone %d", zone);
return UNKNOWN;
}
Zone=&Provider[prefix].Zone[zone];
Rate->Provider=Provider[prefix].Name;
Rate->Zone=Zone->Name;
Rate->Units=0;
Rate->Duration=0;
Rate->Basic=0;
Rate->Price=0;
Rate->Duration=0;
Rate->Units=0;
Rate->Charge=0;
Rate->Rest=0;
@ -693,30 +843,30 @@ int getRate(RATE *Rate, char **msg)
tm=*localtime(&now);
if (hour!=tm.tm_hour) { /* Neuberechnung bei Stundenwechsel */
hour=tm.tm_hour;
day=getDay(&tm, &Rate->Day);
dayMask=1<<(day-1);
hourMask=1<<tm.tm_hour;
hourBits=1<<tm.tm_hour;
for (i=0; i<Zone->nHour; i++) {
Hour = &Zone->Hour[i];
if ((Hour->Day & dayMask) && (Hour->Hour & hourMask))
if ((Hour->Hour & hourBits) && isDay(&tm, Hour->Day, &Rate->Day))
break;
}
if (i==Zone->nHour) {
if (msg) snprintf(*msg=message, LENGTH,
if (msg) snprintf(message, LENGTH,
"no rate found for provider=%d zone=%d day=%d hour=%d",
prefix, zone, day, tm.tm_hour);
prefix, zone, tm.tm_wday+1, tm.tm_hour);
return UNKNOWN;
}
Rate->Hour=Hour->Name;
Unit=Hour->Unit;
}
Rate->Duration=Unit->Duration;
Rate->Price=Unit->Price;
Rate->Duration=Unit->Duration;
Rate->Charge+=Unit->Price;
Rate->Rest+=Unit->Duration;
now+=Unit->Duration;
run+=Unit->Duration;
if (run==0 && Unit->Duration==0)
Rate->Basic=Unit->Price;
if (Unit->Duration>0)
Rate->Units++;
if (Unit->Delay!=UNKNOWN && Unit->Delay<=run)
@ -776,9 +926,35 @@ int guessZone (RATE *Rate, int units)
#endif
}
char *explainRate (RATE *Rate)
{
char p[BUFSIZ], z[BUFSIZ], d[BUFSIZ]="", h[BUFSIZ]="";
static char r[BUFSIZ];
if (Rate->Provider && *Rate->Provider)
strncpy (p, Rate->Provider, BUFSIZ);
else
snprintf (p, BUFSIZ, "010%02d", Rate->prefix);
if (Rate->Zone && *Rate->Zone)
snprintf (z, BUFSIZ, ", %s", Rate->Zone);
else
snprintf (z, BUFSIZ, ", Zone %d", Rate->zone);
if (Rate->Day && *Rate->Day)
snprintf (d, BUFSIZ, ", %s", Rate->Day);
if (Rate->Hour && *Rate->Hour)
snprintf (h, BUFSIZ, ", %s", Rate->Hour);
snprintf (r, BUFSIZ, "%s%s%s%s", p, z, d, h);
return r;
}
#ifdef STANDALONE
void main (int argc, char *argv[])
{
int z;
char *msg;
struct tm now;
@ -793,6 +969,12 @@ void main (int argc, char *argv[])
Rate.prefix = 1;
Rate.zone = 1;
if (argc>1) {
z=getZone(01, argv[1]);
printf("number <%s> is Zone <%d>\n", argv[1], z);
exit (0);
}
time(&Rate.start);
while (1) {
time(&Rate.now);
@ -800,16 +982,16 @@ void main (int argc, char *argv[])
printf ("Ooops: %s\n", msg);
else {
now=*localtime(&Rate.now);
printf ("%02d.%02d.%04d %02d:%02d:%02d %-5s %-12s %-12s %-12s %6.2f %7.3f %3d %6.2f %3ld %3ld\n",
printf ("%02d.%02d.%04d %02d:%02d:%02d %s %6.2f %7.3f %3d %6.2f %3ld %3ld\n",
now.tm_mday, now.tm_mon+1, now.tm_year+1900,
now.tm_hour, now.tm_min, now.tm_sec,
Rate.Provider, Rate.Zone, Rate.Day, Rate.Hour,
explainRate(&Rate),
Rate.Duration, Rate.Price, Rate.Units, Rate.Charge, Rate.Time, Rate.Rest);
LCR=Rate;
if (getLeastCost(&LCR,-1)!=UNKNOWN) {
printf ("least cost would be: %-5s %-12s %-12s %-12s %6.2f %7.3f %3d %6.2f %3ld %3ld\n",
LCR.Provider, LCR.Zone, LCR.Day, LCR.Hour,
printf ("least cost would be: %s %6.2f %7.3f %3d %6.2f %3ld %3ld\n",
explainRate(&LCR),
LCR.Duration, LCR.Price, LCR.Units, LCR.Charge, LCR.Time, LCR.Rest);
}
}

View File

@ -19,6 +19,30 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.4 1999/04/10 16:36:42 akool
* isdnlog Version 3.13
*
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
*
* You have to do the following to test this version:
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
*
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
* "/etc/isdn/callerid.conf" file:
*
* [ISDNLOG]
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
* RATEFILE = /usr/lib/isdn/rate-de.dat
* RATECONF = /etc/isdn/rate.conf
*
* Please replace any "de" with your country code ("at", "ch", "nl")
*
* Good luck (Andreas Kool and Michael Reinelt)
*
* Revision 1.3 1999/03/24 19:39:03 akool
* - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/
@ -59,8 +83,9 @@ typedef struct {
char *Zone; /* Name der Zone */
char *Day; /* Wochen- oder Feiertag */
char *Hour; /* Bezeichnung des Tarifs */
double Duration; /* Länge eines Tarifimpulses */
double Basic; /* Grundpreis einer Verbindung */
double Price; /* Preis eines Tarifimpulses */
double Duration; /* Länge eines Tarifimpulses */
int Units; /* verbrauchte Tarifimpulse */
double Charge; /* gesamte Verbindungskosten */
time_t Time; /* gesamte Verbindungszeit */
@ -74,5 +99,6 @@ int getZone(int prefix, char *num);
int getRate(RATE *Rate, char **msg);
int getLeastCost(RATE *Rate, int skip);
int guessZone (RATE *Rate, int units);
char *explainRate (RATE *Rate);
#endif

View File

@ -19,6 +19,30 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.23 1999/04/10 16:36:46 akool
* isdnlog Version 3.13
*
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
*
* You have to do the following to test this version:
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
*
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
* "/etc/isdn/callerid.conf" file:
*
* [ISDNLOG]
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
* RATEFILE = /usr/lib/isdn/rate-de.dat
* RATECONF = /etc/isdn/rate.conf
*
* Please replace any "de" with your country code ("at", "ch", "nl")
*
* Good luck (Andreas Kool and Michael Reinelt)
*
* Revision 1.22 1999/04/03 12:47:45 akool
* - isdnlog Version 3.12
* - "%B" tag in ILABEL/OLABEL corrected
@ -585,7 +609,7 @@ char *vnum(int chan, int who)
flag |= C_NO_ERROR;
#endif
if ((call[chan].sondernummer[who] != UNKNOWN) || call[chan].intern[who] || call[chan].internetnumber[who]) {
if ((call[chan].sondernummer[who] != UNKNOWN) || call[chan].intern[who]) {
strcpy(call[chan].rufnummer[who], call[chan].num[who]);
if (cnf > -1)
@ -596,19 +620,52 @@ char *vnum(int chan, int who)
else
strcpy(retstr[retnum], sondernummername(call[chan].sondernummer[who]));
}
else if (call[chan].internetnumber[who])
sprintf(retstr[retnum], "INTERNET %s", call[chan].num[who]);
else
sprintf(retstr[retnum], "TN %s", call[chan].num[who]);
return(retstr[retnum]);
}
else {
if ((ptr = get_areacode(call[chan].num[who], &ll, flag)) != 0) {
strcpy(call[chan].area[who], ptr);
l = ll;
got++;
} /* if */
if (!memcmp(call[chan].num[who], countryprefix, strlen(countryprefix))) { /* Ausland */
auto FILE *f = fopen("/usr/lib/isdn/ausland.dat", "r");
register char *p, *p1;
auto char s[BUFSIZ];
if (f != (FILE *)NULL) {
while (fgets(s, BUFSIZ, f)) {
if ((p = strchr(s, ':'))) {
*p = 0;
if (!memcmp(call[chan].num[who], s, strlen(s))) {
if ((p1 = strchr(p + 1, '\n')))
*p1 = 0;
strcpy(call[chan].areacode[who], s);
strcpy(call[chan].rufnummer[who], call[chan].num[who] + strlen(s));
*call[chan].vorwahl[who] = 0;
strcpy(call[chan].area[who], p + 1);
sprintf(retstr[retnum], "%s %s, %s",
call[chan].areacode[who],
call[chan].rufnummer[who],
call[chan].area[who]);
fclose(f);
return(retstr[retnum]);
} /* if */
} /* if */
} /* while */
fclose(f);
} /* if */
} /* if */
if ((ptr = get_areacode(call[chan].num[who], &ll, flag)) != 0) {
strcpy(call[chan].area[who], ptr);
l = ll;
got++;
} /* if */
} /* else */
if (l > 1) {

View File

@ -20,6 +20,30 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log$
* Revision 1.35 1999/04/10 16:36:48 akool
* isdnlog Version 3.13
*
* WARNING: This is pre-ALPHA-dont-ever-use-Code!
* "tarif.dat" (aka "rate-xx.dat"): the next generation!
*
* You have to do the following to test this version:
* cp /usr/src/isdn4k-utils/isdnlog/holiday-de.dat /etc/isdn
* cp /usr/src/isdn4k-utils/isdnlog/rate-de.dat /usr/lib/isdn
* cp /usr/src/isdn4k-utils/isdnlog/samples/rate.conf.de /etc/isdn/rate.conf
*
* After that, add the following entries to your "/etc/isdn/isdn.conf" or
* "/etc/isdn/callerid.conf" file:
*
* [ISDNLOG]
* SPECIALNUMBERS = /usr/lib/isdn/sonderrufnummern.dat
* HOLIDAYS = /usr/lib/isdn/holiday-de.dat
* RATEFILE = /usr/lib/isdn/rate-de.dat
* RATECONF = /etc/isdn/rate.conf
*
* Please replace any "de" with your country code ("at", "ch", "nl")
*
* Good luck (Andreas Kool and Michael Reinelt)
*
* Revision 1.34 1999/04/03 12:47:50 akool
* - isdnlog Version 3.12
* - "%B" tag in ILABEL/OLABEL corrected
@ -439,24 +463,24 @@
#define SONDERNUMMER -2 /* FIXME: set by readconfig(), but unused by now */
#define INTERN 0
#define CITYCALL 1
#define REGIOCALL 2
#define GERMANCALL 3
#define C_NETZ 4
#define FREECALL 0
#define LOCALCALL 1
#define CITYCALL 2
#define REGIOCALL 3
#define GERMANCALL 4
#define C_MOBILBOX 5
#define D1_NETZ 6
#define D2_NETZ 7
#define E_PLUS_NETZ 8
#define E2_NETZ 9
#define EURO_CITY 10
#define EURO_1 11
#define EURO_2 12
#define WELT_1 13
#define WELT_2 14
#define WELT_3 15
#define WELT_4 16
#define INTERNET 17
#define GLOBALCALL 18
#define C_NETZ 6
#define D1_NETZ 7
#define D2_NETZ 8
#define E_PLUS_NETZ 9
#define E2_NETZ 10
#define EURO_CITY 11
#define EURO_1 12
#define EURO_2 13
#define WELT_1 14
#define WELT_2 15
#define WELT_3 16
#define WELT_4 17
/* Fixme: this is specific to Germany */
#define DTAG 33
@ -719,7 +743,7 @@ typedef struct {
char vnum[MAXMSNS][256];
int provider;
int sondernummer[MAXMSNS];
int internetnumber[MAXMSNS];
int local[MAXMSNS];
int intern[MAXMSNS];
char id[32];
char usage[16];