= 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.
