tnt@kalik.net wrote:
Hello to Alan and the rest of the list. I wanted to report this to the bug tracker but it appears to be down right now so I am sending it to the list.
I had a situation where I needed to remove all of the attributes from a reply except for Service-Type to one specific client. Unlang seemed to be perfect for this. It should be as simple as the following.
if (Client-IP-Address == "192.168.10.20") { update reply { Framed-Protocol == '' Framed-IP-Address == 0.0.0.0 Framed-IP-Netmask == 0.0.0.0 Idle-Timeout == 999 Session-Timeout == 999 Port-Limit == 999 Cisco-AVPair == '' Service-Type := Authenticate-Only } }
Read man unlang again. See what does == do. Perhaps you want:
if (Client-IP-Address == "192.168.10.20") { update reply { Service-Type == Authenticate-Only } }
Or you want to use -= on multiple attributes.
Ivan Kalik Kalik Informatika ISP
Ivan, Please read man unlang again, Neither of your examples are appropriate for my purposes. "Service-Type == Authenticate-Only" would remove the Service-Type attribute if its value is not Authenticate-Only. I do not want to remove the Service-Type attribute at all. I want to set its value to Authenticate-Only which is why I used the := operator. The -= operator removes the attribute if the attribute AND its value match the reply. Since the values can vary with different users and groups in our systerm, this operator is also not appropriate. The == operator removes the attribute if the attribute and its value DO NOT match the reply. In my examples you will see that the values for those attributes are unusual values which will probably never be set by our user profiles. Since there is no operator or command in unlang to remove an attribute regardless of value, this was the best alternative that I could design. According to what I have read, my configuration is correct, both in function and in syntax. It just crashes the server :-O Jim L.