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

Reply via email to