I'm running FR 2.1.6 (I know - I plan to upgrade later this year). Is there
anything wrong syntactically with the following code or is this a bug that was
fixed since 2.1.6?
if (Client-IP-Address == "172.20.16.28" || Client-IP-Address ==
"172.20.204.10")) {
update request {
Huntgroup-Name := "GlobalRoaming"
}
}
#
# If NAS is an autonomous AP, get SSID from Cisco-AVPair
#
if (Huntgroup-Name == "EEProdAP" || \
Huntgroup-Name == "EETestAP") {
if (Cisco-AVPair =~ /ssid=(.*)/) {
update request {
SSID-Name = "%{1}"
}
}
}
I ask because the first if statement only works if the Client-IP-Address
matches the first address listed (172.20.16.28). I would expect that it would
evaluate to true if Client-IP-Address matches either of the addresses. Here's
a snippet of debug output that illustrates the problem - it doesn't appear to
finish the logical or comparison:
Info: ++? if (Called-Station-Id && (Client-IP-Address == "172.20.16.28" ||
Client-IP-Address == "172.20.204.10"))
Info: ? Evaluating (Called-Station-Id ) -> TRUE
Info: expand: %{Client-IP-Address} -> 172.20.204.10
Info: ++? if (Huntgroup-Name == "EEProdAP" || Huntgroup-Name == "EETestAP")
Info: (Attribute Huntgroup-Name was not found)
When I switch the order of the addresses for the logical or, I see the
following in debug (it does the comparison and returns TRUE):
Info: ++? if (Called-Station-Id && (Client-IP-Address == "172.20.204.10" ||
Client-IP-Address == "172.20.16.28"))
Info: ? Evaluating (Called-Station-Id ) -> TRUE
Info: expand: %{Client-IP-Address} -> 172.20.204.10
Info: ?? Evaluating (Client-IP-Address == "172.20.204.10" ) -> TRUE
Info: ?? Skipping (Client-IP-Address == "172.20.16.28")
Info: ++? if (Called-Station-Id && (Client-IP-Address == "172.20.204.10" ||
Client-IP-Address == "172.20.16.28")) -> TRUE
Info: ++- entering if (Called-Station-Id && (Client-IP-Address ==
"172.20.204.10" || Client-IP-Address ==
"172.20.16.28")) {...}
Info: +++[request] returns ok
Info: ++- if (Called-Station-Id && (Client-IP-Address == "172.20.204.10" ||
Client-IP-Address == "172.20.16.28")) returns ok
Info: ++? if (Huntgroup-Name == "EEProdAP" || Huntgroup-Name == "EETestAP")
Info: ? Evaluating (Huntgroup-Name == "EEProdAP" ) -> FALSE
Info: ? Evaluating (Huntgroup-Name == "EETestAP") -> FALSE
Info: ++? if (Huntgroup-Name == "EEProdAP" || Huntgroup-Name == "EETestAP") ->
FALSE
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html