Skip to content

Projects | Help Wanted

Quentin Young edited this page Dec 5, 2019 · 3 revisions

FRR has lots of new features and changes going in all the time, and there's more work to do than time to do it. Here is a list of projects we would like to see done. These are categorized according to estimated difficulty. If you'd like to start contributing to FRR, see if any of these interest you.

This table isn't for new features, use the feature requests page for that. This list should be composed primarily of code quality projects.

Summary Description Estimated Difficulty (1-5)
Use memory-safe APIs in BGP packet parsing Packet decoding paths in BGP use a mix of stream APIs and raw pointer math to access wire data. Often this involves performing pointer calculations using length fields retrieved from (untrusted) packet data. Bounds checking code has to be performed manually in pointer math in order to do this safely. It would be much better to use stream APIs consistently in this sensitive code path. 4
Reformat comments Many comments in the codebase were mangled a few years ago when the codebase was converted to use Linux kernel C style. Since clang-format doesn't support reflowing comments to match the style guide, we need a tool to go through and fix all the mangled comments. 1
Update documentation examples to use integrated config Individual config files (ospfd.conf, bgpd.conf, etc.) aren't the preferred way to configure FRR anymore, but are still used as the only examples of file-based configuration in the FRR documentation. In fact, integrated config isn't mentioned at all. It would be good to write a single explanation of how integrated config works and what files are involved, and simply link to that from the individual daemon docs instead of copy pasting the same snippet about config files 1
Improve BGP documentation Our BGP documentation is sorely lacking and missing basic things like how to configure hold and keepalive timers. Someone familiar with BGP and how to configure it in FRR should review the documentation and update it. 2