NAME¶
rate-files - Format of rate-files
DESCRIPTION¶
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:
Header entries
Provider entries
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 readably.
Special entries¶
I:includefile
i:includefile
- 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.
V:versionsstring
- e.g. V:1.0-Germany [18-Mar-1999]
S:Servicename
N:Servicenumber[,Servicenumber...]
- 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.
- e.g.
S:Internet
N:07189*,19430
N:19440
U:currencyfmt currency
- 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)
U:%.3f EUR
U:^%.3f ¢
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*=1,07189*=1
or
X: 194*=1z6 # Provider 1 Zone 6
Provider entries¶
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.
e.g.
P:02 UTA
or
P:[01.01.1999] 1,1 Telekom Minimumfee
B:vbn
VBN-Number for provider
- e.g. B:1002
This is the number to select this provider and depends on your country.
C:COMMENT: comment
COMMENT may be an arbitrary string, but the following entries are used
already:
-
C:Name: |
Providername |
C:Maintainer: |
Who did the hard work |
C:TarifChanged: |
and when |
C:Address: |
Provideraddress |
C:Homepage: |
http:URL for provider |
C:TarifURL: |
URL for tarif info |
C:EMail: |
EMail-Address |
C:Telefon: |
Telefon number |
C:Telefax: |
Fax number |
C:Hotline: |
Telefon number |
C:Zone: |
Textual info about zones |
C:Special: |
Guess |
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.
D:zone
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.
Providerzones¶
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.
e.g.
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 Germany.
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.
Z:zonelist zonename
where
zonelist is
zone[
-to_zone][
,...]
- e.g. Z:1-2,4 Interior
A:area[
,area...]
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
countryname respectively:
- Z:4
A:+49
T:...
Countrynames like
Belgium in the above example are replaced by their
ISO-Code (or TLD) with the rate preprocessor
pp_rate.
T:[
daterange]
daylist/timelist[
!]
=chargelist
chargename
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 everytime.
After
daylist/timelist follows
= or
!= which means,
provider doesn't adjust rates on a rate boundary e.g. at 18h00.
A
chargelist consists of
[
MinCharge|]
Charge[
(Divider)]
/Duration[
:Delay][
/Duration...]
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.
- EXAMPLES
T:1-4/8-18=1.5(60)/60/1 workday
- 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.
- T:W/18-8=0.30|1.2(60)/1 night
- On workdays, night, charge is the bigger of 1.20 per minute
or 0.30
- T:*/*=0.50/0,1(60)/1 always
- Everyday, everytime there is a connection fee of 0.50, then
charge is 1 per minute.
- T:H/*=0.5/60:600,0.5/30 holidays
- 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
interval.
- T:*/*=1.3/0,0/1
- 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.
- T:[15.11.1999-01.02.2000]*/17-19=0.79(60)/60/1 HH
- 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.
t:[daterange]?[H]=chargelist chargename
This line is replaced by according T:-lines for not yet defined
day/hour
pairs.
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.
- EXAMPLE
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
t:daterange=srcrange [chargename]
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.
- EXAMPLE
T:[-24.12.2003]W/*=0.08/60 on workdays
T:[-24.12.2003]E,H/*=0.06 weekend
T:[24.12.2003-25.12.2003]*/*=0.04 Christmas Eve
t:[25.12.2003-31.12.2003]=[-24.12.2003]
t:[31.12.2003-01.01.2004]=[24.12.] New Year's Eve
t:[01.01.2004]=[-24.12.]
- This will be transformed into:
- T:[-24.12.2003]W/*=0.08/60 on workdays
T:[-24.12.2003]E,H/*=0.06/60 weekend
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:[25.12.2003-31.12.2003]E,H/*=0.06/60 weekend
T:[31.12.2003-01.01.2004]=0.04/60 New Years' Eve
T:[01.01.2004]W/*=0.08/60 on workdays
T:[01.01.2004]E,H/*=0.06/60 weekend
SEE ALSO¶
isdnlog(8),
isdnrate(1),
rate.conf(5), isdnlog/README,
rate-at.dat
AUTHOR¶
Leopold Toetsch <lt@toetsch.at> (of this man page of course). Tobias
Becker <tobiasb@isdn4linux.de> added the tags r: and t:.