From 5b9ab4bc5c038d3fe6e12a0cf90c33e5f54d0f45 Mon Sep 17 00:00:00 2001 From: Tomek Mrugalski Date: Mon, 1 Oct 2012 19:19:49 +0200 Subject: [PATCH] [2269] Developer's guide updated. --- doc/devel/mainpage.dox | 5 ++ src/bin/dhcp6/dhcp6.dox | 115 ++++++++++++++++++++-------------------- 2 files changed, 62 insertions(+), 58 deletions(-) diff --git a/doc/devel/mainpage.dox b/doc/devel/mainpage.dox index ca9d8815fa..0da52875bb 100644 --- a/doc/devel/mainpage.dox +++ b/doc/devel/mainpage.dox @@ -15,12 +15,17 @@ * BIND10 webpage (http://bind10.isc.org) * * @section DNS + * - Authoritative DNS (todo) + * - Recursive resolver (todo) * - @subpage DataScrubbing * * @section DHCP * - @subpage dhcpv4 * - @subpage dhcpv4Session * - @subpage dhcpv6 + * - @subpage dhcpv6-session + * - @subpage dhcpv6-config-parser + * - @subpage dhcpv6-config-inherit * - @subpage libdhcp * - @subpage libdhcpIntro * - @subpage libdhcpIfaceMgr diff --git a/src/bin/dhcp6/dhcp6.dox b/src/bin/dhcp6/dhcp6.dox index aafd4d6dea..fe842de44b 100644 --- a/src/bin/dhcp6/dhcp6.dox +++ b/src/bin/dhcp6/dhcp6.dox @@ -1,71 +1,72 @@ /** - * @page dhcpv6 DHCPv6 Server Component - * - * BIND10 offers DHCPv6 server implementation. It is implemented as - * b10-dhcp6 component. Its primary code is located in - * isc::dhcp::Dhcpv6Srv class. It uses \ref libdhcp extensively, - * especially lib::dhcp::Pkt6, isc::dhcp::Option and - * isc::dhcp::IfaceMgr classes. Currently this code offers skeleton - * functionality, i.e. it is able to receive and process incoming - * requests and trasmit responses. However, it does not have database - * management, so it returns only one, hardcoded lease to whoever asks - * for it. - * - * DHCPv6 server component does not support relayed traffic yet, as - * support for relay decapsulation is not implemented yet. - * - * DHCPv6 server component does not use BIND10 logging yet. - * - * @section dhcpv6Session BIND10 message queue integration - * - * DHCPv4 server component is now integrated with BIND10 message queue. - * It follows the same principle as DHCPv4. See \ref dhcpv4Session for - * details. - + @page dhcpv6 DHCPv6 Server Component + + BIND10 offers DHCPv6 server implementation. It is implemented as + b10-dhcp6 component. Its primary code is located in + isc::dhcp::Dhcpv6Srv class. It uses \ref libdhcp extensively, + especially lib::dhcp::Pkt6, isc::dhcp::Option and + isc::dhcp::IfaceMgr classes. Currently this code offers skeleton + functionality, i.e. it is able to receive and process incoming + requests and trasmit responses. However, it does not have database + management, so it returns only one, hardcoded lease to whoever asks + for it. + + DHCPv6 server component does not support relayed traffic yet, as + support for relay decapsulation is not implemented yet. + + DHCPv6 server component does not use BIND10 logging yet. + + @section dhcpv6-session BIND10 message queue integration + + DHCPv4 server component is now integrated with BIND10 message queue. + It follows the same principle as DHCPv4. See \ref dhcpv4Session for + details. + @section dhcpv6-config-parser Configuration Parser in DHCPv6 b10-dhcp6 component uses BIND10 cfgmgr for commands and configuration. During - initial configuration (See \ref ControlledDhcpv6Srv::establishSession()), - the configuration handler callback is installed - (see ControlledDhcpv6Srv::dhcp6ConfigHandler(). It is called every time there - is a new configuration. In particular, it is called every time during daemon - start process. It contains a ConstElementPtr to a new configuration. This - simple handler calls \ref isc::dhcp::configureDhcp6Server() method that - processes received configuration. + initial configuration (See \ref + isc::dhcp::ControlledDhcpv6Srv::establishSession()), the configuration handler + callback is installed (see isc::dhcp::ControlledDhcpv6Srv::dhcp6ConfigHandler(). + It is called every time there is a new configuration. In particular, it is + called every time during daemon start process. It contains a + isc::data::ConstElementPtr to a new configuration. This simple handler calls + \ref isc::dhcp::configureDhcp6Server() method that processes received configuration. - This method iterates over list of received configuration elements and creates - a list of parsers for each received entry. Parser is an object that is derived - from a \ref Dhcp6ConfigParser class. Once a parser is created (constructor), - its value is set (using build() method). Once all parsers are build, the - configuration is then applied ("commited") and commit() method is called. + This method iterates over list of received configuration elements and creates a + list of parsers for each received entry. Parser is an object that is derived + from a \ref isc::dhcp::Dhcp6ConfigParser class. Once a parser is created + (constructor), its value is set (using build() method). Once all parsers are + build, the configuration is then applied ("commited") and commit() method is + called. - All parsers are defined in src/bin/dhcp6/config_parser.cc file. Some - of them are generic (e.g. \ref Uint32Parser that is able to handle - any unsigned 32 bit integer), but some are very specialized - (e.g. \ref Subnets6ListConfigParser parses definitions of Subnet6 lists). In + All parsers are defined in src/bin/dhcp6/config_parser.cc file. Some of them + are generic (e.g. \ref isc::dhcp::Uint32Parser that is able to handle any + unsigned 32 bit integer), but some are very specialized (e.g. \ref + isc::dhcp::Subnets6ListConfigParser parses definitions of Subnet6 lists). In some cases, e.g. subnet6 definitions, the configuration entry is not a simple - value, but a map or a list itself. In such case, the parser iterates over - all elements and creates parsers for a given scope. This process may be - repeated (sort of) recursively. - + value, but a map or a list itself. In such case, the parser iterates over all + elements and creates parsers for a given scope. This process may be repeated + (sort of) recursively. + @section dhcpv6-config-inherit DHCPv6 Configuration Inheritance One notable useful features of DHCP configuration is its parameter inheritance. - For example, renew-timer value may be specified at a global scope and it - then applies to all subnets. However, some subnets may have it overwritten - with more specific values that takes precedence over global values that are - considered defaults. Some parsers (e.g. \ref Uint32ConfigParser and - \StringParser) implement that inheritance. By default, they store values in - global uint32_defaults and string_defaults storages. However, it is possible - to instruct them to store parsed values in more specific storages. That - capability is used, e.g. in \ref Subnet6ConfigParser that has its own storage - that is unique for each subnet. Finally, during commit phase (commit() method), - appropriate parsers can use apply parameter inheritance. + For example, renew-timer value may be specified at a global scope and it then + applies to all subnets. However, some subnets may have it overwritten with more + specific values that takes precedence over global values that are considered + defaults. Some parsers (e.g. \ref isc::dhcp::Uint32Parser and \ref + isc::dhcp::StringParser) implement that inheritance. By default, they store + values in global uint32_defaults and string_defaults storages. However, it is + possible to instruct them to store parsed values in more specific + storages. That capability is used, e.g. in \ref isc::dhcp::Subnet6ConfigParser + that has its own storage that is unique for each subnet. Finally, during commit + phase (commit() method), appropriate parsers can use apply parameter inheritance. Debugging configuration parser may be confusing. Therefore there is a special - class called \ref DummyParser. It does not configure anything, but just accepts - any parameter of any type. If requested to commit configuration, it will print - out received parameter name and its value. This class is not currently used, + class called \ref isc::dhcp::DummyParser. It does not configure anything, but just + accepts any parameter of any type. If requested to commit configuration, it will + print out received parameter name and its value. This class is not currently used, but it is convenient to have it every time a new parameter is added to DHCP configuration. For that purpose it should be left in the code. @@ -76,5 +77,3 @@ do not implement any fancy inheritance logic. */ - -