libnv improvements

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

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

cnv API

dnv man page

nvlist sysctl

Red-black tree

JSON conversion (abandoned)

Applied patches

String array leak fix

Nvlist array leak fix

Red-black tree modification explanation

nv(3)

SummerOfCode2016/libnvImprovements (last edited 2016-08-23 09:55:56 by AdamStarak)