OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Dhcpv6Handler Class Reference

#include <dhcpv6_handler.h>

Inheritance diagram for Dhcpv6Handler:
Collaboration diagram for Dhcpv6Handler:

Classes

struct  Dhcpv6IaData
 
struct  Dhcpv6OptionHandler
 

Public Types

typedef boost::scoped_array
< uint8_t > 
Duid
 
- Public Types inherited from DhcpHandlerBase
enum  DhcpOptionCategory {
  None, NoData, Bool, Byte,
  ByteArray, ByteString, ByteOneIPPlus, String,
  Int32bit, Uint32bit, Uint16bit, Uint16bitArray,
  OneIPv4, ZeroIPv4Plus, OneIPv4Plus, TwoIPv4Plus,
  OneIPv6, OneIPv6Plus, ClasslessRoute, NameCompression,
  NameCompressionArray, ByteNameCompression
}
 
enum  DhcpOptionLevel { Invalid, InterfaceLevel, SubnetLevel, IpamLevel }
 

Public Member Functions

 Dhcpv6Handler (Agent *agent, boost::shared_ptr< PktInfo > info, boost::asio::io_context &io)
 
virtual ~Dhcpv6Handler ()
 
bool Run ()
 
- Public Member Functions inherited from DhcpHandlerBase
 DhcpHandlerBase (Agent *agent, boost::shared_ptr< PktInfo > info, boost::asio::io_context &io)
 
virtual ~DhcpHandlerBase ()
 
- Public Member Functions inherited from ProtoHandler
 ProtoHandler (Agent *agent, boost::shared_ptr< PktInfo > info, boost::asio::io_context &io)
 
virtual ~ProtoHandler ()
 
void Send (uint32_t itf, uint32_t vrf, uint16_t, PktHandler::PktModuleName)
 
void Send (uint32_t itf, uint32_t vrf, uint16_t cmd, uint32_t param1, uint32_t param2, PktHandler::PktModuleName mod)
 
int EthHdr (const MacAddress &src, const MacAddress &dest, const uint16_t proto)
 
int EthHdr (char *buff, uint16_t len, const MacAddress &src, const MacAddress &dest, const uint16_t proto, uint16_t vlan_id)
 
int EthHdr (char *buff, uint16_t len, const Interface *interface, const MacAddress &src, const MacAddress &dest, const uint16_t proto)
 
int EthHdr (char *buff, uint16_t len, uint32_t ifindex, const MacAddress &src, const MacAddress &dest, const uint16_t proto)
 
void VlanHdr (uint8_t *ptr, uint16_t tci)
 
void IpHdr (uint16_t len, in_addr_t src, in_addr_t dest, uint8_t protocol, uint16_t id, uint8_t ttl)
 
uint16_t IpHdr (char *buff, uint16_t buf_len, uint16_t len, in_addr_t src, in_addr_t dest, uint8_t protocol, uint16_t id, uint8_t ttl)
 
void Ip6Hdr (ip6_hdr *ip, uint16_t plen, uint8_t next_header, uint8_t hlim, uint8_t *src, uint8_t *dest)
 
void UdpHdr (uint16_t len, in_addr_t src, uint16_t src_port, in_addr_t dest, uint16_t dest_port)
 
void UdpHdr (udphdr *hdr, uint16_t len, const uint8_t *src, uint16_t src_port, const uint8_t *dest, uint16_t dest_port, uint8_t next_hdr)
 
void UdpHdr (uint16_t len, const uint8_t *src, uint16_t src_port, const uint8_t *dest, uint16_t dest_port, uint8_t next_hdr)
 
uint16_t UdpHdr (udphdr *udp, uint16_t buf_len, uint16_t len, in_addr_t src, uint16_t src_port, in_addr_t dest, uint16_t dest_port)
 
uint16_t IcmpHdr (char *buff, uint16_t buf_len, uint8_t type, uint8_t code, uint16_t word1, uint16_t word2)
 
void IcmpChecksum (char *buff, uint16_t buf_len)
 
void IgmpChecksum (char *buff, uint16_t buf_len)
 
uint32_t Sum (uint16_t *, std::size_t, uint32_t) const
 
uint16_t Csum (uint16_t *, std::size_t, uint32_t) const
 
uint16_t UdpCsum (in_addr_t, in_addr_t, std::size_t, udphdr *) const
 
uint16_t Ipv6Csum (const uint8_t *src, const uint8_t *dest, uint16_t plen, uint8_t next_hdr, uint16_t *hdr) const
 
uint16_t Icmpv6Csum (const uint8_t *src, const uint8_t *dest, icmp6_hdr *icmp, uint16_t plen) const
 
Agentagent () const
 
uint32_t GetVrfIndex () const
 
uint32_t GetInterfaceIndex () const
 
uint16_t GetLength () const
 
uint32_t GetCmdParam () const
 
PktInfopkt_info () const
 
uint32_t EncapHeaderLen () const
 

Private Member Functions

void ReadOptions (int16_t opt_rem_len)
 
bool ReadIA (uint8_t *ptr, uint16_t len, uint16_t code)
 
void FillDhcpInfo (Ip6Address &addr, int plen, Ip6Address &gw, Ip6Address &dns)
 
bool FindLeaseData ()
 
uint16_t AddIP (uint16_t opt_len, const std::string &input)
 
uint16_t AddDomainNameOption (uint16_t opt_len)
 
uint16_t FillDhcpv6Hdr ()
 
Ip6Address GetNextV6Address (uint8_t addr[])
 
void IncrementByteInAddress (Ip6Address::bytes_type &bytes, uint8_t index)
 
void WriteIaOption (uint16_t &optlen)
 
uint16_t FillDhcpResponse (const MacAddress &dest_mac, Ip6Address src_ip, Ip6Address dest_ip)
 
void SendDhcpResponse ()
 
void UpdateStats ()
 
DhcpOptionCategory OptionCategory (uint32_t option) const
 
uint32_t OptionCode (const std::string &option) const
 
void DhcpTrace (const std::string &msg) const
 
Dhcpv6OptionsGetNextOptionPtr (uint16_t optlen)
 
 DISALLOW_COPY_AND_ASSIGN (Dhcpv6Handler)
 

Private Attributes

Dhcpv6Hdrdhcp_
 
uint8_t msg_type_
 
uint8_t out_msg_type_
 
uint8_t xid_ [3]
 
bool rapid_commit_
 
bool reconfig_accept_
 
uint16_t client_duid_len_
 
uint16_t server_duid_len_
 
Duid client_duid_
 
Duid server_duid_
 
bool is_ia_na_
 
boost::scoped_ptr< Dhcpv6IaDataia_na_
 

Additional Inherited Members

- Protected Member Functions inherited from DhcpHandlerBase
uint16_t AddNoDataOption (uint32_t option, uint16_t opt_len)
 
uint16_t AddByteOption (uint32_t option, uint16_t opt_len, const std::string &input)
 
uint16_t AddByteArrayOption (uint32_t option, uint16_t opt_len, const std::string &input)
 
uint16_t AddByteStringOption (uint32_t option, uint16_t opt_len, const std::string &input)
 
uint16_t AddByteIPOption (uint32_t option, uint16_t opt_len, const std::string &input)
 
uint16_t AddStringOption (uint32_t option, uint16_t opt_len, const std::string &input)
 
uint16_t AddIntegerOption (uint32_t option, uint16_t opt_len, const std::string &input)
 
uint16_t AddShortArrayOption (uint32_t option, uint16_t opt_len, const std::string &input, bool array)
 
bool IsValidIpOption (uint32_t option, const std::string &ipstr, bool is_v4)
 
bool IsValidDnsOption (uint32_t option, const std::string &ipstr)
 
uint16_t AddIpv4Option (uint32_t option, uint16_t opt_len, const std::string &input, uint8_t min_count, uint8_t max_count, uint8_t multiples)
 
uint16_t AddIpv6Option (uint32_t option, uint16_t opt_len, const std::string &input, bool list)
 
uint16_t AddCompressedNameOption (uint32_t option, uint16_t opt_len, const std::string &input, bool list)
 
uint16_t AddByteCompressedNameOption (uint32_t option, uint16_t opt_len, const std::string &input)
 
uint16_t AddCompressedName (uint16_t opt_len, const std::string &input)
 
uint16_t AddDnsServers (uint16_t opt_len)
 
void ReadClasslessRoute (uint32_t option, uint16_t opt_len, const std::string &input)
 
uint16_t AddClasslessRouteOption (uint16_t opt_len)
 
uint16_t AddConfigDhcpOptions (uint16_t opt_len, bool is_v6)
 
uint16_t AddDhcpOptions (uint16_t opt_len, std::vector< autogen::DhcpOptionType > &options, DhcpOptionLevel level)
 
void FindDomainName (const IpAddress &vm_addr)
 
bool CanOverrideWithBytes (DhcpOptionCategory category)
 
bool is_flag_set (uint8_t flag) const
 
void set_flag (uint8_t flag)
 
bool is_dns_enabled () const
 
 DISALLOW_COPY_AND_ASSIGN (DhcpHandlerBase)
 
- Protected Attributes inherited from DhcpHandlerBase
VmInterfacevm_itf_
 
uint32_t vm_itf_index_
 
ConfigRecord config_
 
boost::scoped_ptr
< DhcpOptionHandler
option_
 
std::bitset< 256 > flags_
 
bool dns_enable_
 
std::string routers_
 
std::vector
< OperDhcpOptions::HostRoute
host_routes_
 
DhcpOptionLevel host_routes_level_
 
std::string ipam_name_
 
autogen::IpamType ipam_type_
 
autogen::VirtualDnsType vdns_type_
 
uint32_t siaddr_tftp_
 
- Protected Attributes inherited from ProtoHandler
Agentagent_
 
boost::shared_ptr< PktInfopkt_info_
 
boost::asio::io_context & io_
 

Detailed Description

Definition at line 214 of file dhcpv6_handler.h.

Member Typedef Documentation

typedef boost::scoped_array<uint8_t> Dhcpv6Handler::Duid

Definition at line 216 of file dhcpv6_handler.h.

Constructor & Destructor Documentation

Dhcpv6Handler::Dhcpv6Handler ( Agent agent,
boost::shared_ptr< PktInfo info,
boost::asio::io_context &  io 
)

Definition at line 226 of file dhcpv6_handler.cc.

Dhcpv6Handler::~Dhcpv6Handler ( )
virtual

Definition at line 237 of file dhcpv6_handler.cc.

Member Function Documentation

uint16_t Dhcpv6Handler::AddDomainNameOption ( uint16_t  opt_len)
private

Definition at line 544 of file dhcpv6_handler.cc.

Here is the call graph for this function:

uint16_t Dhcpv6Handler::AddIP ( uint16_t  opt_len,
const std::string &  input 
)
privatevirtual

Implements DhcpHandlerBase.

Definition at line 530 of file dhcpv6_handler.cc.

void Dhcpv6Handler::DhcpTrace ( const std::string &  msg) const
privatevirtual

Implements DhcpHandlerBase.

Definition at line 746 of file dhcpv6_handler.cc.

Dhcpv6Handler::DISALLOW_COPY_AND_ASSIGN ( Dhcpv6Handler  )
private
void Dhcpv6Handler::FillDhcpInfo ( Ip6Address addr,
int  plen,
Ip6Address gw,
Ip6Address dns 
)
private

Definition at line 473 of file dhcpv6_handler.cc.

uint16_t Dhcpv6Handler::FillDhcpResponse ( const MacAddress dest_mac,
Ip6Address  src_ip,
Ip6Address  dest_ip 
)
private

Definition at line 683 of file dhcpv6_handler.cc.

Here is the call graph for this function:

uint16_t Dhcpv6Handler::FillDhcpv6Hdr ( )
private

Definition at line 558 of file dhcpv6_handler.cc.

Here is the call graph for this function:

bool Dhcpv6Handler::FindLeaseData ( )
private

Definition at line 481 of file dhcpv6_handler.cc.

Here is the call graph for this function:

Dhcpv6Options* Dhcpv6Handler::GetNextOptionPtr ( uint16_t  optlen)
inlineprivate

Definition at line 291 of file dhcpv6_handler.h.

Ip6Address Dhcpv6Handler::GetNextV6Address ( uint8_t  addr[])
private

Definition at line 617 of file dhcpv6_handler.cc.

Here is the call graph for this function:

void Dhcpv6Handler::IncrementByteInAddress ( Ip6Address::bytes_type &  bytes,
uint8_t  index 
)
private

Definition at line 605 of file dhcpv6_handler.cc.

Dhcpv6Handler::DhcpOptionCategory Dhcpv6Handler::OptionCategory ( uint32_t  option) const
privatevirtual

Implements DhcpHandlerBase.

Definition at line 733 of file dhcpv6_handler.cc.

uint32_t Dhcpv6Handler::OptionCode ( const std::string &  option) const
privatevirtual

Implements DhcpHandlerBase.

Definition at line 740 of file dhcpv6_handler.cc.

bool Dhcpv6Handler::ReadIA ( uint8_t *  ptr,
uint16_t  len,
uint16_t  code 
)
private

Definition at line 430 of file dhcpv6_handler.cc.

Here is the call graph for this function:

void Dhcpv6Handler::ReadOptions ( int16_t  opt_rem_len)
private

Definition at line 366 of file dhcpv6_handler.cc.

Here is the call graph for this function:

bool Dhcpv6Handler::Run ( void  )
virtual

Implements ProtoHandler.

Definition at line 240 of file dhcpv6_handler.cc.

Here is the call graph for this function:

void Dhcpv6Handler::SendDhcpResponse ( )
private

Definition at line 709 of file dhcpv6_handler.cc.

Here is the call graph for this function:

void Dhcpv6Handler::UpdateStats ( )
private

Definition at line 726 of file dhcpv6_handler.cc.

Here is the call graph for this function:

void Dhcpv6Handler::WriteIaOption ( uint16_t &  optlen)
private

Definition at line 626 of file dhcpv6_handler.cc.

Here is the call graph for this function:

Member Data Documentation

Duid Dhcpv6Handler::client_duid_
private

Definition at line 307 of file dhcpv6_handler.h.

uint16_t Dhcpv6Handler::client_duid_len_
private

Definition at line 305 of file dhcpv6_handler.h.

Dhcpv6Hdr* Dhcpv6Handler::dhcp_
private

Definition at line 296 of file dhcpv6_handler.h.

boost::scoped_ptr<Dhcpv6IaData> Dhcpv6Handler::ia_na_
private

Definition at line 310 of file dhcpv6_handler.h.

bool Dhcpv6Handler::is_ia_na_
private

Definition at line 309 of file dhcpv6_handler.h.

uint8_t Dhcpv6Handler::msg_type_
private

Definition at line 298 of file dhcpv6_handler.h.

uint8_t Dhcpv6Handler::out_msg_type_
private

Definition at line 299 of file dhcpv6_handler.h.

bool Dhcpv6Handler::rapid_commit_
private

Definition at line 303 of file dhcpv6_handler.h.

bool Dhcpv6Handler::reconfig_accept_
private

Definition at line 304 of file dhcpv6_handler.h.

Duid Dhcpv6Handler::server_duid_
private

Definition at line 308 of file dhcpv6_handler.h.

uint16_t Dhcpv6Handler::server_duid_len_
private

Definition at line 306 of file dhcpv6_handler.h.

uint8_t Dhcpv6Handler::xid_[3]
private

Definition at line 300 of file dhcpv6_handler.h.


The documentation for this class was generated from the following files: