rate-files - Format of rate-files
The rate-files used by isdnlog(8) and by isdnrate(1) are textfiles
defining the telephone fees for different destinations at certain
dates/times for all providers of one country.
The rate-files have the following overall layout:
Comments starting with a hash-sign ’#’ and empty lines are ignored. The
first letter (tag) followed by a colon separates the entries.
Additional white space may be used after the tags to group content more
includefile get’s substituted at the current position. There are
two possibilities. In the rate source file (which is prepared by
pp_rate) a small i puts the contents of the include file in
the outputfile. An I-Tag means, for the preprocessor, write a
new output file (the includefile) and leave the tag in the rate-
files. This is for real include files.
Includes may be nested twice. The filename should not contain
any paths (except for ’i’ of course), they are taken relative to
their parent file.
e.g. V:1.0-Germany [18-Mar-1999]
This defines telephone services with special numbers. Special
numbers are numbers which a) start with no ’0’ or b) can not be
dialed with every provider. A number with a variable length
should have the wildcard ’*’ at the end, eg. 07189* which
matches all numbers starting with 07189. Numbers with wildcards
should be placed after numbers which would match the wildcard,
because matching is done straight top down. There may be
multiple N: tags for one telephone service.
If the first char of currencyfmt is ^, the amount is multiplied
by 100 before it is displayed without leading ^.
e.g. (one of these, ¢ = cent)
X:num_wildcard = provider[zZone] [,...]
Define exception. If a certain number is always routed to a
certain provider and not to the preselected provider, you should
use this tag.
e.g. in Austria, online service numbers 194x or 07189 go always
via Telekom, ignoring your preselection:
X: 194*=1z6 # Provider 1 Zone 6
A new provider starts always with a P: tag and consists of a
Providerheader followed by Providerzones.
P:[daterange] providernumber providername
daterange is [[fromDate][-toDate]]
This defines a time range for the validity of rates for this
provider. Dates have to be numeric in format dd.mm.yyyy. Note:
as time is assumed as 00:00, take for toDate the day+1. The
daterange has to be enclosed in square brackets. Either fromDate
or -toDate or both may be given.
The providernumber may be a simple number, normally the last
digits of the VBN-number, or providernumber,variant if a
provider has different connection fees.
P:[01.01.1999] 1,1 Telekom Minimumfee
VBN-Number for provider
This is the number to select this provider and depends on your
COMMENT may be an arbitrary string, but the following entries are used
C:Maintainer: Who did the hard work
C:TarifChanged: and when
C:Homepage: http:URL for provider
C:TarifURL: URL for tarif info
C:Telefon: Telefon number
C:Telefax: Fax number
C:Hotline: Telefon number
C:Zone: Textual info about zones
C:GT: Additional charge text
C:GF: Additional charge formula
If there are multiple comments with the same comment name, they get
appended separated by a newline char.
Name of zone file (inserted for %s in ZONEFILE = /usr/lib/isdn/zone-
CC-%s.dat from isdn.conf)
e.g. D:1001 # zone file is zone-at-1001.gdbm
Note: if the provider has no different domestic zones, you should not
define a D:tag.
A Providerzone entry starts with a Z: tag followed by one or more A:
and T: tags.
A zone is a region of areas, for which the same rates apply. Domestic
and foreign zones should not be mixed and all foreign zones should
follow domestic zones.
R:prov, sub ; zonelist
Read zones from provider prov subprovider number sub. A zonelist is
defined below. If the referenced provider doesn’t have a subprovider
number, the sub must be -1. The referenced provider may be defined
before or after the R:-tag. The referenced zones must be real
Z:-entries, not references themself. The zone numbers and names are
taken from the referenced provider. The last to_zone may be missing
then all zones from the start zone are used.
R:1,1 ; 1-4,6, 10-
There some limitations:
The reference cannot be more exact than the referenced providerzones.
R:42,0;1 will not work as desired if P:42,0 defines Z:1-4.
It is not possible to reference a providerzone without areas when the
default domestic zone (with your countrycode as area) is not included
in the same range of referenced zones. This applies mainly to zones
for different distances in the national fixed network, e.g. Z:1-3 in
r:prov, sub ; start_zone-
This tag is related to the R:-tag. It is interpreted by the rate-
preprocessor pp_rate. All providerzones with a zone number greater or
equal start_zone are copied from provider prov[,sub] and replace the
r:-tag. If an area is already used in a previous providerzone of the
current provider, it will not be copied. If all areas of a
providerzone are already defined, the entire zone will not be copied.
Lines that contain only comments are also not copied, but comments at
the end of other lines are.
This tag is designed for providers with a rate variant that offers
different fees for some foreign destinations.
where zonelist is zone[-to_zone][,...]
e.g. Z:1-2,4 Interior
area may be a telephone number (including +countrycode for numbers
which may be reached from everywhere, a telephone number without
+countrycode for numbers only reachable in the own country) or an area
name or alias as defined in country.dat. Country names have to be
translated to their code by the rate-preprocessor pp_rate.
e.g. A:19430,07189 # Online
e.g. A:+31,Belgium # Int 1
Note: There should always be exactly one zone with your countrycode or
Countrynames like Belgium in the above example are replaced by their
ISO-Code (or TLD) with the rate preprocessor pp_rate.
where daterange is [[fromDate][-toDate]] like the corresonding provider
entry. Note that the daterange is enclosed in sqare brackets, either
fromDate or -toDate are optional.
daylist is day[-day][,...] and day is a daynumber (1=Mon, 2=Tue, ...)
or W (workday, Monday to Friday), E (weekend), H (holiday) or *
(everyday). If more than one of these days match a given date, the
following order of priority (highest first) applies: H 7 .. 1 E W *.
timelist is hour[-hour][,hour] where hour is a number 0..23 or * for
After daylist/timelist follows = or != which means, provider doesn’t
adjust rates on a rate boundary e.g. at 18h00.
A chargelist consists of
where MinCharge| is an (optional) minimum charge, Charge the rate per
Duration seconds or optional rate per (Divider) seconds, Duration is
the length of one charge unit in seconds. After Delay the next duration
is taken. If delay is not given it equals to the duration. The last
duration may not have a delay and may not be zero.
Monday until Thursday, daytime the charge is 1.50 per minute,
first charge is for one minute after this charging is calculated
in seconds interval.
On workdays, night, charge is the bigger of 1.20 per minute or
Everyday, everytime there is a connection fee of 0.50, then
charge is 1 per minute.
On holidays, everytime a charge of 0.5 per minute in a minutes
interval, after 10 minutes 0.5 per half minute in half a minutes
Everyday, everytime the charge is 1.30 independent of duration,
which could also be written as T:*/*=1.3|0/1.
T: [-01.02.2000] */17-19=0.79(60)/60/1 Happy Hour
T: [-01.02.2000] */19-17=0.90(60)/60/1 Normal
Until the first of Feb 0:00h (i.e. end is 31.1.2000 24:00),
everyday between 17 and 19h a charge of 0.79 per minute, the
first minute is always charged fully, after this, charging is
calculated in seconds interval.
The second entry defines a charge of 0.90 in the time outside
the happy hour.
Like above, but a full date range is given.
The next two t:-tags are interpreted by pp_rate and replaced by one or
more T:-lines. Both methods can be used together.
This line is replaced by according T:-lines for not yet defined
If a daterange is given, only previous T:-lines without a daterange or
with the same daterange will be considered as earlier definitions. If
H is noted, definitions will also be added for holidays.
T:W/08-18=0.10/60 normal time
t:?H=0.04/60 save time
This lines will lead to the following lines after pp_rate:
T:W/08-18=0.10/60 normal time
T:W/18-08=0.04/60 save time
T:E,H/*=0.04 save time
Generates T:-lines for daterange by copying previous T:-lines with
srcrange in the same zone. If a chargename is given, it will replace
the chargename of the originating line. srcrange can be shortened as
long as it remains definite.
T:[-24.12.2003]W/*=0.08/60 on workdays
T:[24.12.2003-25.12.2003]*/*=0.04 Christmas Eve
t:[31.12.2003-01.01.2004]=[24.12.] New Year’s Eve
This will be transformed into:
T:[-24.12.2003]W/*=0.08/60 on workdays
T:[24.12.2003-25.12.2003]*/*=0.04/60 Christmas Eve
T:[25.12.2003-31.12.2003]W/*=0.08/60 on workdays
T:[31.12.2003-01.01.2004]=0.04/60 New Years’ Eve
T:[01.01.2004]W/*=0.08/60 on workdays
isdnlog(8), isdnrate(1), rate.conf(5), isdnlog/README, rate-at.dat
Leopold Toetsch <firstname.lastname@example.org> (of this man page of course). Tobias
Becker <email@example.com> added the tags r: and t:.
-lt- 2005/02/23 rate-files(5)