Hallo,
-----Original Message-----
From: Michael Reinelt <    >
To: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
Date: Mittwoch, 26. Mai 1999 12:18
Subject: Re: Verzonungstabellen

>getZone() ist schlecht, das gibt es schon.
>* Schnittstelle: initZone(int provider, char *path, char**message)
>                 exitZone(int provider)
>                 getZone(int provider, char *from, char *to)
>
ausserdem kann man das umtaufen:

initInlandsZone()
exitInlandsZone()
getInlandsZone()
returns 0=ok, -1=error

da die Routinen mit Ausland sowieso nichts am Hut haben.

>* wie du das intern machst, d.h. ob du die Tabellen in den Speicher
>einliest oder die Dateien offenh�ltst ist mir egal.

Im Speicher ist trotz Reduktion IMHO nicht sinnig

dzt. Filegroessen:
Land    Format    Size
AT    txt    150K
AT    db    140K
DE    txt    1.8M
DE    db    870K

Die db verwendet GDBM und hat dzt. folgende Eintrage:
8bit Zone 24 bit Nummer, Schluessel ist zoneart (8bit)+ Nummer(24bit)

Die txt Datei  besteht aus Zeilen:
von zu zone

Mit einer Beschraenkung auf 16bit pro Nummer im Datenteil wuerde das noch
etwas kleiner werden. Das koennte pro Datensatz mit einem Flag
mitgespeichert werden. Der Schluessel bleibt sicherheitshalber auf 24
bit/Nummer.

>* getZone liefert UNKNOWN, wenn keine Verzonung f�r diesen Provider
>vorliegt.

= -1

>* initZone() wird f�r jede Verzonungstabelle aufgerufen, wir haben dann
>auch entsprechend viele Hinweise im syslog (die kommen vom **message)

oder fuer jeden Provider?

>
>* initZone() wird von initRate() f�r jeden Provider (der eine verzonung
>hat) aufgerufen, damit �ndert sich an der Schnittstelle zur rate.c
>nichts, d.h. zone.c bleibt komplett hinter rate.c verborgen.
>
>* Wie verwalten wir den Fall, da� mehrere Provider dieselbe Verzonung
>verwenden? Ich m�chte keine zus�tzliche Datei mehr haben, und ich m�chte
>auch die einzelnen Verzonungstabellen nicht mischen. Eine bestimmte
>Verzonung ist eine Datei. Vorschlag: Ein neues Tag in der rate-xx.dat,
>das angibt, welche Verzonung zu verwenden ist (aber auf jeden Fall ohne
>Pfad!). Dann wird �ber einen Eintrag "ZONEFILE" in der isdn.conf der
>Pfad zur Datei ermittelt und initZone() aufgerufen. Dabei kann es
>passieren, da� initZone() f�r eine Datei zweimal aufgerufen wird
>(allerdings mit verschiedenen Providern). initZone k�nnte das ja
>feststellen (indem es sich den Pfad f�r jede Verzonung merkt) und intern
>nur einen Verweis speichern. Mit dieser Variante w�ren auch symbolische
>Namen f�r Verzonungen m�glich:

Gefaellt mir nicht so gut - ich bin fuer eine einzige Verzonungsdatei (nur
ein Dateihandle offen).
Dzt. ist die Verzonungsart im Schluessel drin. d.h. wir braeuchten eine
Umsetzung
Provider -> Verzonungsart
also
Variante 1)

initInlandsZone(int provider, char *path, char**message)
setProviderZoneArt(int provider, int zoneart)
bzw in einem:
initInlandsZone(int provider, int zoneart, char *path, char**message)
getInlandsZone(int provider, char *from, char *to)

oder die Umsetzung ist extern:

Variante 2)
getInlandsZone(int zoneart, char *from, char *to)

Variante 3)
oder die Zuordnung geht ueber ein Hilfsprogramm, das bei der Erstellung der
Zonenfiles die tarif-xx.dat liest und die Zuordnung Provider->Verzonungsart
in der Verzonungstabelle mitabspeichert.


>ZONEFILE=/usr/lib/isdn/zone-at-%z.dat
>
>P:01 Telekom Austria
>X:pta
>
>P:02 Junk
>X:pta
>
>P:03 Juhu
>X:flat

"flat" sollte der Einfachheit halber speziell (i.e. nicht ueber eine
Zonentabelle)
behandelt werde.
Das selbe gilt fuer Ortszone (da getInlandszone nicht weiss, was beim
jeweiligen Provider dir Ortszone ist).


>
>Fragen:
>* wie nennen wir das X:-Tag? (Z: ist leider schon vergeben)

Spricht was gegen ein kleines 'z' ?

"Verzonungsart"

>* bezieht sich das X:-Tag direkt auf den symbolischen Namen oder auf die
>Providernummer (X:01 = verwende die Verzonung von Provider 01)
>* sind mehrere Indirektionen m�glich? (P:03 verwendet die Verzonung von
>P:02, welcher die Verzonung von P:01 verwendet)


Fortlaufende Numerierung oder noch einfacher Providernummer, ev. eine
Indirektion

P:01 Telekom Austria
z:01

P:02 Junk
z:01

oder:

P:02 Junk
z:P01 # verwende Z. von Provider 01

***Und der Provider Junk muss die selben Z:-Eintraege in der rate-at.dat
haben wie der Provider P01, was dzt. ev. nicht der Fall ist, oder
Michael?***

leo




_______________________________________________
Rates4linux-devel mailing list
[EMAIL PROTECTED]
http://lists.SourceForge.net/mailman/listinfo/rates4linux-devel

Antwort per Email an