diff options
Diffstat (limited to 'src/hooks/dhcp/bootp/bootp.dox')
-rw-r--r-- | src/hooks/dhcp/bootp/bootp.dox | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/hooks/dhcp/bootp/bootp.dox b/src/hooks/dhcp/bootp/bootp.dox new file mode 100644 index 0000000..5b34caf --- /dev/null +++ b/src/hooks/dhcp/bootp/bootp.dox @@ -0,0 +1,78 @@ +// Copyright (C) 2019-2021 Internet Systems Consortium, Inc. ("ISC") +// +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +/** + +@page libdhcp_bootp Kea Bootp Hooks Library + +@section libdhcp_bootpIntro Introduction + +Welcome to Kea Bootp Hooks Library. This documentation is addressed to +developers who are interested in the internal operation of the Bootp +library. This file provides information needed to understand and +perhaps extend this library. + +This documentation is stand-alone: you should have read and understood +the <a href="https://reports.kea.isc.org/dev_guide/">Kea +Developer's Guide</a> and in particular its section about hooks. + +@section libdhcp_bootpUser Now To Use libdhcp_bootp +## Introduction +libdhcp_bootp is a hooks library which allows the processing +of BOOTP queries following the RFC1497. Old RFC951 BOOTP queries +without vendor extensions are not supported. + +## Configuring the DHCPv4 Module + +It must be configured as a hook library for the desired DHCP server +modules. Note that the bootp library is installed alongside the +Kea libraries in "<install-dir>/lib" where <install-dir> is determined +by the --prefix option of the configure script. It defaults to +"/usr/local". Assuming the default value then, configuring kea-dhcp4 +to load the bootp library could be done with the following Kea4 +configuration: + +@code +"Dhcp4": { + "hooks-libraries": [ + { "library": "/usr/local/lib/libdhcp_bootp.so" }, + ... + ] +} +@endcode + +No parameter is defined. + +## Internal operation + +The first function called in @ref load() located in the +bootp_callouts.cc. It checks if the necessary parameter is passed and +decodes the option configurations. @ref unload() free the configuration. + +Kea engine checks if the library has functions that match known hook +point names. This library has two such functions: @ref buffer4_receive +and @ref pkt4_send located in bootp_callouts.cc. + +If the receive query has no dhcp-message-type option then it is a BOOTP +one: the BOOTP client class and a DHCPREQUEST dhcp-message-type option +are added to the BOOTP query. + +On the outgoing side dhcp-message-type and other DHCP specific options +are removed from the response. When the packed response is shorter than +the BOOTP minimum size (300 octets) it is padded after the END option +by nuls up to this size. + +In case any other library sets the SKIP flag before pkt4_send, an exception +with the message "the packet pack already handled" will be thrown, to +indicate that the action can not be properly performed. +To fix this, all other libraries which might set the SKIP flag must appear +in the server configuration after this library. + +@section libdhcp_bootpMTCompatibility Multi-Threading Compatibility + +The Bootp hooks library is compatible with multi-threading. + +*/ |