...
In order to divide the work between multiple developers, we need to define a logical breakdown of the different functional components along API lines. By defining the APIs first, each developer can work on his carved piece independently. Below is a Function Block diagram highlighting the different API lines. The API blocks are in red.
User Space
- YAML
- YAML syntax as described earlier in the document
- CLI
- CLI syntax as described earlier in the document
- DLC API
- The set of API functions lnetctl (or any other utility) calls to perform policy operations
- Marshal API
- The API used to marshal and unmarshal UDSPs
- Parsing API
- The API used to parse a textual expression into
Kernel Space
- Marshalled structure IOCTL API
- Used by both Kernel and User space
- Marshal API
- Should be the same for both Kernel and User space, except the implementation is duplicated
- Policy Management API
- Add, remove, apply policy
- Policy Storage Structure API
- These are the definitions of the UDSP structures when they are stored. The same definitions are used in both the user and kernel space. The marshal functions take these structures and form the marshalled IOCTL structures. The unmarshal functions take the marshalled IOCTL structures and forms the UDSP Storage structures
...