Upcoming changes to 4.0

Alan DeKok aland at deployingradius.com
Fri Sep 2 15:30:36 CEST 2016


  People interested in the "latest and greatest" may want to hold off for the next month or so.  I will be dropping much of the server on the floor, and re-arranging it.

  Specifically, the current listeners and state machine will be deleted.  All "authorize", "authenticate", etc. sections will disappear.  All "originate CoA" functionality will disappear.  All detail file reading will disappear.  All non-UDP functionality will disappear.

   Sorry about that.  But it's just too hard working on the "new" code, while trying to not break functionality in the "old" code.  The old code had sockets and protocol state machines welded together.  The new code won't have that.  I'm at the point where the new state machine works, but I can't fix the socket code without breaking compatibility with the old code.

  And worse, leaving the old socket code in there makes it harder to see what's going on, and harder to fix things.

  So... it's all going away.  Once I've done my re-arrangements, I will be re-introducing TCP / TLS functionality, via a better (abstracted) system.  The "originate CoA" function is already 90% there in the "rlm_radius_client" module,  The detail file reading will become a socket-style input, just like UDP / TCP / TLS / whatever.  And it won't be tied to RADIUS.

  This means that the server will get *much* better, and much more configurable.  The hope is that there will even be less code, as it will be better re-arranged.

  The end result will be that the server core will know *nothing* about RADIUS.  Which has been a goal of mine for 10+ years now. :(  The RADIUS knowledge will be limited to a RADIUS transport library, a RADIUS server library, and a RADIUS client library.  All told, probably 4K LoC.  The rest of the server (100K+ LoC) will be RADIUS agnostic.

  Once that's done, adding new protocols (DHCP, DHCPv6) is really only writing a server library for the protocol, to handle the server side of the protocol state machine.  Again, probably 2K to 4K LoC.  The hope is to allow people to write server plugins with the same ease that you can now write module plugins.

  Wish me luck. :)

  Alan DeKok.




More information about the Freeradius-Devel mailing list