On 13/09/11 08:59, Fajar A. Nugraha wrote:
That's what we currently do (for another purpose, not for dynamic client). However: - I lost load-balancing feature that comes with redundant-load-balance - imagine having to create 8 if-elsif block to properly catch error when working with 8 sql nodes, and write the same sql query 8 times in the configuration file. Works, but kinda messy.
With current sql module (that only reads nas list from sql during startup/HUP) I can use one sql/mysql/*.conf to specify the query, and have each sql instance $INCLUDE it. If we can do similar thing with "%{sql:" expansion (e.g. store the query in some temporary internal variable/attribute) it'd be reduce the measiness greatly, but I haven't found out how to do it yet.
You can't. It's not currently possible, and would require changes to the source code. Basically, the internal functions that handle xlat in FreeRADIUS do not have a way to signal error status, e.g. "notfound", "updated" etc. because they have a single integer return value that is the "length" of the xlat once done. 0 might mean "failed" or it might mean "empty string". Changing this would involve a lot of (very small) source code changes. I'm sure a patch would be accepted if you would care to write one :o)