This workshop was designed to help you understand how the userland communicates with the kernel through an existing example, studying the workflow; hence in the end you would be able to extend it or writing one of your own.
Module 1: FreeBSD Kernel Module
In this module, we will give an overview of the nature of the FreeBSD’s kernel. The important configuration files will be explained in addition to learning how to compile the whole system with more options and with more debugging information enabled. This is very useful for kernel development.
Module 2: IPFW2 Userland and Kernel Workflow
In this module, we’ll have an overview of ipfw2 – both userland and kernel side – and how they both interact.
Module 3: Through The Userland to Kernel Codes
In this module, we’ll have an overview of ipfw2 – both userland and kernel side -, and how they interact. First of all, we will see how to use sysctl we saw in previous modules to set simple values. How to communicate settings to the kernel via a socket; all of it going through the userland to kernel codes.
Module 4: DUMMYNET Module Workflow Study
In this last module, we’ll not only look at ipfw’s communication with the kernel but also how the firewall configuration and rules are handled. We will go through the dummynet module, its workflow and how it operates with the kernel so you would be able to add new opcodes on your own.