Eine WAN-Richtlinie enthält Regeln, die die Entstehung von eDirectoryTM-Verkehr steuern. Die Regeln bestehen aus Text, der als ein eDirectory-Eigenschaftswert auf einem NetWare®-Serverobjekt, einem LAN-Bereichsobjekt oder auf beidem gespeichert ist.
Eine WAN-Richtlinie ist in drei Abschnitte unterteilt: Deklaration, Selektor und Provider.
Struktur der WAN-Richtlinien
Deklarationsabschnitt
Der Deklarationsabschnitt einer Richtlinie enthält Definitionen von lokalen Variablen sowie von Variablen, die durch eine Anforderung des Client eingehen. Diese Definitionen werden in den Selektor- und Providerabschnitten verwendet. Diese Variablen werden zusammen mit systemdefinierten Variablen gespeichert.Variablendeklarationen werden durch ein Semikolon getrennt. Mehrere Deklarationen für den gleichen Typ können in einer Zeile zusammengefasst oder in die nächste Zeile verschoben werden; sie sind nicht zeilensensitiv. Nachfolgend wird ein Beispiel für einen Deklarationsabschnitt angezeigt:
REQUIRED INT R1;
REQUIRED TIME R2;
REQUIRED BOOLEAN R3,R4;
REQUIRED NETADDRESS R5,R6;
OPTIONAL INT P1 := 10;
OPTIONAL BOOLEAN := FALSE;
LOCAL INT L1 :=10;
LOCAL INT L2;
LOCAL TIME L3;
LOCAL BOOLEAN L4 :=TRUE, L5 :=FALSE;
LOCAL NETADDRESS L6;Die erforderlichen und optionalen Deklarationen unterscheiden sich je nach Verkehrstyp. Richtlinien, in denen die erforderlichen Variablen nicht enthalten sind, können nicht ausgeführt werden. Die optionalen Deklarationen müssen einen Wert enthalten, damit ein Standardwert vorhanden ist, wenn kein Wert übertragen wird. Der WAN-Verkehrsmanager enthält Systemsymbole (vordefinierte Variablen), die für alle Verkehrstypen verwendet werden können.
Jede Deklaration besteht aus drei Teilen: Bereich, Typ und eine Liste mit Paaren aus Name und optionalem Wert.
Gültige Bereiche sind REQUIRED, OPTIONAL, LOCAL und SYSTEM.
Gültige Typen sind INT, BOOLEAN, TIME oder NETADDRESS. Im Deklarationsabschnitt können Sie den Typen TIME und NETADDRESS keine Werte zuordnen. Falls diese Typen nicht bereits einen Wert enthalten, werden ihnen die Werte im Selektor- oder Provider-Abschnitt zugeordnet. Im Deklarationsabschnitt werden nur einzelne Typen initialisiert.
Die Werte in einer Deklaration müssen Konstanten und keine Variablen oder Ausdrücke sein. So ist beispielsweise die Deklaration "LOCAL INT L2 := L3;" nicht zulässig. Ein Wert, der im Deklarationsabschnitt eine Variable initialisiert, kann in den Selektor- und Provider-Abschnitten der Richtlinie geändert werden.
Selektor-Abschnitt
Der Selektor-Abschnitt einer Richtlinie beginnt mit dem Schlüsselwort SELECTOR und endet mit dem Schlüsselwort END. Selektor-Abschnitte werden ausgewertet, damit sich bestimmen lässt, welche der geladenen Richtlinien verwendet werden soll.Die Selektor-Abschnitte aller derzeit geladenen Richtlinien werden ausgeführt, um festzustellen, welche Richtlinie am wichtigsten ist. Nach der Auswertung wird von dem Abschnitt ein Wert zwischen 0 und 100 gemeldet. Eine 0 bedeutet, dass diese Richtlinie nicht verwendet werden soll. Ein Wert zwischen 1 und 99 bedeutet, dass diese Richtlinie verwendet werden soll, wenn bei keiner anderen Richtlinie ein höherer Wert angegeben ist. 100 bedeutet, dass diese Richtlinie verwendet werden soll.
Das Ergebnis eines Selektor-Abschnitts wird in einer RETURN-Deklaration wiedergegeben. Wird keine RETURN-Deklaration erstellt, wird ein Standardwert von 0 ausgegeben. Es folgt ein Beispiel für einen Selektor-Abschnitt:
SELECTOR
RETURN 49;
ENDWenn die Selektor-Abschnitte mehrerer Richtlinien ausgewertet werden, kann der gleiche Wert von mehreren Richtlinien zurückgegeben werden. In diesem Fall ist es unbestimmt, welche Richtlinie ausgewählt wird. Wenn alles andere identisch ist, hat eine Serverrichtlinie Vorrang vor einer WAN-Richtlinie.
Provider-Abschnitt
Der Provider-Abschnitt beginnt mit dem Schlüsselwort PROVIDER und endet mit dem Schlüsselwort END. Der Text des Provider-Abschnitts besteht aus einer Liste von Deklarationen.Das Ergebnis dieser Deklarationsliste sollte ein Wert sein, der die Möglichkeit der Richtlinie zum Senden (SEND) oder Nichtsenden (DONT_SEND) darstellt.
Das Ergebnis eines Provider-Abschnitts wird in einer RETURN-Deklaration wiedergegeben. Wird keine RETURN-Deklaration erstellt, wird der Standardwert SEND ausgegeben.
Es folgt ein Beispiel für einen Provider-Abschnitt:
PROVIDER
RETURN SEND;
END
In Richtlinienanweisungen verwendete Konstruktionen
In den Selektor- und Provider-Abschnitten können die folgenden Anweisungen und Konstruktionen (die angegebenen Ausnahmen ausgenommen) verwendet werden. In Deklarationsabschnitten verwendete Konstruktionen werden hier nicht beschrieben.
Anmerkungen
Anmerkungen werden ausgeklammert, indem die Zeichen "/*" an den Anfang und "*/" an das Ende der Zeile gesetzt werden. Beispiel:/* Dies ist eine Anmerkung. */
Anmerkungen können auch an den Zeichen "//" am Ende der Zeile vor der Anmerkung erkannt werden. Beispiel:
IF L2 > L3 THEN //Dies ist eine Anmerkung.
If-Then-Anweisung
IF-THEN-Anweisungen werden verwendet, um einen Block von Deklarationen bedingt auszuführen. Beispiele:
IF <Boole'scher Ausdruck> THEN
<Deklarationen>
ENDIF <Boole'scher Ausdruck> THEN
<Deklarationen>
ELSE
<Deklarationen>
ENDIF <Boole'scher Ausdruck> THEN
<Deklarationen>
ELSIF <Boole'scher Ausdruck> THEN
<Deklarationen>
ENDIF <Boole'scher Ausdruck> THEN
Dies ist die erste Klausel in einer IF-THEN-Anweisung. Der Boole'sche Ausdruck wird im Hinblick auf ein wahres (TRUE) oder falsches (FALSE) Ergebnis ausgewertet. Ist der Ausdruck wahr (TRUE), werden die unmittelbar darauffolgenden Deklarationen ausgeführt. Ist der Ausdruck falsch (FALSE), wird die nächste entsprechende ELSE-, ELSIF- oder END-Deklaration ausgeführt.ELSE
Diese Deklaration markiert den Anfang der Deklarationen, die ausgeführt werden, wenn bei allen entsprechenden vorangehenden IF-THEN- und ELSIF-Anweisungen falsche Ergebnisse (FALSE) angegeben werden. Beispiel:IF <Boole'scher Ausdruck> THEN
<Anweisungen>
ELSIF <Boole'scher Ausdruck> THEN
<Anweisungen>
ELSIF <Boole'scher Ausdruck> THEN
<Anweisungen>
ELSE
<Anweisungen>
ENDELSIF <Boole'scher Ausdruck> THEN
Der Boole'sche Ausdruck wird ausgewertet, wenn die vorangehende IF-THEN-Deklaration das Ergebnis FALSE ausgibt. Die ELSIF-Deklaration wird im Hinblick auf ein wahres (TRUE) oder falsches (FALSE) Ergebnis ausgewertet. Ist die Deklaration wahr (TRUE), werden die darauffolgenden Deklarationen ausgeführt. Ist der Ausdruck falsch (FALSE), wird die nächste entsprechende ELSE-, ELSIF- oder END-Deklaration ausgeführt. Beispiel:IF <Boole'scher Ausdruck> THEN
<Anweisungen>
ELSIF <Boole'scher Ausdruck> THEN
<Anweisungen>
ELSIF <Boole'scher Ausdruck> THEN
<Anweisungen>
ENDEND
Mit der END-Deklaration wird eine IF-THEN-Konstruktion beendet.RETURN
Mit dem Befehl RETURN werden die Ergebnisse der Selektor- und Provider-Abschnitte wiedergegeben.Selektor
In einem Selektor-Abschnitt enthält die RETURN-Deklaration das ganzzahlige Ergebnis für die Bewertung der Richtlinie. Mit dem Befehl RETURN wird der Richtlinie ein Wert zwischen 0 und 100 zugewiesen. Eine 0 bedeutet, dass diese Richtlinie nicht verwendet werden soll. Ein Wert zwischen 1 und 99 bedeutet, dass diese Richtlinie verwendet werden soll, wenn bei keiner anderen Richtlinie ein höherer Wert angegeben ist. 100 bedeutet, dass diese Richtlinie verwendet werden soll. Wird in einem Selektor-Abschnitt keine RETURN-Deklaration erstellt, wird ein Standardwert von 0 ausgegeben.Am Ende der Deklaration ist ein Semikolon erforderlich. Beispiel:
RETURN 49;
RETURN L2;
RETURN 39+7;Provider
In einem Provider-Abschnitt enthält die RETURN-Deklaration das Ergebnis SEND oder DONT_SEND. Wird keine RETURN-Deklaration erstellt, wird der Standardwert SEND ausgegeben.Am Ende der Deklaration ist ein Semikolon erforderlich. Beispiele:
RETURN SEND;
RETURN DONT_SEND;
RETURN L1;Zuweisung
Bei der Zuweisungsdeklaration wird der Wert eines Symbols mithilfe der Zeichen ":=" geändert. Die definierte Variable oder Systemvariable wird zuerst angegeben, dann die Zeichen ":=", die von einem Wert, einer Variable oder einer Operation gefolgt werden. Beispiel:<Variable>.<Feld>:=<Ausdruck>;
<Variable>:=<Ausdruck>;t1 und t2 sind vom Typ TIME, i1 und i2 sind vom Typ INTEGER, b1, b2 sind gültige Zuweisungen des Typs BOOLEAN:
t1 := t2;
b1 := t1 < t2;
i1 := t1.mday - 15;
b2 := t2.year < 2000ungültige Zuweisungen:
b1 := 10 < i2 < 12;
(10 < i2) ist vom Typ BOOLEAN, und ein Wert des Typs BOOLEAN kann nicht mit einem Wert des Typs INTEGER verglichen werden.
Stattdessen könnten Sie b1 := (10 < i2) AND (i2 < 12); anstatt
b2 := i1;
b2 ist vom Typ BOOLEAN, i1 ist vom Typ INTEGER. verwenden. Inkompatible Typen.
Stattdessen könnten Sie b2 := i1 > 0; verwenden.Die Zuweisungsdeklaration muss mit einem Semikolon enden.
Es wird eine strenge Typenüberprüfung durchgeführt. Sie sind nicht berechtigt, einer Variablen TIME einen Wert INT zuzuweisen.
Arithmetische Operatoren
Sie können arithmetische Operatoren in Zuweisungsdeklarationen, RETURN-Deklarationen oder IF-Konstruktionen verwenden. Die zulässigen Operatoren sind:Addition (+)
Subtraktion (-)
Division (/)
Multiplikation (*)
Modula (MOD)Verwenden Sie mit arithmetischen Operatoren nur INT-Variablentypen. Verwenden Sie in arithmetischen Ausdrücken nicht die Variablentypen TIME, NETADDRESS und BOOLEAN.
Vermeiden Sie Operationen, die Werte außerhalb des Bereichs -2147483648 bis +2147483648 ergeben, sowie Divisionen durch Null.
Vergleichsoperatoren
In IF-Konstruktionen können Sie Vergleichsoperatoren verwenden. Die zulässigen Operatoren sind:Gleich (=)
Ungleich (<>)
Größer als (>)
Größer oder gleich (>=)
Kleiner als (<)
Kleiner oder gleich (<=)Mit den Variablentypen TIME und INT kann jeder beliebige Vergleichsoperator verwendet werden. Sie können <> und = auch mit den Variablentypen NETADDRESS und BOOLEAN verwenden.
Logische Operatoren
Die zulässigen Operatoren sind:AND
OR
NOT
Kleiner als (<)
Größer als (>)
Gleich (=)Bitweise Operatoren
Wenn Sie bitweise Operatoren mit den Variablentypen INT verwenden, wird ein Ganzzahlwert ausgegeben. Die zulässigen Operatoren sind:BITAND
BITOR
BITNOTKomplexe Operationen
Bei der Verarbeitung komplexer Ausdrücke gelten die folgenden Prioritätsregeln. Operatoren mit der gleichen Prioritätsstufe werden von links nach rechts verarbeitet. Die Reihenfolge lautet wie folgt:Runde Klammer
Unärer Operator (+/-)
BITNOT
BITAND
BITOR
Multiplikation, Division, MOD
Addition, Subtraktion
Vergleichsoperator (>, >=, <, <=, =)
NOT
AND
ORWenn Sie sich bei der Priorität nicht sicher sind, verwenden Sie runde Klammern. Beispiel: Wenn A, B und C ganze Zahlen oder Variablen sind, ist der Ausdruck A<B<C nicht zulässig. Der Ausdruck A<B würde einen Boole'schen Wert ergeben, keine ganze Zahl, und ein Boole'scher Wert kann nicht mit einer ganzen Zahl C verglichen werden. Dagegen wäre der Ausdruck (A<B) AND (B<C) syntaktisch richtig.
Sie können PRINT-Deklarationen verwenden, um Text und Symbolwerte an den Bildschirm des WAN-Verkehrsmanagers und die Protokolldatei zu senden.PRINT-Anweisungen können eine beliebige Anzahl von Argumenten enthalten, bestehend aus Literalzeichenfolgen, Symbolnamen oder Mitgliedern, ganzzahligen oder Boole'schen Werten, die durch Kommas getrennt sind.
Literalzeichenfolgen müssen in Anführungszeichen (") gesetzt werden. PRINT-Deklarationen müssen mit einem Semikolon enden (;). Beispiel:
PRINT "INT=",10,"BOOL=",TRUE,"SYM=",R1;
Die Variablen TIME und NETADDRESS verwenden formatierte PRINT-Deklarationen. TIME-Symbole werden wie folgt ausgedruckt:M:T:J H:M
NETADDRESS-Variablen werden wie folgt ausgedruckt:
Typ Länge Daten
"Typ" ist entweder IP oder IPX, "Länge" ist die Anzahl der Byte und "Daten" ist die hexadezimale Adressangabe.
Ein Markensymbol (®, TM usw.) kennzeichnet eine Novell-Marke. Ein Sternchen (*) kennzeichnet eine Drittanbieter-Marke. Informationen über Marken finden Sie unter Rechtliche Hinweise.