DaAPI is an acronym for DHCP and API and is a free to use, open-source and cross-platform DHCP(v4) and DHCPv6 server. Writing in .NET Core DaAPI can be run on all major platforms, like Windows, macOS and several Linux distributions. For a full list see .NET Core support linux distribution overview page. The complete documentation can be viewed on the github.com/DaAPI. Also, installation guides and quick examples can be found there.
Why using DaAPI?
DaAPI was designed with the needs for small ISP in mind but is not exclusive to their needs. DaAPI has a unique mechanism to assign IP addresses to suits virtually any requirement. Moreover, because of its modern application architecture, it is easy to install and can be integrated seamlessly in an existing infrastructure e.g., Network Monitoring Systems (NMS) or CRM system. Currently, new features like Syslog, SNMP, and RADIUS integration are on the way and will be available soon.
A unique resolver concept
To accomplish the most flexible way of assigning IP addresses, DaAPI has two unique concepts called ‘resolvers’ and ‘tree of scopes’. DaAPI arranges the address scope (sometimes referred to pools) as a tree. Thus, a scope can have a parent and children. Each child’s address range has to be in the range of the parent. Each scope has a resolver. A resolver can be seen as a switch, telling an incoming DHCP packet is valid or not for its scope. If a DHCP request is seen as legitimate, the same request is checked against all children of the scope. This procedure leads to the most specific match which is used to get an address (and other properties). DaAPI has implemented a great variety of different resolvers for example based on the incoming interface, used relay agents, MAC-address (also wildcards possible), Client DUID, but even more advanced like based on the Option82 created by the ‘Small Business Switches (SG)’ from Cisco. Also, ‘logical’ resolver like AND and OR exists, which can be used to chain other resolvers.
A REST-style Web API
The API portion means that everything is controllable via an REST-styled Web API. Clients can be registered via OpenID or using an API key. Besides endpoints for editing scopes, the most endpoints are designed to be consumed by network monitor systems. These endpoints include the status of clients or leases, or remaining addresses in a specified scope. Furthermore using technologies like WebHooks, DaAPI informs other systems about events like registering a new client, renew a lease, or getting invalid packets. These characteristics make it easy to integrate DaAPI in any existing system landscape