The other Radiusd has additional internal structures which are allocated with malloc. My Classes have iterators to walk through the messageparts and other methods to dial with the Messages and so I don't need other internal datastructures, so its more efficient.
With this Classes I have reimplemented those parts of the radiusd we need:
Since Version 0.6 there are different types of Realms to support different Databases, proxy-Realms or different policies. So this radiusd is very flexible.
In my Radiusd I don't wanted the complicated Accounting-Format provided by Ascend/Livingston. You can configure the output like this:
User-Name;Current-Time;Acct-Status-Type;Acct-Input-Octets; Acct-Output-Octets;Acct-Input-Packets;Acct-Output-Packets; Acct-Session-Timeand get an output like this:
heinzi;Tue 04.06.1996 16:39:17 ;Stop;9;6;7;5;10 ;Tue 04.06.1996 16:39:46 ;Stop;;;;; boeck;Tue 04.06.1996 16:40:25 ;Start;;;;; heinzi;Tue 04.06.1996 16:40:49 ;Stop;9;6;7;5;10 sveni;Tue 04.06.1996 16:40:59 ;Start;;;;;The advantage is, that you can directly use Standard-Unix-Tools like sort, grep, cut, ... and things like awk and perl or gnuplot to work with the accounting-file.
In the time as scientist on the University Erlangen I have built a Unix-Statistic-Tool "grupstich", with which you can calculate the sum, the average, the variance over the columns. This logfile can be imported easy in various Databases.
Now there is one single logfile for all realms, because we want to log all the
trafic.
Each realmtype can potentially overwrite this method and have a special bookkeeping.
If you are an comercial user, you are asked to give me some money.
Please contact me.
If you need some new features, we can discuss about it.
The patches for the pppd and radlogin and radacct I adapted from Lars Fennebergs lf@elemental.net radiusclient-0.2.7