FreeRADIUS Development
As the name suggests, FreeRADIUS is developed under the GNU General Public License, Version 2 (GPLv2). We invite anyone to use and contribute code to the project. The following information should be helpful to those who want to contribute.
The official FreeRADIUS v4 developer guidelines are also online at the project’s website.
Key resources for developers include:
-
Developers Section: This part of the official documentation covers topics like bug reporting, coding methods, module interfaces, and buffer handling.
-
Module Interface Documentation: This resource explains how to develop modules for the FreeRADIUS server.
-
GitHub Repository: The source code and all documentation files are on GitHub, giving developers access to the latest information and a way to contribute.
-
Development mailing list: We encourage everyone who might contribute code to join the FreeRADIUS development list. This list is highly technical and isn’t for most users of the server. Only subscribe to the development list if you are interested in writing software for the new server. For normal discussion of the server and how to use it, subscribe to the FreeRADIUS user-list.
Bugs
If the server crashes due to memory errors, report it to the issue tracker with debugging info. For other issues, discuss them on the users mailing list.
Coding Methods
This is a short set of guidelines to follow when programming. Coding standards focus on function names, code appearance, and consistency.
Code Coverage
The gcov tool analyzes your programs. It helps you create efficient code and find untested areas.
Profiling
The gperftools (Google Performance Tools) help you find memory leaks, analyze performance issues, and optimize your code.
Semantic Patches
Coccinelle analyzes and transforms C code to create Semantic Patch Language (SmPL) patches.
Contributing
Development of FreeRADIUS is done using Github. Please submit issues, bugs, patches, etc. there. Additional instructions are online or within this section.
Module Interface
The purpose of modules is to handle small, simple tasks when RADIUS packets arrive. The module framework is built to process incoming RADIUS packets. It is also highly customizable.
Release Method
Review the steps to push or update a release.
More Information
The two most important RADIUS RFC’s and drafts are RFC2865 and RFC2866. These are the new RFCs, which replace the old ones, RFC2138 and RFC2139.
Also see the build dependencies page.