=== Network Interface API (IfAPI)

Link: +
link:https://wiki.freebsd.org/projects/ifnet[Original project page] URL: link:https://wiki.freebsd.org/projects/ifnet[]

Contact: Justin Hibbits <jhibbits@FreeBSD.org>

Started back in 2014, the IfAPI (formerly DrvAPI) goal is to hide the man:ifnet[9] structure from network drivers.
Instead, all accesses to members will go through accessor functions.
This allows the network stack to be changed without recompiling drivers, as well as potentially allowing a single driver to support multiple versions of FreeBSD.

As of now this goal has been achieved in the base system, but several ports need to be updated to use the IfAPI.
There is a tool to automate most of the conversion, in [.filename]#tools/ifnet/convert_ifapi.sh#.
Documentation is also forthcoming, but could use help on that.
man:ifnet[9] needs a lot of cleanup, as even some information in it currently is out of date.

Sponsor: Juniper Networks, Inc.
