Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== libnv improvements ====== * Student: Adam Starak (starak.adam@gmail.com) * Mentor: Mariusz Zaborski (oshogbo@%%FreeBSD%%.org), Paweł Jakub Dawidek (pjd@%%FreeBSD%%.org) ===== Project description ===== The libnv library allows to easily manage name value pairs as well as send and receive them over sockets. You are able to add bools, strings, numbers, descriptors, binaries or even nest one nvlist in another. Nvlist has a great potential since it’s API simplifies the work done by a developers. In this project I will struggle to expand its functionality and port the library to other platforms. ===== Deliverables ===== * cnv API (functions based on cookie, not on the name of pair) * JSON conversion * Porable libnv repository * Improve complexity of nvlist by applying built-in macro for red-black tree * Replace binary structures with SYSCTL_NVLIST in few tools * Make libnv work with ===== Milestones ===== ^ Date ^ Milestone ^ Status ^ | 22 April - 23 May | Community bonding period | DONE | | **23 May: Coding begins!** ||| | 23 May - 6 June | cnv API | DONE | | 6 June - 13 June | JSON conversion | ABANDONED | | 13 June - 20 June | Portable libnv repository | In progress | | 20 June - 27 June | Using red-back tree in the underlying structures of nvlist | DONE | | **27 June: Mid-term evaluations deadline** ||| | 27 June - 11 July | Finish work with red-black tree | DONE | | 11 July - 25 July | Create SYSCTL_NVLIST and replace binary structures with in in few tools | DONE | | 25 July - 15 August | Make libucl work with nvlist | ABANDONED | | **15 August - 23 August: Final week!** ||| ===== Test Plan ===== Each part of my project needs to be tested. I will create similar tests for cnv API as the authors did in other APIs. In this case I’m going to use ATF and Kyua framework. My tests will also cover conversion to JSON, UCL and SYSCTL_NVLIST structure. When I apply successfully the red-black tree macro, I’m going to rerun the tests created by the authors. Other techniques, that I’m willing to use could include fuzzing, using AFL tool. ===== Final evaluation ===== ==== Github repository ==== https://github.com/dashhh/freebsd/ ==== Commits ==== [[https://github.com/dashhh/freebsd/commits/master?author=dashhh|cnv API]] [[https://github.com/dashhh/freebsd/commits/dnv?author=dashhh|dnv man page]] [[https://github.com/dashhh/freebsd/commits/sysctl?author=dashhh|nvlist sysctl]] [[https://github.com/dashhh/freebsd/commits/rb_queue?author=dashhh|Red-black tree]] [[https://github.com/dashhh/freebsd/commits/json?author=dashhh|JSON conversion (abandoned)]] ==== Applied patches ==== [[https://docs.freebsd.org/cgi/getmsg.cgi?fetch=85570+0+archive/2016/svn-src-head/20160724.svn-src-head|String array leak fix]] [[https://docs.freebsd.org/cgi/getmsg.cgi?fetch=88599+0+archive/2016/svn-src-head/20160724.svn-src-head|Nvlist array leak fix]] ===== Useful links ===== [[https://github.com/Dashhh/freebsd/wiki/Nvlist-find-update|Red-black tree modification explanation]] [[https://www.freebsd.org/cgi/man.cgi?query=nv&apropos=0&sektion=3&manpath=FreeBSD+11-current&format=html|nv(3)]] summerofcode2016/libnvimprovements.txt Last modified: 2016/08/23 09:55by AdamStarak