233 lines
8.6 KiB
C
233 lines
8.6 KiB
C
/* $Id: rate.h,v 1.17 1999/12/01 21:47:25 akool Exp $
|
||
*
|
||
* Tarifdatenbank
|
||
*
|
||
* Copyright 1995, 1999 by Andreas Kool (akool@isdn4linux.de)
|
||
*
|
||
* This program is free software; you can redistribute it and/or modify
|
||
* it under the terms of the GNU General Public License as published by
|
||
* the Free Software Foundation; either version 2, or (at your option)
|
||
* any later version.
|
||
*
|
||
* This program is distributed in the hope that it will be useful,
|
||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
* GNU General Public License for more details.
|
||
*
|
||
* You should have received a copy of the GNU General Public License
|
||
* along with this program; if not, write to the Free Software
|
||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||
*
|
||
* $Log: rate.h,v $
|
||
* Revision 1.17 1999/12/01 21:47:25 akool
|
||
* isdnlog-3.72
|
||
* - new rates for 01051
|
||
* - next version of isdnbill
|
||
*
|
||
* - isdnlog/tools/telnum.c ... cleanup
|
||
* - isdnlog/tools/isdnrate.c ... -s Service
|
||
* - isdnlog/tools/rate.{c,h} ... -s
|
||
* - isdnlog/tools/NEWS ... -s
|
||
* - doc/isdnrate.man .. updated -o, -s
|
||
* - doc/rate-files.man ... updated
|
||
* - isdnlog/tools/dest/README.makedest ... updt.
|
||
* - isdnlog/isdnlog/isdnlog.8.in .. updt.
|
||
*
|
||
* Telrate
|
||
* - isdnlog/tools/telrate/README-telrate
|
||
* - isdnlog/tools/telrate/config.in NEW
|
||
* - isdnlog/tools/telrate/configure NEW
|
||
* - isdnlog/tools/telrate/Makefile.in NEW
|
||
* - isdnlog/tools/telrate/index.html.in was index.html
|
||
* - isdnlog/tools/telrate/info.html.in was info.html
|
||
* - isdnlog/tools/telrate/telrate.cgi.in was telrate.cgi
|
||
* - isdnlog/tools/telrate/leo.sample NEW sample config
|
||
* - isdnlog/tools/telrate/alex.sample NEW sample config
|
||
*
|
||
* Revision 1.16 1999/11/25 22:58:40 akool
|
||
* isdnlog-3.68
|
||
* - new utility "isdnbill" added
|
||
* - patch from Jochen Erwied (j.erwied@gmx.de)
|
||
* - new rates
|
||
* - small fixes
|
||
*
|
||
* Revision 1.15 1999/11/08 21:09:41 akool
|
||
* isdnlog-3.65
|
||
* - added "B:" Tag to "rate-xx.dat"
|
||
*
|
||
* Revision 1.14 1999/11/07 13:29:29 akool
|
||
* isdnlog-3.64
|
||
* - new "Sonderrufnummern" handling
|
||
*
|
||
* Revision 1.13 1999/09/26 10:55:20 akool
|
||
* isdnlog-3.55
|
||
* - Patch from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
|
||
* added hup3 to option file
|
||
* - changed country-de.dat to ISO 3166 Countrycode / Airportcode
|
||
*
|
||
* Revision 1.12 1999/09/09 11:21:06 akool
|
||
* isdnlog-3.49
|
||
*
|
||
* Revision 1.11 1999/08/25 17:07:18 akool
|
||
* isdnlog-3.46
|
||
*
|
||
* Revision 1.10 1999/06/28 19:16:51 akool
|
||
* isdnlog Version 3.38
|
||
* - new utility "isdnrate" started
|
||
*
|
||
* Revision 1.9 1999/06/15 20:05:16 akool
|
||
* isdnlog Version 3.33
|
||
* - big step in using the new zone files
|
||
* - *This*is*not*a*production*ready*isdnlog*!!
|
||
* - Maybe the last release before the I4L meeting in Nuernberg
|
||
*
|
||
* Revision 1.8 1999/05/22 10:19:30 akool
|
||
* isdnlog Version 3.29
|
||
*
|
||
* - processing of "sonderrufnummern" much more faster
|
||
* - detection for sonderrufnummern of other provider's implemented
|
||
* (like 01929:FreeNet)
|
||
* - Patch from Oliver Lauer <Oliver.Lauer@coburg.baynet.de>
|
||
* - Patch from Markus Schoepflin <schoepflin@ginit.de>
|
||
* - easter computing corrected
|
||
* - rate-de.dat 1.02-Germany [22-May-1999 11:37:33] (from rate-CVS)
|
||
* - countries-de.dat 1.02-Germany [22-May-1999 11:37:47] (from rate-CVS)
|
||
* - new option "-B" added (see README)
|
||
* (using "isdnlog -B16 ..." isdnlog now works in the Netherlands!)
|
||
*
|
||
* Revision 1.7 1999/05/13 11:40:07 akool
|
||
* isdnlog Version 3.28
|
||
*
|
||
* - "-u" Option corrected
|
||
* - "ausland.dat" removed
|
||
* - "countries-de.dat" fully integrated
|
||
* you should add the entry
|
||
* "COUNTRYFILE = /usr/lib/isdn/countries-de.dat"
|
||
* into section "[ISDNLOG]" of your config file!
|
||
* - rate-de.dat V:1.02-Germany [13-May-1999 12:26:24]
|
||
* - countries-de.dat V:1.02-Germany [13-May-1999 12:26:26]
|
||
*
|
||
* Revision 1.6 1999/05/09 18:24:26 akool
|
||
* isdnlog Version 3.25
|
||
*
|
||
* - README: isdnconf: new features explained
|
||
* - rate-de.dat: many new rates from the I4L-Tarifdatenbank-Crew
|
||
* - added the ability to directly enter a country-name into "rate-xx.dat"
|
||
*
|
||
* Revision 1.5 1999/04/14 13:17:26 akool
|
||
* 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>)
|
||
*
|
||
* 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/
|
||
* - "holiday.c" and "rate.c" integrated
|
||
* - NetCologne rates from Oliver Flimm <flimm@ph-cip.uni-koeln.de>
|
||
* - corrected UUnet and T-Online rates
|
||
*
|
||
* Revision 1.2 1999/03/16 17:38:10 akool
|
||
* - isdnlog Version 3.07
|
||
* - Michael Reinelt's patch as of 16Mar99 06:58:58
|
||
* - fix a fix from yesterday with sondernummern
|
||
* - ignore "" COLP/CLIP messages
|
||
* - dont show a LCR-Hint, if same price
|
||
*
|
||
* Revision 1.1 1999/03/14 12:16:43 akool
|
||
* - isdnlog Version 3.04
|
||
* - general cleanup
|
||
* - new layout for "rate-xx.dat" and "holiday-xx.dat" files from
|
||
* Michael Reinelt <reinelt@eunet.at>
|
||
* unused by now - it's a work-in-progress !
|
||
* - bugfix for Wolfgang Siefert <siefert@wiwi.uni-frankfurt.de>
|
||
* The Agfeo AS 40 (Software release 2.1b) uses AOC_AMOUNT, not AOC_UNITS
|
||
* - bugfix for Ralf G. R. Bergs <rabe@RWTH-Aachen.DE> - 0800/xxx numbers
|
||
* are free of charge ;-)
|
||
* - tarif.dat V 1.08 - new mobil-rates DTAG
|
||
*
|
||
*/
|
||
|
||
#ifndef _RATE_H_
|
||
#define _RATE_H_
|
||
|
||
typedef struct {
|
||
int prefix; /* Providerkennung */
|
||
int zone; /* Zonennummer */
|
||
char *src[3]; /* eigene Telefonnummer [Land, Vorwahl, Nummer]*/
|
||
char *dst[3]; /* gerufene Nummer */
|
||
time_t start; /* Verbindungsaufbau */
|
||
time_t now; /* momentane Zeit */
|
||
int domestic; /* Inlandsverbindung */
|
||
int _area; /* interner(!) L<>nderindex */
|
||
int _zone; /* interner(!) Zonenindex */
|
||
char *Provider; /* Name des Providers */
|
||
char *Country; /* Landesname (Ausland) */
|
||
char *Zone; /* Name der Zone */
|
||
char *Service; /* Name des Dienstes (S:-Tag) */
|
||
char *Flags; /* Inhalt des F:-Tags */
|
||
char *Day; /* Wochen- oder Feiertag */
|
||
char *Hour; /* Bezeichnung des Tarifs */
|
||
double Basic; /* Grundpreis einer Verbindung */
|
||
double Sales; /* Mindestumsatz einer Verbindung */
|
||
double Price; /* Preis eines Tarifimpulses */
|
||
double Duration; /* L<>nge eines Tarifimpulses */
|
||
int Units; /* verbrauchte Tarifimpulse */
|
||
double Charge; /* gesamte Verbindungskosten */
|
||
double Rhythm[2]; /* Taktung */
|
||
time_t Time; /* gesamte Verbindungszeit */
|
||
time_t Rest; /* bezahlte, aber noch nicht verbrauchte Zeit */
|
||
int z; /* Zone lt. Verzonungstabelle (nur 1:Ortszone; 2:City/Regio 20; 3=Regio 50; 4=Fern sinnvoll!) */
|
||
} RATE;
|
||
|
||
#define UNZONE -2
|
||
|
||
void exitRate(void);
|
||
int initRate(char *conf, char *dat, char *dom, char **msg);
|
||
char *getProvider(int prefix);
|
||
int getSpecial(char *number);
|
||
char* getSpecialName(char *number);
|
||
char *getServiceNum(char *name);
|
||
char *getComment(int prefix, char *key);
|
||
void clearRate (RATE *Rate);
|
||
int getRate(RATE *Rate, char **msg);
|
||
int getLeastCost(RATE *Current, RATE *Cheapest, int booked, int skip);
|
||
int getZoneRate(RATE* Rate, int domestic, int first);
|
||
char *explainRate (RATE *Rate);
|
||
char *printRate (double value);
|
||
|
||
int pnum2prefix(int pnum, time_t when);
|
||
int pnum2prefix_variant(char * pnum, time_t when);
|
||
int vbn2prefix(char *vbn, int *len);
|
||
inline int getNProvider( void );
|
||
/* char *prefix2provider(int prefix, char *s) is defined in telnum.h */
|
||
char *prefix2provider_variant(int prefix, char *s);
|
||
int isProviderValid(int prefix, time_t when);
|
||
inline int isProviderBooked( int i);
|
||
#endif
|