These strings each supports one level of macro expansion, using a small set of variables. Following
macro substitution, the rule is evaluated to obtain the URL of the CFG file to be requested from the
provisioning server.
The URL can be partially specified, in which case default values are assumed for the unspecified
terms. The filepath portion of the URL must always be specified.
The Profile_Rule supports additional syntax that allows the URL to include conditions, for example
based on a function of the firmware release currently running in the PHONE ADAPTER. This
mechanism can aid the service provider’s firmware upgrade sequence, by allowing them to define
different configuration profiles for different stages of an upgrade sequence.
The conditional syntax consists of a sequence of condition-url pairs, separated by the ‘|’ character.
The condition component tests the current firmware version number against a specified value. If the
last url in the sequence does not have an associated condition, it will be attempted unconditionally.
The sequence of conditions is evaluated until one is satisfied. The URL associated with that
condition is then used to resync the PHONE ADAPTER. No additional URLs in the rule are
considered.
(*) A profile rule which attempts to fetch a URL succeeds if the profile is received and parsed
correctly. If the Resync_Fails_On_FNF parameter is set to No, a profile rule will also succeed if an
attempted fetch for a URL returns a File Not Found error message. A profile rule with only
assignments always succeeds.
Optional qualifiers can be specified in brackets, preceding each URL.
To ease testing and development, the script syntax also supports using ‘#’ as a comment delimiter
(until end-of-parameter). This allows a potentially long script to be temporarily “commented out”.
The syntax for the rule is as follows (with standard conventions for URLs):
rule = term *( "|" term )
term = [condition] [assignments] [options] url
condition = "(" conditionseq ")" "?"
conditionseq = condelem *( conjunction condelem )
condelem = numcond / vercond / strcond
numcond = number relop number
vercond = [ version ] relop version
relop = "<" / "<=" / ">" / ">=" / "==" / "!="
/ "!" / "gt" / "ge" / "lt" / "le" / "eq" / "ne"
version = major "." minor "." build [ "(" features ")" ]
strcond = cond *( conjunction cond )
strcond = qstr eqop qstr
conjunction = "and"
qstr = DQUOT val DQUOT
eqop = "==" / "!=" / "!" / "eq" / "ne"
assignments = "(" *assignment ")" "!"
assignment(*) = attribute "=" expr ";"
© 2004 Linksys Proprietary (See Copyright Notice on Page 2)
38