Attribute name changes from v3 to v4.
Version 4 has significantly changed much of the server internals. One part of that is renaming the dictionary attributes. In v3, the names were all in a "flat" namespace, so the names had to be globally unique. This limitation meant that the names for Vendor-Specific attributes usually had the vendor name as a prefix. For example,
Cisco-AVPair = "foo"
The dictionary
file definition for this attribute would look like this:
VENDOR Cisco
BEGIN-Vendor Cisco
ATTRIBUTE Cisco-AVPair 1 string
...
In version 4, all of the namespaces are local. The namespaces are
separated by .
instead of -
. The names also must begin at the
root of the dictionary. So the version 4 name for the above attribute
is:
Vendor-Specific.Cisco.AVPair = "foo"
And the dictionary
file definition for this attribute now looks like
this:
VENDOR Cisco
BEGIN-Vendor Cisco
ATTRIBUTE AVPair 1 string
...
Alias Dictionaries for compatibility with v3
The dictionaries in the ${dictdir}/radius/alias
directory are
intended to help administrators migrate from version 3 to version 4.
However, we recognize that it is difficult, and a lot of work to
change every database entry, unlang
policy, etc. As such, we
provide "alias" dictionaries which allow v4 to use names which are
compatible with v3.
Note that these "alias" dictionaries are only used for reading
attributes, such as from the users
file or sql
. When the server
prints attributes, it will always print the new v4 names.
These alias dictionaries can be enabled by editing the
raddb/dictionary
file. Please see that file for more information.
Tools to help
See scripts/upgrade/rewrite_attribute_names
for a tool which
rewrites files to use the new attribute names.
$ ./scripts/upgrade/rewrite_attribute_names -D dictdir -a attrs -i input -o output
This command will rewrite files to use the new names. Only the attribute names will be changed, all other contents of the files will remain the same.
The output file still has be checked manually. The rewrite process is automatic, but is not perfect.