
Radius Account Unique Module

0.  INTRODUCTION

    This module adds a (hopefully) unique session id to an accounting 
    packet based on the 'key' value specified in radiusd.conf.

1.  WHAT DOES IT DO

    The module looks for a list of dictionary attributes in radiusd.conf
    specified by the 'key' variable in the module's configuration section.  
    Based on the attributes listed, it will concatenate the attribute name 
    and value received in the accounting request packet, and then calculate 
    a (unique) md5 digest value from that concatenated list of attributes.  
    That's a mouthful, read it again for clarity :)

    After generating the md5 digest value, it adds it to the accounting
    request packet received from the client.  It will look something like
    this in your detail file:

    Acct-Unique-Session-Id = "c66ef57e480b9d26"

2.  HOW DO I USE IT

    First, you have to add the module to the modules{} section of
    radiusd.conf. It should look something like this:

    modules {
      ... stuff here ...

      acct_unique {
         key = "User-Name, Acct-Session-Id, NAS-IP-Address, NAS-Port-Id"
      }
      ... stuff here ...
    }

    NOTE:  Any attribute you specify that is not found in the 'dictionary' 
    file will cause the server to fail and exit with an error.

    NOTE:  If you want the Acct-Unique-Session-Id of the Start and the
    Stop packet of a particular session to match, you must use values for
    the key that will stay the same for the Start and Stop.  The above 
    example is a good start.  Adding 'Acct-Session-Time', for example, would 
    cause a mismatch because that value is not the same on the Start and 
    Stop accounting packets.

    Then you have to add it to the accounting{} section of radiusd.conf so
    it will be called.  For example:

    accounting {
      acct_unique
      files
      unix
    }

    Then either stop and restart radiusd (or kill -HUP) and you're
    ready to go.    

4.  ACKNOWLEDGEMENTS

    Primary author - Alan DeKok (?)
    Readme and code additions - Jeff Carneal
    A very important '*' - Alan Curry :)

