mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-31 05:55:28 +00:00
Merge branch 'trac1531'
Conflicts: doc/.gitignore src/lib/util/buffer.h
This commit is contained in:
1
doc/.gitignore
vendored
1
doc/.gitignore
vendored
@@ -1 +1,2 @@
|
||||
/version.ent
|
||||
html
|
||||
|
23
doc/Doxyfile
23
doc/Doxyfile
@@ -25,13 +25,17 @@ DOXYFILE_ENCODING = UTF-8
|
||||
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
|
||||
# by quotes) that should identify the project.
|
||||
|
||||
PROJECT_NAME = BIND
|
||||
PROJECT_NAME = BIND10
|
||||
|
||||
# The PROJECT_NUMBER tag can be used to enter a project or revision number.
|
||||
# This could be handy for archiving the generated documentation or
|
||||
# if some version control system is used.
|
||||
|
||||
PROJECT_NUMBER = 10.0.0
|
||||
# Currently this variable is overwritten (see devel target in Makefile.am)
|
||||
# If the number of paramters to overwrite increases, we should generate
|
||||
# Doxyfile (rename it to Doxyfile.in and generate during configure phase)
|
||||
|
||||
PROJECT_NUMBER =
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# base path where the generated documentation will be put.
|
||||
@@ -47,7 +51,7 @@ OUTPUT_DIRECTORY = html
|
||||
# source files, where putting all generated files in the same directory would
|
||||
# otherwise cause performance problems for the file system.
|
||||
|
||||
CREATE_SUBDIRS = NO
|
||||
CREATE_SUBDIRS = YES
|
||||
|
||||
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
|
||||
# documentation generated by doxygen is written. Doxygen will use this
|
||||
@@ -574,7 +578,8 @@ INPUT = ../src/lib/exceptions ../src/lib/cc \
|
||||
../src/lib/log/compiler ../src/lib/asiolink/ ../src/lib/nsas \
|
||||
../src/lib/testutils ../src/lib/cache ../src/lib/server_common/ \
|
||||
../src/bin/sockcreator/ ../src/lib/util/ ../src/lib/util/io/ \
|
||||
../src/lib/resolve ../src/lib/acl ../src/bin/dhcp6 ../src/lib/dhcp
|
||||
../src/lib/resolve ../src/lib/acl ../src/bin/dhcp6 ../src/lib/dhcp \
|
||||
../src/bin/dhcp4 devel
|
||||
|
||||
# This tag can be used to specify the character encoding of the source files
|
||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
||||
@@ -591,7 +596,7 @@ INPUT_ENCODING = UTF-8
|
||||
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
|
||||
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
|
||||
|
||||
FILE_PATTERNS =
|
||||
FILE_PATTERNS = *.c *.cc *.h *.hpp *.dox
|
||||
|
||||
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
||||
# should be searched for input files as well. Possible values are YES and NO.
|
||||
@@ -651,7 +656,7 @@ EXAMPLE_RECURSIVE = NO
|
||||
# directories that contain image that are included in the documentation (see
|
||||
# the \image command).
|
||||
|
||||
IMAGE_PATH =
|
||||
IMAGE_PATH = ../doc/images
|
||||
|
||||
# The INPUT_FILTER tag can be used to specify a program that doxygen should
|
||||
# invoke to filter for each input file. Doxygen will invoke the filter program
|
||||
@@ -773,7 +778,7 @@ GENERATE_HTML = YES
|
||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||
# put in front of it. If left blank `html' will be used as the default path.
|
||||
|
||||
HTML_OUTPUT = cpp
|
||||
HTML_OUTPUT = ../html
|
||||
|
||||
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
|
||||
# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
|
||||
@@ -954,7 +959,7 @@ ENUM_VALUES_PER_LINE = 4
|
||||
# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
|
||||
# Windows users are probably better off using the HTML help feature.
|
||||
|
||||
GENERATE_TREEVIEW = NO
|
||||
GENERATE_TREEVIEW = YES
|
||||
|
||||
# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
|
||||
# and Class Hierarchy pages using a tree view instead of an ordered list.
|
||||
@@ -965,7 +970,7 @@ USE_INLINE_TREES = NO
|
||||
# used to set the initial width (in pixels) of the frame in which the tree
|
||||
# is shown.
|
||||
|
||||
TREEVIEW_WIDTH = 250
|
||||
TREEVIEW_WIDTH = 180
|
||||
|
||||
# Use this tag to change the font size of Latex formulas included
|
||||
# as images in the HTML documentation. The default is 10. Note that
|
||||
|
@@ -1,3 +1,16 @@
|
||||
SUBDIRS = guide
|
||||
|
||||
EXTRA_DIST = version.ent.in
|
||||
|
||||
devel:
|
||||
mkdir -p html
|
||||
(cat Doxyfile; echo PROJECT_NUMBER=$(PACKAGE_VERSION)) | doxygen - > html/doxygen.log 2> html/doxygen-error.log
|
||||
echo `grep -i ": warning:" html/doxygen-error.log | wc -l` warnings/errors detected.
|
||||
|
||||
clean:
|
||||
rm -rf html
|
||||
|
||||
# That's a bit of a hack, but we are making sure that devel target
|
||||
# is always valid. The alternative is to make devel depend on all
|
||||
# *.cc *.h files in the whole tree.
|
||||
.PHONY: devel
|
||||
|
14
doc/devel/01-dns.dox
Normal file
14
doc/devel/01-dns.dox
Normal file
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
*
|
||||
* @page dns BIND10 DNS
|
||||
*
|
||||
* @section dns-auth b10-auth
|
||||
*
|
||||
* @todo: Describe b10-auth here.
|
||||
*
|
||||
* @section b10-cfgmgr b10-cfgmgr Overview
|
||||
*
|
||||
* @todo: Descibe b10-cfgmgr here.
|
||||
*
|
||||
*
|
||||
*/
|
117
doc/devel/02-dhcp.dox
Normal file
117
doc/devel/02-dhcp.dox
Normal file
@@ -0,0 +1,117 @@
|
||||
/**
|
||||
* @page dhcpv4 DHCPv4 Server Component
|
||||
*
|
||||
* BIND10 offers DHCPv4 server implementation. It is implemented as
|
||||
* b10-dhcp4 component. Its primary code is located in
|
||||
* isc::dhcp::Dhcpv4Srv class. It uses \ref libdhcp extensively,
|
||||
* especially isc::dhcp::Pkt4, 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.
|
||||
*
|
||||
* DHCPv4 server component does not support direct traffic (relayed
|
||||
* only), as support for transmission to hosts without IPv4 address
|
||||
* assigned is not implemented in IfaceMgr yet.
|
||||
*
|
||||
* DHCPv4 server component does not listen to BIND10 message queue.
|
||||
*
|
||||
* DHCPv4 server component does not use BIND10 logging yet.
|
||||
*
|
||||
* DHCPv4 server component is not integrated with boss yet.
|
||||
*
|
||||
* @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 listen to BIND10 message queue.
|
||||
*
|
||||
* DHCPv6 server component does not use BIND10 logging yet.
|
||||
*
|
||||
* DHCPv6 server component is not integrated with boss yet.
|
||||
*
|
||||
* @page libdhcp libdhcp++ library
|
||||
*
|
||||
* @section libdhcpIntro Libdhcp++ Introduction
|
||||
*
|
||||
* libdhcp++ is an all-purpose DHCP-manipulation library, written in
|
||||
* C++. It offers packet parsing and assembly, DHCPv4 and DHCPv6
|
||||
* options parsing and ssembly, interface detection (currently on
|
||||
* Linux systems only) and socket operations. Following classes are
|
||||
* implemented:
|
||||
*
|
||||
* - isc::dhcp::Pkt4 - represents DHCPv4 packet.
|
||||
* - isc::dhcp::Pkt6 - represents DHCPv6 packet.
|
||||
*
|
||||
* There are two pointer types defined: Pkt4Ptr and Pkt6Ptr. They are
|
||||
* smart pointer and are using boost::shared_ptr. There are not const
|
||||
* versions defined, as we assume that hooks can modify any aspect of
|
||||
* the packet at almost any stage of processing.
|
||||
*
|
||||
* Both packets use collection of Option objects to represent DHCPv4
|
||||
* and DHCPv6 options. The base class -- Option -- can be used to
|
||||
* represent generic option that contains collection of
|
||||
* bytes. Depending on if the option is instantiated as v4 or v6
|
||||
* option, it will adjust its header (DHCPv4 options use 1 octet for
|
||||
* type and 1 octet for length, while DHCPv6 options use 2 bytes for
|
||||
* each).
|
||||
*
|
||||
* There are many specialized classes that are intended to handle options with
|
||||
* specific content:
|
||||
* - isc::dhcp::Option4AddrLst -- DHCPv4 option, contains one or more IPv4 addresses;
|
||||
* - isc::dhcp::Option6AddrLst -- DHCPv6 option, contains one or more IPv6 addresses;
|
||||
* - isc::dhcp::Option6IAAddr -- DHCPv6 option, represents IAADDR_OPTION (an option that
|
||||
* contains IPv6 address with extra parameters);
|
||||
* - isc::dhcp::Option6IA -- DHCPv6 option used to store IA_NA and its suboptions.
|
||||
*
|
||||
* All options can store sub-options (i.e. options that are stored within option
|
||||
* rather than in a message directly). This functionality is commonly used in
|
||||
* DHCPv6, but is rarely used in DHCPv4. isc::dhcp::Option::addOption(),
|
||||
* isc::dhcp::Option::delOption(), isc::dhcp::Option::getOption() can be used
|
||||
* for that purpose.
|
||||
*
|
||||
* @section lidhcpIfaceMgr Interface Manager
|
||||
*
|
||||
* Interface Manager (or IfaceMgr) is an abstraction layer about low-level
|
||||
* network operations. In particlar, it provides information about existing
|
||||
* network interfaces See isc::dhcp::IfaceMgr::Iface class and
|
||||
* isc::dhcp::IfaceMgr::detectIfaces() and isc::dhcp::IfaceMgr::getIface().
|
||||
*
|
||||
* Currently there is interface detection is implemented in Linux only. There
|
||||
* are plans to implement such support for other OSes, but they remain low
|
||||
* priority for now.
|
||||
*
|
||||
* Generic parts of the code are isc::dhcp::IfaceMgr class in
|
||||
* src/lib/dhcp/iface_mgr.cc file. OS-specific code is located in separate
|
||||
* files, e.g. iface_mgr_linux.cc. Such separation should be maintained when
|
||||
* additional code will be developed.
|
||||
*
|
||||
* For systems that interface detection is not supported on, there is a stub
|
||||
* mechanism implemented. It assumes that interface name is read from a text
|
||||
* file. This is a temporary solution and will be removed as soon as proper
|
||||
* interface detection is implemented. It is not going to be developed further.
|
||||
* To use this feature, store interfaces.txt file. It uses a simple syntax.
|
||||
* Each line represents an interface name, followed by IPv4 or IPv6 address
|
||||
* that follows it. This is usually link-local IPv6 address that the server
|
||||
* should bind to. In theory this mechanism also supports IPv4, but it was
|
||||
* never tested. The code currently supports only a single interface defined
|
||||
* that way.
|
||||
*
|
||||
* Another useful methods are dedicated to transmission
|
||||
* (isc::dhcp::IfaceMgr::send(), 2 overloads) and reception
|
||||
* (isc::dhcp::IfaceMgr::receive4() and isc::dhcp::IfaceMgr::receive6()).
|
||||
* Note that receive4() and receive6() methods may return NULL, e.g.
|
||||
* when timeout is reached or if dhcp daemon receives a signal.
|
||||
*/
|
36
doc/devel/mainpage.dox
Normal file
36
doc/devel/mainpage.dox
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
*
|
||||
* @mainpage BIND10 Developer's Guide
|
||||
*
|
||||
* Welcome to BIND10 Developer's Guide. This documentation is addressed
|
||||
* at existing and prospecting developers and programmers, who would like
|
||||
* to gain insight into internal workings of BIND 10. It could also be useful
|
||||
* for existing and prospective contributors.
|
||||
*
|
||||
* If you are a user or system administrator, rather than software engineer,
|
||||
* you should read <a href="http://bind10.isc.org/docs/bind10-guide.html">BIND10
|
||||
* Guide (Administrator Reference for BIND10)</a> instead.
|
||||
*
|
||||
* Regardless of your field of expertise, you are encouraged to visit
|
||||
* <a href="http://bind10.isc.org/">BIND10 webpage (http://bind10.isc.org)</a>
|
||||
*
|
||||
* @section DNS
|
||||
* - @subpage DataScrubbing
|
||||
*
|
||||
* @section DHCP
|
||||
* - @subpage dhcpv4
|
||||
* - @subpage dhcpv6
|
||||
* - @subpage libdhcp
|
||||
*
|
||||
* @section misc Miscellaneous topics
|
||||
* - @subpage LoggingApi
|
||||
* - @subpage LoggingApiOverview
|
||||
* - @subpage LoggingApiLoggerNames
|
||||
* - @subpage LoggingApiLoggingMessages
|
||||
* - @subpage SocketSessionUtility
|
||||
* - <a href="./doxygen-error.log">Documentation warnings and errors</a>
|
||||
*
|
||||
* @todo: Move this logo to the right (and possibly up). Not sure what
|
||||
* is the best way to do it in Doxygen, without using CSS hacks.
|
||||
* @image html isc-logo.png
|
||||
*/
|
BIN
doc/images/isc-logo.png
Normal file
BIN
doc/images/isc-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
@@ -277,7 +277,7 @@ public:
|
||||
/// in-memory data source.
|
||||
///
|
||||
/// \param rrclass The RR class of the in-memory data source to be set.
|
||||
/// \param memory_datasrc A (shared) pointer to \c InMemoryClient to be set.
|
||||
/// \param memory_client A (shared) pointer to \c InMemoryClient to be set.
|
||||
void setInMemoryClient(const isc::dns::RRClass& rrclass,
|
||||
InMemoryClientPtr memory_client);
|
||||
|
||||
|
@@ -68,7 +68,7 @@ protected:
|
||||
/// should be served. In particular, a lease is selected and sent
|
||||
/// as an offer to a client if it should be served.
|
||||
///
|
||||
/// @param solicit DISCOVER message received from client
|
||||
/// @param discover DISCOVER message received from client
|
||||
///
|
||||
/// @return OFFER message or NULL
|
||||
boost::shared_ptr<Pkt4>
|
||||
@@ -103,7 +103,7 @@ protected:
|
||||
|
||||
/// @brief Stub function that will handle incoming INFORM messages.
|
||||
///
|
||||
/// @param infRequest message received from client
|
||||
/// @param inform message received from client
|
||||
boost::shared_ptr<Pkt4> processInform(boost::shared_ptr<Pkt4>& inform);
|
||||
|
||||
/// @brief Copies default parameters from client's to server's message
|
||||
|
@@ -37,7 +37,7 @@ namespace asiolink {
|
||||
|
||||
// XXX: we cannot simply construct the address in the initialization list,
|
||||
// because we'd like to throw our own exception on failure.
|
||||
IOAddress::IOAddress(const string& address_str) {
|
||||
IOAddress::IOAddress(const std::string& address_str) {
|
||||
asio::error_code err;
|
||||
asio_address_ = ip::address::from_string(address_str, err);
|
||||
if (err) {
|
||||
@@ -46,7 +46,7 @@ IOAddress::IOAddress(const string& address_str) {
|
||||
}
|
||||
}
|
||||
|
||||
IOAddress::IOAddress(const ip::address& asio_address) :
|
||||
IOAddress::IOAddress(const asio::ip::address& asio_address) :
|
||||
asio_address_(asio_address)
|
||||
{}
|
||||
|
||||
|
@@ -846,7 +846,7 @@ public:
|
||||
///
|
||||
/// \return bool true if data is returned, false if not.
|
||||
///
|
||||
/// \exceptions any Varied
|
||||
/// \exception any Varied
|
||||
bool getNext(std::string (&data)[COLUMN_COUNT]) {
|
||||
|
||||
if (last_status_ != SQLITE_DONE) {
|
||||
|
@@ -68,7 +68,9 @@ public:
|
||||
/// in options container.
|
||||
///
|
||||
/// @param buf Buffer to be parsed.
|
||||
/// @param buf_len length of the buffer passed in buf.
|
||||
/// @param offset Specifies offset for the first option.
|
||||
/// @param parse_len length of buffer to be parsed.
|
||||
/// @param options Reference to option container. Options will be
|
||||
/// put here.
|
||||
///
|
||||
@@ -77,20 +79,18 @@ public:
|
||||
static unsigned int
|
||||
unpackOptions6(const boost::shared_array<uint8_t> buf, unsigned int buf_len,
|
||||
unsigned int offset, unsigned int parse_len,
|
||||
isc::dhcp::Option::OptionCollection& options_);
|
||||
isc::dhcp::Option::OptionCollection& options);
|
||||
|
||||
///
|
||||
/// Registers factory method that produces options of specific option types.
|
||||
///
|
||||
/// @param u universe of the option (V4 or V6)
|
||||
/// @param opt_type option-type
|
||||
/// @param type option-type
|
||||
/// @param factory function pointer
|
||||
///
|
||||
/// @return true, if registration was successful, false otherwise
|
||||
///
|
||||
static bool
|
||||
OptionFactoryRegister(Option::Universe u,
|
||||
unsigned short type,
|
||||
uint16_t type,
|
||||
Option::Factory * factory);
|
||||
protected:
|
||||
// pointers to factories that produce DHCPv6 options
|
||||
|
@@ -25,9 +25,11 @@
|
||||
#include "dhcp/libdhcp++.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace isc::dhcp;
|
||||
using namespace isc::util;
|
||||
|
||||
namespace isc {
|
||||
namespace dhcp {
|
||||
|
||||
Option::Option(Universe u, unsigned short type)
|
||||
:universe_(u), type_(type) {
|
||||
|
||||
@@ -54,8 +56,8 @@ Option::Option(Universe u, unsigned short type, std::vector<uint8_t>& data)
|
||||
check();
|
||||
}
|
||||
|
||||
Option::Option(Universe u, uint16_t type, vector<uint8_t>::const_iterator first,
|
||||
vector<uint8_t>::const_iterator last)
|
||||
Option::Option(Universe u, uint16_t type, std::vector<uint8_t>::const_iterator first,
|
||||
std::vector<uint8_t>::const_iterator last)
|
||||
:universe_(u), type_(type), data_(std::vector<uint8_t>(first,last)) {
|
||||
check();
|
||||
}
|
||||
@@ -344,3 +346,6 @@ void Option::setUint32(uint32_t value) {
|
||||
Option::~Option() {
|
||||
|
||||
}
|
||||
|
||||
} // end of isc::dhcp namespace
|
||||
} // end of isc namespace
|
||||
|
@@ -300,6 +300,7 @@ protected:
|
||||
/// @param buf buffer that contains raw buffer to parse (on-wire format)
|
||||
/// @param buf_len buffer length (used for buffer overflow checks)
|
||||
/// @param offset offset from start of the buf buffer
|
||||
/// @param parse_len number of bytes to be parsed.
|
||||
///
|
||||
/// @return offset to the next byte after last parsed byte
|
||||
virtual unsigned int
|
||||
@@ -313,6 +314,7 @@ protected:
|
||||
/// @param buf buffer that contains raw buffer to parse (on-wire format)
|
||||
/// @param buf_len buffer length (used for buffer overflow checks)
|
||||
/// @param offset offset from start of the buf buffer
|
||||
/// @param parse_len number of bytes to be parsed.
|
||||
///
|
||||
/// @return offset to the next byte after last parsed byte
|
||||
virtual unsigned int
|
||||
|
@@ -23,10 +23,12 @@
|
||||
#include <dhcp/option4_addrlst.h>
|
||||
|
||||
using namespace std;
|
||||
using namespace isc::dhcp;
|
||||
using namespace isc::util;
|
||||
using namespace isc::asiolink;
|
||||
|
||||
namespace isc {
|
||||
namespace dhcp {
|
||||
|
||||
Option4AddrLst::Option4AddrLst(uint8_t type)
|
||||
:Option(V4, type) {
|
||||
}
|
||||
@@ -39,8 +41,8 @@ Option4AddrLst::Option4AddrLst(uint8_t type, const AddressContainer& addrs)
|
||||
|
||||
|
||||
Option4AddrLst::Option4AddrLst(uint8_t type,
|
||||
vector<uint8_t>::const_iterator first,
|
||||
vector<uint8_t>::const_iterator last)
|
||||
std::vector<uint8_t>::const_iterator first,
|
||||
std::vector<uint8_t>::const_iterator last)
|
||||
:Option(V4, type) {
|
||||
if ( (distance(first, last) % V4ADDRESS_LEN) ) {
|
||||
isc_throw(OutOfRange, "DHCPv4 Option4AddrLst " << type_
|
||||
@@ -133,3 +135,6 @@ std::string Option4AddrLst::toText(int indent /* =0 */ ) {
|
||||
|
||||
return tmp.str();
|
||||
}
|
||||
|
||||
} // end of isc::dhcp namespace
|
||||
} // end of isc namespace
|
||||
|
@@ -24,14 +24,16 @@
|
||||
|
||||
using namespace std;
|
||||
using namespace isc;
|
||||
using namespace isc::dhcp;
|
||||
using namespace isc::util;
|
||||
|
||||
Option6IA::Option6IA(unsigned short type, unsigned int iaid)
|
||||
namespace isc {
|
||||
namespace dhcp {
|
||||
|
||||
Option6IA::Option6IA(uint16_t type, uint32_t iaid)
|
||||
:Option(Option::V6, type), iaid_(iaid) {
|
||||
}
|
||||
|
||||
Option6IA::Option6IA(unsigned short type,
|
||||
Option6IA::Option6IA(uint16_t type,
|
||||
const boost::shared_array<uint8_t>& buf,
|
||||
unsigned int buf_len,
|
||||
unsigned int offset,
|
||||
@@ -134,3 +136,6 @@ uint16_t Option6IA::len() {
|
||||
}
|
||||
return (length);
|
||||
}
|
||||
|
||||
} // end of isc::dhcp namespace
|
||||
} // end of isc namespace
|
||||
|
@@ -31,7 +31,7 @@ public:
|
||||
///
|
||||
/// @param type option type (usually 4 for IA_NA, 25 for IA_PD)
|
||||
/// @param iaid identity association identifier (id of IA)
|
||||
Option6IA(uint16_t type, unsigned int iaid);
|
||||
Option6IA(uint16_t type, uint32_t iaid);
|
||||
|
||||
/// @brief ctor, used for received options
|
||||
///
|
||||
|
@@ -45,6 +45,7 @@ public:
|
||||
///
|
||||
/// @param type option type
|
||||
/// @param buf pointer to a buffer
|
||||
/// @param buf_len length of the buffer passed in buf
|
||||
/// @param offset offset to first data byte in that buffer
|
||||
/// @param len data length of this option
|
||||
Option6IAAddr(unsigned short type, boost::shared_array<uint8_t> buf,
|
||||
|
@@ -240,6 +240,7 @@ public:
|
||||
/// Sets sname field
|
||||
///
|
||||
/// @param sname value to be set
|
||||
/// @param snameLen length of the buffer passed in sname
|
||||
void
|
||||
setSname(const uint8_t* sname, size_t snameLen = MAX_SNAME_LEN);
|
||||
|
||||
@@ -255,6 +256,7 @@ public:
|
||||
/// Sets file field
|
||||
///
|
||||
/// @param file value to be set
|
||||
/// @param fileLen length of the buffer passed in file
|
||||
void
|
||||
setFile(const uint8_t* file, size_t fileLen = MAX_FILE_LEN);
|
||||
|
||||
@@ -266,7 +268,7 @@ public:
|
||||
///
|
||||
/// Note: macAddr must be a buffer of at least hlen bytes.
|
||||
///
|
||||
/// @param hwType hardware type (will be sent in htype field)
|
||||
/// @param hType hardware type (will be sent in htype field)
|
||||
/// @param hlen hardware length (will be sent in hlen field)
|
||||
/// @param macAddr pointer to hardware address
|
||||
void setHWAddr(uint8_t hType, uint8_t hlen,
|
||||
@@ -350,7 +352,7 @@ public:
|
||||
|
||||
/// @brief Sets remote address.
|
||||
///
|
||||
/// @params remote specifies remote address
|
||||
/// @param remote specifies remote address
|
||||
void setRemoteAddr(const isc::asiolink::IOAddress& remote) {
|
||||
remote_addr_ = remote;
|
||||
}
|
||||
@@ -364,7 +366,7 @@ public:
|
||||
|
||||
/// @brief Sets local address.
|
||||
///
|
||||
/// @params local specifies local address
|
||||
/// @param local specifies local address
|
||||
void setLocalAddr(const isc::asiolink::IOAddress& local) {
|
||||
local_addr_ = local;
|
||||
}
|
||||
@@ -378,7 +380,7 @@ public:
|
||||
|
||||
/// @brief Sets local port.
|
||||
///
|
||||
/// @params local specifies local port
|
||||
/// @param local specifies local port
|
||||
void setLocalPort(uint16_t local) { local_port_ = local; }
|
||||
|
||||
/// @brief Returns local port.
|
||||
@@ -388,7 +390,7 @@ public:
|
||||
|
||||
/// @brief Sets remote port.
|
||||
///
|
||||
/// @params remote specifies remote port
|
||||
/// @param remote specifies remote port
|
||||
void setRemotePort(uint16_t remote) { remote_port_ = remote; }
|
||||
|
||||
/// @brief Returns remote port.
|
||||
|
@@ -24,6 +24,7 @@ using namespace std;
|
||||
using namespace isc::dhcp;
|
||||
|
||||
namespace isc {
|
||||
namespace dhcp {
|
||||
|
||||
Pkt6::Pkt6(unsigned int dataLen, DHCPv6Proto proto /* = UDP */)
|
||||
:data_len_(dataLen),
|
||||
@@ -43,14 +44,14 @@ Pkt6::Pkt6(unsigned int dataLen, DHCPv6Proto proto /* = UDP */)
|
||||
}
|
||||
|
||||
Pkt6::Pkt6(uint8_t msg_type,
|
||||
unsigned int transid,
|
||||
uint32_t transid,
|
||||
DHCPv6Proto proto /*= UDP*/)
|
||||
:local_addr_("::"),
|
||||
remote_addr_("::"),
|
||||
iface_(""),
|
||||
ifindex_(-1),
|
||||
local_port_(-1),
|
||||
remote_port_(-1),
|
||||
local_port_(0),
|
||||
remote_port_(0),
|
||||
proto_(proto),
|
||||
msg_type_(msg_type),
|
||||
transid_(transid) {
|
||||
@@ -206,7 +207,7 @@ Pkt6::toText() {
|
||||
}
|
||||
|
||||
boost::shared_ptr<isc::dhcp::Option>
|
||||
Pkt6::getOption(unsigned short opt_type) {
|
||||
Pkt6::getOption(uint16_t opt_type) {
|
||||
isc::dhcp::Option::OptionCollection::const_iterator x = options_.find(opt_type);
|
||||
if (x!=options_.end()) {
|
||||
return (*x).second;
|
||||
@@ -220,7 +221,7 @@ Pkt6::addOption(boost::shared_ptr<Option> opt) {
|
||||
}
|
||||
|
||||
bool
|
||||
Pkt6::delOption(unsigned short type) {
|
||||
Pkt6::delOption(uint16_t type) {
|
||||
isc::dhcp::Option::OptionCollection::iterator x = options_.find(type);
|
||||
if (x!=options_.end()) {
|
||||
options_.erase(x);
|
||||
@@ -229,4 +230,5 @@ Pkt6::delOption(unsigned short type) {
|
||||
return (false); // can't find option to be deleted
|
||||
}
|
||||
|
||||
};
|
||||
} // end of isc::dhcp namespace
|
||||
} // end of isc namespace
|
||||
|
@@ -41,8 +41,8 @@ public:
|
||||
/// @param msg_type type of message (SOLICIT=1, ADVERTISE=2, ...)
|
||||
/// @param transid transaction-id
|
||||
/// @param proto protocol (TCP or UDP)
|
||||
Pkt6(unsigned char msg_type,
|
||||
unsigned int transid,
|
||||
Pkt6(uint8_t msg_type,
|
||||
uint32_t transid,
|
||||
DHCPv6Proto proto = UDP);
|
||||
|
||||
/// Constructor, used in message transmission
|
||||
@@ -106,18 +106,18 @@ public:
|
||||
/// Returns message type (e.g. 1 = SOLICIT)
|
||||
///
|
||||
/// @return message type
|
||||
unsigned char
|
||||
uint8_t
|
||||
getType() { return (msg_type_); }
|
||||
|
||||
/// Sets message type (e.g. 1 = SOLICIT)
|
||||
///
|
||||
/// @param type message type to be set
|
||||
void setType(unsigned char type) { msg_type_=type; };
|
||||
void setType(uint8_t type) { msg_type_=type; };
|
||||
|
||||
/// Returns value of transaction-id field
|
||||
///
|
||||
/// @return transaction-id
|
||||
unsigned int getTransid() { return (transid_); };
|
||||
uint32_t getTransid() { return (transid_); };
|
||||
|
||||
/// Adds an option to this packet.
|
||||
///
|
||||
@@ -130,11 +130,11 @@ public:
|
||||
/// instances of the same option are allowed (and frequently used).
|
||||
/// See getOptions().
|
||||
///
|
||||
/// @param opt_type option type we are looking for
|
||||
/// @param type option type we are looking for
|
||||
///
|
||||
/// @return pointer to found option (or NULL)
|
||||
boost::shared_ptr<isc::dhcp::Option>
|
||||
getOption(unsigned short type);
|
||||
getOption(uint16_t type);
|
||||
|
||||
/// Attempts to delete first suboption of requested type
|
||||
///
|
||||
@@ -142,7 +142,7 @@ public:
|
||||
///
|
||||
/// @return true if option was deleted, false if no such option existed
|
||||
bool
|
||||
delOption(unsigned short type);
|
||||
delOption(uint16_t type);
|
||||
|
||||
/// TODO need getter/setter wrappers
|
||||
/// and hide following fields as protected
|
||||
@@ -172,10 +172,10 @@ public:
|
||||
int ifindex_;
|
||||
|
||||
/// local TDP or UDP port
|
||||
int local_port_;
|
||||
uint16_t local_port_;
|
||||
|
||||
/// remote TCP or UDP port
|
||||
int remote_port_;
|
||||
uint16_t remote_port_;
|
||||
|
||||
/// TODO Need to implement getOptions() as well
|
||||
|
||||
@@ -221,10 +221,10 @@ protected:
|
||||
DHCPv6Proto proto_;
|
||||
|
||||
/// DHCPv6 message type
|
||||
int msg_type_;
|
||||
uint8_t msg_type_;
|
||||
|
||||
/// DHCPv6 transaction-id
|
||||
unsigned int transid_;
|
||||
uint32_t transid_;
|
||||
}; // Pkt6 class
|
||||
|
||||
} // isc::dhcp namespace
|
||||
|
@@ -247,7 +247,7 @@ writeClosingNamespace(ostream& output, const vector<string>& ns) {
|
||||
}
|
||||
}
|
||||
|
||||
/// \breif Write python file
|
||||
/// \brief Write python file
|
||||
///
|
||||
/// Writes the python file containing the symbol definitions as module level
|
||||
/// constants. These are objects which register themself at creation time,
|
||||
@@ -303,8 +303,8 @@ writePythonFile(const string& file, MessageDictionary& dictionary,
|
||||
///
|
||||
/// \param file Name of the message file. The header file is written to a
|
||||
/// file of the same name but with a .h suffix.
|
||||
/// \param ns Namespace in which the definitions are to be placed. An empty
|
||||
/// string indicates no namespace.
|
||||
/// \param ns_components Namespace in which the definitions are to be placed.
|
||||
/// An empty string indicates no namespace.
|
||||
/// \param dictionary Dictionary holding the message definitions.
|
||||
/// \param output_directory if not null NULL, output files are written
|
||||
/// to the given directory. If NULL, they are written to the current
|
||||
@@ -408,8 +408,8 @@ replaceNonAlphaNum(char c) {
|
||||
///
|
||||
/// \param file Name of the message file. The header file is written to a
|
||||
/// file of the same name but with a .h suffix.
|
||||
/// \param ns Namespace in which the definitions are to be placed. An empty
|
||||
/// string indicates no namespace.
|
||||
/// \param ns_components Namespace in which the definitions are to be placed.
|
||||
/// An empty string indicates no namespace.
|
||||
/// \param dictionary Dictionary holding the message definitions.
|
||||
/// \param output_directory if not null NULL, output files are written
|
||||
/// to the given directory. If NULL, they are written to the current
|
||||
|
Reference in New Issue
Block a user