dhcpv6_common.h File Reference

Definitions common to DHCPv6 client, server and relay agent. More...

#include "core/net.h"
#include "core/ethernet.h"
#include "ipv6/ipv6.h"

Go to the source code of this file.

Macros

#define DHCPV6_CLIENT_PORT   546
 
#define DHCPV6_SERVER_PORT   547
 
#define DHCPV6_MAX_MSG_SIZE   1232
 
#define DHCPV6_MAX_DUID_SIZE   130
 
#define DHCPV6_HOP_COUNT_LIMIT   8
 
#define DHCPV6_MAX_SERVER_PREFERENCE   255
 
#define DHCPV6_INFINITE_TIME   0xFFFFFFFF
 

Typedefs

struct {
   char_t   type
 
   uint32_t   dataStart
 
   uint32_t   dataLength
 
   uint8_t   nameLength
 
   char_t   name []
 
   uint8_t   tokenLen: 4
 
   uint8_t   type: 2
 
   uint8_t   version: 2
 
   uint8_t   code
 
   uint16_t   mid
 
   uint8_t   token []
 
   union {
      uint8_t   b [6]
 
      uint16_t   w [3]
 
   } 
 
   uint16_t   srcPort
 
   uint16_t   destPort
 
   uint32_t   seqNum
 
   uint32_t   ackNum
 
   uint8_t   reserved1: 4
 
   uint8_t   dataOffset: 4
 
   uint8_t   flags: 6
 
   uint8_t   reserved2: 2
 
   uint16_t   window
 
   uint16_t   checksum
 
   uint16_t   urgentPointer
 
   uint8_t   options []
 
   uint16_t   length
 
   uint8_t   data []
 
   uint8_t   op
 
   uint8_t   htype
 
   uint8_t   hlen
 
   uint8_t   hops
 
   uint32_t   xid
 
   uint16_t   secs
 
   uint16_t   flags
 
   Ipv4Addr   ciaddr
 
   Ipv4Addr   yiaddr
 
   Ipv4Addr   siaddr
 
   Ipv4Addr   giaddr
 
   MacAddr   chaddr
 
   uint8_t   unused [10]
 
   uint8_t   sname [64]
 
   uint8_t   file [128]
 
   uint32_t   magicCookie
 
   uint16_t   type
 
   uint16_t   hardwareType
 
   uint32_t   time
 
   MacAddr   linkLayerAddr
 
   uint16_t   id
 
   uint8_t   rd: 1
 
   uint8_t   tc: 1
 
   uint8_t   aa: 1
 
   uint8_t   opcode: 4
 
   uint8_t   qr: 1
 
   uint8_t   rcode: 4
 
   uint8_t   z: 3
 
   uint8_t   ra: 1
 
   uint16_t   qdcount
 
   uint16_t   ancount
 
   uint16_t   nscount
 
   uint16_t   arcount
 
   uint8_t   questions []
 
   uint16_t   controlWord
 
   uint16_t   byteCount
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   bcdUsb
 
   uint8_t   bDeviceClass
 
   uint8_t   bDeviceSubClass
 
   uint8_t   bDeviceProtocol
 
   uint8_t   bMaxPacketSize0
 
   uint16_t   idVendor
 
   uint16_t   idProduct
 
   uint16_t   bcdDevice
 
   uint8_t   iManufacturer
 
   uint8_t   iProduct
 
   uint8_t   iSerialNumber
 
   uint8_t   bNumConfigurations
 
   uint8_t   maxRespTime
 
   Ipv4Addr   groupAddr
 
   uint16_t   hrd
 
   uint16_t   pro
 
   uint8_t   hln
 
   uint8_t   pln
 
   uint16_t   op
 
   MacAddr   sha
 
   Ipv4Addr   spa
 
   MacAddr   tha
 
   Ipv4Addr   tpa
 
   uint8_t   length
 
   uint8_t   value []
 
   uint16_t   first
 
   uint16_t   last
 
   uint16_t   next
 
   union {
      uint8_t   b [16]
 
      uint16_t   w [8]
 
      uint32_t   dw [4]
 
   } 
 
   uint16_t   maxRespDelay
 
   uint16_t   reserved
 
   Ipv6Addr   multicastAddr
 
   uint32_t   reserved
 
   uint16_t   pvid
 
   uint8_t   autoNegSupportStatus
 
   uint16_t   pmdAutoNegAdvCap
 
   uint16_t   operationalMauType
 
   uint16_t   capabilities
 
   uint8_t   deviceType
 
   uint8_t   lengthH: 1
 
   uint8_t   lengthL
 
   uint8_t   t: 1
 
   uint8_t   c: 1
 
   union {
      int32_t   integer
 
      uint8_t   octetString [1]
 
      uint8_t   oid [1]
 
      uint8_t   ipAddr [4]
 
      uint32_t   counter32
 
      uint32_t   gauge32
 
      uint32_t   unsigned32
 
      uint32_t   timeTicks
 
      uint64_t   counter64
 
   } 
 
   uint16_t   transactionId
 
   uint16_t   protocolId
 
   uint8_t   unitId
 
   uint8_t   pdu []
 
   uint8_t   retain: 1
 
   uint8_t   qos: 2
 
   uint8_t   dup: 1
 
   union {
      uint8_t   all
 
      struct {
         uint8_t   topicIdType: 2
 
         uint8_t   cleanSession: 1
 
         uint8_t   will: 1
 
         uint8_t   retain: 1
 
         uint8_t   qos: 2
 
         uint8_t   dup: 1
 
      } 
 
   } 
 
   uint8_t   b: 1
 
   uint8_t   identifier
 
   uint8_t   valueSize
 
   Ipv4Addr   srcIpAddr
 
   Ipv4Addr   destIpAddr
 
   Eui64   interfaceId
 
   uint16_t   mru
 
   uint8_t   peerIdLength
 
   uint8_t   peerId []
 
   uint32_t   seconds
 
   uint32_t   fraction
 
   uint16_t   opcode
 
   char_t   filename []
 
   uint8_t   reserved: 3
 
   uint8_t   fin: 1
 
   uint8_t   payloadLen: 7
 
   uint8_t   mask: 1
 
   uint8_t   extPayloadLen []
 
   uint32_t   length
 
   uint8_t   payload []
 
   uint8_t   protocolVersionId
 
   uint8_t   bpduType
 
   StpBridgeId   rootId
 
   uint32_t   rootPathCost
 
   StpBridgeId   bridgeId
 
   uint16_t   portId
 
   uint16_t   messageAge
 
   uint16_t   maxAge
 
   uint16_t   helloTime
 
   uint16_t   forwardDelay
 
   uint8_t   version1Length
 
   uint16_t   priority
 
   MacAddr   addr
 
Dhcpv6DuidLlt
 DUID-LLT structure. More...
 
struct {
   char_t   type
 
   uint32_t   dataStart
 
   uint32_t   dataLength
 
   uint8_t   nameLength
 
   uint8_t   length: 4
 
   uint8_t   delta: 4
 
   union {
      uint8_t   b [8]
 
      uint16_t   w [4]
 
      uint32_t   dw [2]
 
   } 
 
   uint8_t   kind
 
   uint8_t   value []
 
   uint8_t   code
 
   uint16_t   type
 
   uint32_t   enterpriseNumber
 
   uint8_t   identifier []
 
   uint16_t   qtype
 
   uint16_t   qclass
 
   uint16_t   statusWord
 
   uint16_t   byteCount
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   wTotalLength
 
   uint8_t   bNumInterfaces
 
   uint8_t   bConfigurationValue
 
   uint8_t   iConfiguration
 
   uint8_t   bmAttributes
 
   uint8_t   bMaxPower
 
   uint8_t   type
 
   uint16_t   checksum
 
   uint8_t   parameter
 
   uint8_t   unused [3]
 
   uint8_t   data []
 
   uint32_t   parameter
 
   uint8_t   nextHeader
 
   uint8_t   hdrExtLen
 
   uint8_t   options []
 
   uint8_t   curHopLimit
 
   uint8_t   reserved: 2
 
   uint8_t   p: 1
 
   uint8_t   prf: 2
 
   uint8_t   h: 1
 
   uint8_t   o: 1
 
   uint8_t   m: 1
 
   uint16_t   routerLifetime
 
   uint32_t   reachableTime
 
   uint32_t   retransTimer
 
   uint8_t   flags
 
   uint16_t   ppvid
 
   uint8_t   mdiPowerSupport
 
   uint8_t   psePowerPair
 
   uint8_t   powerClass
 
   uint8_t   appType
 
   uint8_t   vlanIdH: 5
 
   uint8_t   x: 1
 
   uint8_t   t: 1
 
   uint8_t   u: 1
 
   uint8_t   l2PriorityH: 1
 
   uint8_t   vlanIdL: 7
 
   uint8_t   dscpValue: 6
 
   uint8_t   l2PriorityL: 2
 
   uint8_t   chassisIdSubtype
 
   uint8_t   chassisId []
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfCoils
 
   uint16_t   length
 
   uint8_t   msgType
 
   uint16_t   flags
 
   Ipv4Addr   addr
 
   uint8_t   valueSize
 
   uint16_t   protocol
 
   uint32_t   accm
 
   uint8_t   msgLength
 
   uint8_t   message []
 
   uint8_t   mode: 3
 
   uint8_t   vn: 3
 
   uint8_t   li: 2
 
   uint8_t   stratum
 
   uint8_t   poll
 
   int8_t   precision
 
   uint32_t   rootDelay
 
   uint32_t   rootDispersion
 
   uint32_t   referenceId
 
   NtpTimestamp   referenceTimestamp
 
   NtpTimestamp   originateTimestamp
 
   NtpTimestamp   receiveTimestamp
 
   NtpTimestamp   transmitTimestamp
 
   uint16_t   opcode
 
   char_t   filename []
 
   uint16_t   value []
 
   uint16_t   group
 
   uint8_t   keyExchange []
 
   uint32_t   id
 
   uint32_t   dataLen
 
Dhcpv6DuidEn
 DUID-EN structure. More...
 
struct {
   uint32_t   totalSize
 
   ResRootEntry   rootEntry
 
   MacAddr   destAddr
 
   MacAddr   srcAddr
 
   uint16_t   type
 
   uint8_t   data []
 
   uint16_t   hardwareType
 
   MacAddr   linkLayerAddr
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint8_t   rdata []
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bInterfaceNumber
 
   uint8_t   bAlternateSetting
 
   uint8_t   bNumEndpoints
 
   uint8_t   bInterfaceClass
 
   uint8_t   bInterfaceSubClass
 
   uint8_t   bInterfaceProtocol
 
   uint8_t   iInterface
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint32_t   unused
 
   uint8_t   nextHeader
 
   uint8_t   hdrExtLen
 
   uint8_t   options []
 
   uint32_t   reserved
 
   Ipv6Addr   targetAddr
 
   uint16_t   vlanId
 
   uint8_t   vlanNameLen
 
   char_t   vlanName []
 
   uint8_t   aggregationStatus
 
   uint32_t   aggregatedPortId
 
   uint8_t   locationDataFormat
 
   uint8_t   locationId []
 
   uint8_t   portIdSubtype
 
   uint8_t   portId []
 
   uint8_t   functionCode
 
   uint8_t   byteCount
 
   uint8_t   coilStatus []
 
   uint8_t   prefix
 
   uint16_t   length
 
   uint8_t   msgType
 
   uint8_t   identifier
 
   uint8_t   message []
 
   uint8_t   length
 
   Ipv4Addr   ipAddr
 
   uint16_t   protocol
 
   uint8_t   msgLength
 
   uint8_t   rejectedPacket []
 
   uint32_t   keyId
 
   uint8_t   messageDigest [16]
 
   uint16_t   opcode
 
   uint16_t   block
 
   uint16_t   value []
 
   uint8_t   value []
 
Dhcpv6DuidLl
 DUID-LL structure. More...
 
struct {
   uint8_t   dsap
 
   uint8_t   ssap
 
   uint8_t   control
 
   uint8_t   msgType
 
   uint8_t   transactionId [3]
 
   uint8_t   options []
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint8_t   rdata [4]
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bEndpointAddress
 
   uint8_t   bmAttributes
 
   uint16_t   wMaxPacketSize
 
   uint8_t   bInterval
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint32_t   unused
 
   uint8_t   data []
 
   uint32_t   mtu
 
   uint8_t   nextHeader
 
   uint8_t   hdrExtLen
 
   uint8_t   routingType
 
   uint8_t   segmentsLeft
 
   uint32_t   reserved
 
   Ipv6Addr   address []
 
   uint8_t   reserved1: 5
 
   uint8_t   o: 1
 
   uint8_t   s: 1
 
   uint8_t   r: 1
 
   uint8_t   reserved2 [3]
 
   Ipv6Addr   targetAddr
 
   uint8_t   protocolIdLen
 
   uint8_t   protocolId []
 
   uint16_t   maxFrameSize
 
   uint8_t   powerPriority: 4
 
   uint8_t   powerSource: 2
 
   uint8_t   powerType: 2
 
   uint16_t   powerValue
 
   uint16_t   ttl
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfInputs
 
   uint8_t   gwId
 
   uint16_t   duration
 
   uint8_t   identifier
 
   uint16_t   length
 
   uint8_t   message []
 
   uint8_t   length
 
   Ipv4Addr   ipAddr
 
   uint16_t   protocol
 
   uint16_t   rejectedProtocol
 
   uint8_t   rejectedInfo []
 
   uint16_t   opcode
 
   uint16_t   block
 
   uint16_t   version
 
   uint16_t   epoch
 
   DtlsSequenceNumber   seqNum
 
   uint8_t   hash
 
   uint8_t   signature
 
   uint8_t   value []
 
Dhcpv6Message
 DHCPv6 message. More...
 
struct {
   uint16_t   tci
 
   uint16_t   type
 
   uint8_t   msgType
 
   uint8_t   hopCount
 
   Ipv6Addr   linkAddress
 
   Ipv6Addr   peerAddress
 
   uint8_t   options []
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint8_t   rdata [16]
 
   uint8_t   bLength
 
   uint8_t   bDescriptorType
 
   uint16_t   bString []
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint8_t   pointer
 
   uint8_t   unused [3]
 
   uint8_t   data []
 
   uint32_t   unused
 
   uint8_t   nextHeader
 
   uint8_t   payloadLen
 
   uint16_t   reserved
 
   uint32_t   securityParamIndex
 
   uint32_t   sequenceNumber
 
   uint8_t   authData []
 
   uint32_t   reserved
 
   Ipv6Addr   targetAddr
 
   Ipv6Addr   destAddr
 
   uint8_t   measurements [20]
 
   uint16_t   psePowerPriceIndex
 
   uint16_t   supportedCap
 
   uint16_t   enabledCap
 
   uint8_t   functionCode
 
   uint8_t   byteCount
 
   uint8_t   inputStatus []
 
   uint8_t   radius
 
   uint8_t   length
 
   Ipv4Addr   ipAddr
 
   uint32_t   magicNumber
 
   uint8_t   identifier
 
   uint16_t   length
 
   uint16_t   opcode
 
   uint16_t   errorCode
 
   char_t   errorMsg []
 
   uint16_t   msgSeq
 
   uint8_t   fragOffset [3]
 
   uint8_t   fragLength [3]
 
   TlsSignHashAlgo   value []
 
   uint8_t   value []
 
Dhcpv6RelayMessage
 DHCPv6 relay agent message. More...
 
struct {
   uint16_t   code
 
   uint16_t   length
 
   uint8_t   value []
 
   uint16_t   rtype
 
   uint16_t   rclass
 
   uint32_t   ttl
 
   uint16_t   rdlength
 
   uint16_t   priority
 
   uint16_t   weight
 
   uint16_t   port
 
   uint8_t   target []
 
   uint8_t   bFunctionLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bDescriptorSubtype
 
   uint16_t   bcdCdc
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint16_t   identifier
 
   uint16_t   sequenceNumber
 
   uint8_t   data []
 
   uint32_t   pointer
 
   uint32_t   securityParamIndex
 
   uint32_t   sequenceNumber
 
   uint8_t   payloadData []
 
   uint8_t   length
 
   uint8_t   powerPriority: 2
 
   uint8_t   pd4pid: 1
 
   uint8_t   reserved: 1
 
   uint8_t   powerSource: 2
 
   uint8_t   powerType: 2
 
   uint16_t   pdRequestedPower
 
   uint16_t   pseAllocatedPower
 
   uint8_t   mgmtAddrLen
 
   uint8_t   mgmtAddrSubtype
 
   uint8_t   mgmtAddr []
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfRegs
 
   uint8_t   gwId
 
   uint8_t   gwAdd []
 
   Ipv4Addr   ipAddr
 
   uint8_t   identifier
 
   uint32_t   magicNumber
 
   uint16_t   serverVersion
 
   uint8_t   cookieLength
 
   uint8_t   cookie []
 
Dhcpv6Option
 DHCPv6 option. More...
 
struct {
   uint32_t   iaId
 
   uint32_t   t1
 
   uint32_t   t2
 
   uint8_t   options []
 
   uint8_t   bFunctionLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bDescriptorSubtype
 
   uint8_t   bmCapabilities
 
   uint8_t   bDataInterface
 
   uint8_t   type
 
   uint8_t   code
 
   uint16_t   checksum
 
   uint16_t   identifier
 
   uint16_t   sequenceNumber
 
   uint8_t   data []
 
   uint8_t   length
 
   MacAddr   linkLayerAddr
 
   uint16_t   pdRequestedPowerA
 
   uint16_t   pdRequestedPowerB
 
   uint16_t   pseAllocatedPowerA
 
   uint16_t   pseAllocatedPowerB
 
   uint16_t   powerStatus
 
   uint8_t   systemSetup
 
   uint16_t   pseMaxAvailablePower
 
   uint8_t   autoclass
 
   uint8_t   powerDown [3]
 
   uint8_t   ifNumSubtype
 
   uint32_t   ifNum
 
   uint8_t   oidLen
 
   uint8_t   oid []
 
   uint8_t   functionCode
 
   uint8_t   byteCount
 
   uint16_t   regValue []
 
   MqttSnFlags   flags
 
   uint8_t   protocolId
 
   uint16_t   duration
 
   char_t   clientId []
 
   Ipv4Addr   ipAddr
 
   uint16_t   length
 
   uint8_t   value []
 
Dhcpv6IaNaOption
 Identity Association for Non-temporary Addresses option. More...
 
struct {
   uint32_t   iaId
 
   uint8_t   options []
 
   uint8_t   bFunctionLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bDescriptorSubtype
 
   uint8_t   bmCapabilities
 
   uint8_t   type
 
   uint8_t   length
 
   uint8_t   prefixLength
 
   uint8_t   reserved1: 5
 
   uint8_t   r: 1
 
   uint8_t   a: 1
 
   uint8_t   l: 1
 
   uint32_t   validLifetime
 
   uint32_t   preferredLifetime
 
   uint32_t   reserved2
 
   Ipv6Addr   prefix
 
   uint8_t   oui [LLDP_OUI_SIZE]
 
   uint8_t   subtype
 
   uint8_t   value []
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfRegs
 
   uint8_t   returnCode
 
   uint16_t   type
 
   uint16_t   length
 
Dhcpv6IaTaOption
 Identity Association for Temporary Addresses option. More...
 
struct {
   Ipv6Addr   address
 
   uint32_t   preferredLifetime
 
   uint32_t   validLifetime
 
   uint8_t   options []
 
   uint8_t   bFunctionLength
 
   uint8_t   bDescriptorType
 
   uint8_t   bDescriptorSubtype
 
   uint8_t   bMasterInterface
 
   uint8_t   bSlaveInterface0
 
   uint8_t   type
 
   uint8_t   length
 
   uint16_t   reserved1
 
   uint32_t   reserved2
 
   uint8_t   ipPacket []
 
   uint8_t   functionCode
 
   uint8_t   byteCount
 
   uint16_t   regValue []
 
   MqttSnFlags   flags
 
   char_t   willTopic []
 
   uint16_t   length
 
   uint8_t   value []
 
Dhcpv6IaAddrOption
 IA Address option. More...
 
struct {
   uint16_t   requestedOption [1]
 
   UsbConfigDescriptor   configDescriptor
 
   UsbInterfaceDescriptor   communicationInterfaceDescriptor
 
   CdcHeaderDescriptor   cdcHeaderDescriptor
 
   CdcCallManagementDescriptor   cdcCallManagementDescriptor
 
   CdcAcmDescriptor   cdcAcmDescriptor
 
   CdcUnionDescriptor   cdcUnionDescriptor
 
   UsbEndpointDescriptor   notificationEndpointDescriptor
 
   UsbInterfaceDescriptor   dataInterfaceDescriptor
 
   UsbEndpointDescriptor   dataOutEndpointDescriptor
 
   UsbEndpointDescriptor   dataInEndpointDescriptor
 
   uint8_t   type
 
   uint8_t   length
 
   uint16_t   reserved
 
   uint32_t   mtu
 
   uint8_t   functionCode
 
   uint16_t   outputAddr
 
   uint16_t   outputValue
 
   uint16_t   topicId
 
   uint16_t   msgId
 
   char_t   topicName []
 
   uint16_t   value []
 
   uint16_t   algorithm
 
   uint16_t   length
 
   uint8_t   value []
 
Dhcpv6OroOption
 Option Request option. More...
 
struct {
   uint8_t   value
 
   uint8_t   type
 
   uint8_t   length
 
   uint8_t   prefixLength
 
   uint8_t   reserved2: 3
 
   uint8_t   prf: 2
 
   uint8_t   reserved1: 3
 
   uint32_t   routeLifetime
 
   Ipv6Addr   prefix
 
   uint8_t   functionCode
 
   uint16_t   outputAddr
 
   uint16_t   outputValue
 
   uint16_t   topicId
 
   uint16_t   msgId
 
   uint8_t   returnCode
 
   uint16_t   length
 
   char_t   hostname []
 
   uint16_t   serverVersion
 
   uint8_t   random [32]
 
   uint8_t   sessionIdLen
 
   uint8_t   sessionId []
 
Dhcpv6PreferenceOption
 Preference option. More...
 
struct {
   uint16_t   value
 
   uint8_t   type
 
   uint8_t   length
 
   uint16_t   reserved
 
   uint32_t   lifetime
 
   Ipv6Addr   address []
 
   uint8_t   functionCode
 
   uint16_t   regAddr
 
   uint16_t   regValue
 
   MqttSnFlags   flags
 
   uint16_t   topicId
 
   uint16_t   msgId
 
   uint8_t   data []
 
   uint16_t   length
 
   uint8_t   value []
 
   uint16_t   extensionsLen
 
   uint8_t   extensions []
 
Dhcpv6ElapsedTimeOption
 Elapsed Time option. More...
 
struct {
   uint8_t   protocol
 
   uint8_t   algorithm
 
   uint8_t   rdm
 
   uint8_t   replayDetection [8]
 
   uint8_t   authInfo []
 
   uint8_t   type
 
   uint8_t   length
 
   uint16_t   reserved
 
   uint32_t   lifetime
 
   uint8_t   domainNames []
 
   uint8_t   functionCode
 
   uint16_t   regAddr
 
   uint16_t   regValue
 
   uint16_t   topicId
 
   uint16_t   msgId
 
   uint8_t   returnCode
 
   char_t   value []
 
   uint32_t   ticketLifetime
 
   uint32_t   ticketAgeAdd
 
   uint8_t   ticketNonceLen
 
   uint8_t   ticketNonce []
 
Dhcpv6AuthOption
 Authentication option. More...
 
struct {
   Ipv6Addr   serverAddr
 
   uint8_t   type
 
   uint8_t   length
 
   uint8_t   contextLength
 
   uint8_t   cid: 4
 
   uint8_t   c: 1
 
   uint8_t   reserved1: 3
 
   uint16_t   reserved2
 
   uint16_t   validLifetime
 
   Ipv6Addr   contextPrefix
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfOutputs
 
   uint8_t   byteCount
 
   uint8_t   outputValue []
 
   uint16_t   msgId
 
   uint16_t   length
 
   uint8_t   value []
 
   uint8_t   requestUpdate
 
Dhcpv6ServerUnicastOption
 Server Unicast option. More...
 
struct {
   uint16_t   statusCode
 
   char_t   statusMessage []
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfOutputs
 
   uint16_t   msgId
 
   uint16_t   length
 
   uint16_t   value []
 
   uint8_t   data []
 
Dhcpv6StatusCodeOption
 Status Code option. More...
 
struct {
   uint8_t   msgType
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfRegs
 
   uint8_t   byteCount
 
   uint16_t   regValue []
 
   uint16_t   msgId
 
   uint8_t   length
 
   uint8_t   value []
 
   uint16_t   version
 Protocol version. More...
 
   uint16_t   cipherSuite
 Cipher suite identifier. More...
 
   systime_t   ticketTimestamp
 Timestamp to manage ticket lifetime. More...
 
   uint32_t   ticketLifetime
 Lifetime of the ticket. More...
 
   uint32_t   ticketAgeAdd
 Random value used to obscure the age of the ticket. More...
 
   uint8_t   ticketNonce [4]
 A per-ticket value that is unique across all tickets issued. More...
 
   size_t   ticketPskLen
 Length of the PSK associated with the ticket. More...
 
   uint8_t   ticketPsk [TLS13_MAX_HKDF_DIGEST_SIZE]
 PSK associated with the ticket. More...
 
Dhcpv6ReconfMessageOption
 Reconfigure Message option. More...
 
struct {
   Ipv6Addr   address [1]
 
   uint8_t   functionCode
 
   uint16_t   startingAddr
 
   uint16_t   quantityOfRegs
 
   MqttSnFlags   flags
 
   uint16_t   msgId
 
   char_t   topicName []
 
   uint8_t   length
 
   uint8_t   value []
 
Dhcpv6DnsServersOption
 DNS Recursive Name Server option. More...
 
struct {
   uint8_t   searchList [1]
 
   uint8_t   functionCode
 
   uint16_t   referenceAddr
 
   uint16_t   andMask
 
   uint16_t   orMask
 
   MqttSnFlags   flags
 
   uint16_t   topicId
 
   uint16_t   msgId
 
   uint8_t   returnCode
 
   uint8_t   length
 
   uint8_t   value []
 
Dhcpv6DomainListOption
 Domain Search List option. More...
 
struct {
   uint32_t   iaId
 
   uint32_t   t1
 
   uint32_t   t2
 
   uint8_t   options []
 
   uint8_t   functionCode
 
   uint16_t   referenceAddr
 
   uint16_t   andMask
 
   uint16_t   orMask
 
   MqttSnFlags   flags
 
   uint16_t   msgId
 
   char_t   topicName []
 
   uint16_t   length
 
   uint8_t   value []
 
Dhcpv6IaPdOption
 Identity Association for Prefix Delegation Option. More...
 
struct {
   uint32_t   preferredLifetime
 
   uint32_t   validLifetime
 
   uint8_t   prefixLen
 
   Ipv6Addr   prefix
 
   uint8_t   options []
 
   uint8_t   functionCode
 
   uint16_t   readStartingAddr
 
   uint16_t   quantityToRead
 
   uint16_t   writeStartingAddr
 
   uint16_t   quantityToWrite
 
   uint8_t   writeByteCount
 
   uint16_t   writeRegValue []
 
   uint16_t   msgId
 
   uint16_t   length
 
   uint8_t   value []
 
Dhcpv6IaPrefixOption
 IA_PD Prefix option. More...
 
struct {
   uint8_t   s: 1
 
   uint8_t   o: 1
 
   uint8_t   n: 1
 
   uint8_t   mbz: 5
 
   uint8_t   domainName []
 
   uint8_t   functionCode
 
   uint8_t   readByteCount
 
   uint16_t   readRegValue []
 
   uint16_t   duration
 
   uint16_t   length
 
   uint8_t   value []
 
Dhcpv6FqdnOption
 Fully Qualified Domain Name option. More...
 

Enumerations

enum  Dhcpv6DuidType { DHCPV6_DUID_LLT = 1, DHCPV6_DUID_EN = 2, DHCPV6_DUID_LL = 3 }
 DUID types. More...
 
enum  Dhcpv6HardwareType { DHCPV6_HARDWARE_TYPE_ETH = 1, DHCPV6_HARDWARE_TYPE_EUI64 = 27 }
 Hardware types. More...
 
enum  Dhcpv6MessageType {
  DHCPV6_MSG_TYPE_SOLICIT = 1, DHCPV6_MSG_TYPE_ADVERTISE = 2, DHCPV6_MSG_TYPE_REQUEST = 3, DHCPV6_MSG_TYPE_CONFIRM = 4,
  DHCPV6_MSG_TYPE_RENEW = 5, DHCPV6_MSG_TYPE_REBIND = 6, DHCPV6_MSG_TYPE_REPLY = 7, DHCPV6_MSG_TYPE_RELEASE = 8,
  DHCPV6_MSG_TYPE_DECLINE = 9, DHCPV6_MSG_TYPE_RECONFIGURE = 10, DHCPV6_MSG_TYPE_INFO_REQUEST = 11, DHCPV6_MSG_TYPE_RELAY_FORW = 12,
  DHCPV6_MSG_TYPE_RELAY_REPL = 13
}
 DHCPv6 message types. More...
 
enum  Dhcpv6OptionCode {
  DHCPV6_OPT_CLIENT_ID = 1, DHCPV6_OPT_SERVER_ID = 2, DHCPV6_OPT_IA_NA = 3, DHCPV6_OPT_IA_TA = 4,
  DHCPV6_OPT_IA_ADDR = 5, DHCPV6_OPT_ORO = 6, DHCPV6_OPT_PREFERENCE = 7, DHCPV6_OPT_ELAPSED_TIME = 8,
  DHCPV6_OPT_RELAY_MSG = 9, DHCPV6_OPT_AUTH = 11, DHCPV6_OPT_UNICAST = 12, DHCPV6_OPT_STATUS_CODE = 13,
  DHCPV6_OPT_RAPID_COMMIT = 14, DHCPV6_OPT_USER_CLASS = 15, DHCPV6_OPT_VENDOR_CLASS = 16, DHCPV6_OPT_VENDOR_OPTS = 17,
  DHCPV6_OPT_INTERFACE_ID = 18, DHCPV6_OPT_RECONF_MSG = 19, DHCPV6_OPT_RECONF_ACCEPT = 20, DHCPV6_OPT_DNS_SERVERS = 23,
  DHCPV6_OPT_DOMAIN_LIST = 24, DHCPV6_OPT_IA_PD = 25, DHCPV6_OPT_IA_PREFIX = 26, DHCPV6_OPT_INFO_REFRESH_TIME = 32,
  DHCPV6_OPT_FQDN = 39, DHCPV6_OPT_CAPTIVE_PORTAL = 103
}
 DHCPv6 option codes. More...
 
enum  Dhcpv6StatusCode {
  DHCPV6_STATUS_SUCCESS = 0, DHCPV6_STATUS_UNSPEC_FAILURE = 1, DHCPV6_STATUS_NO_ADDRS_AVAILABLE = 2, DHCPV6_STATUS_NO_BINDING = 3,
  DHCPV6_STATUS_NOT_ON_LINK = 4, DHCPV6_STATUS_USE_MULTICAST = 5
}
 Status code. More...
 

Functions

Dhcpv6StatusCode dhcpv6GetStatusCode (const uint8_t *options, size_t length)
 Retrieve status code. More...
 
Dhcpv6Optiondhcpv6AddOption (void *message, size_t *messageLen, uint16_t optionCode, const void *optionValue, size_t optionLen)
 Add an option to a DHCPv6 message. More...
 
Dhcpv6Optiondhcpv6AddSubOption (Dhcpv6Option *baseOption, size_t *messageLen, uint16_t optionCode, const void *optionValue, size_t optionLen)
 Add a suboption under an existing base option. More...
 
Dhcpv6Optiondhcpv6GetOption (const uint8_t *options, size_t optionsLength, uint16_t optionCode)
 Search a DHCPv6 message for a given option. More...
 

Variables

const Ipv6Addr DHCPV6_ALL_RELAY_AGENTS_AND_SERVERS_ADDR
 
const Ipv6Addr DHCPV6_ALL_SERVERS_ADDR
 

Detailed Description

Definitions common to DHCPv6 client, server and relay agent.

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2010-2023 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneTCP Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.2.4

Definition in file dhcpv6_common.h.

Macro Definition Documentation

◆ DHCPV6_CLIENT_PORT

#define DHCPV6_CLIENT_PORT   546

Definition at line 40 of file dhcpv6_common.h.

◆ DHCPV6_HOP_COUNT_LIMIT

#define DHCPV6_HOP_COUNT_LIMIT   8

Definition at line 49 of file dhcpv6_common.h.

◆ DHCPV6_INFINITE_TIME

#define DHCPV6_INFINITE_TIME   0xFFFFFFFF

Definition at line 53 of file dhcpv6_common.h.

◆ DHCPV6_MAX_DUID_SIZE

#define DHCPV6_MAX_DUID_SIZE   130

Definition at line 46 of file dhcpv6_common.h.

◆ DHCPV6_MAX_MSG_SIZE

#define DHCPV6_MAX_MSG_SIZE   1232

Definition at line 44 of file dhcpv6_common.h.

◆ DHCPV6_MAX_SERVER_PREFERENCE

#define DHCPV6_MAX_SERVER_PREFERENCE   255

Definition at line 51 of file dhcpv6_common.h.

◆ DHCPV6_SERVER_PORT

#define DHCPV6_SERVER_PORT   547

Definition at line 41 of file dhcpv6_common.h.

Typedef Documentation

◆ Dhcpv6AuthOption

typedef { ... } Dhcpv6AuthOption

Authentication option.

◆ Dhcpv6DnsServersOption

typedef { ... } Dhcpv6DnsServersOption

DNS Recursive Name Server option.

◆ Dhcpv6DomainListOption

typedef { ... } Dhcpv6DomainListOption

Domain Search List option.

◆ Dhcpv6DuidEn

typedef { ... } Dhcpv6DuidEn

DUID-EN structure.

◆ Dhcpv6DuidLl

typedef { ... } Dhcpv6DuidLl

DUID-LL structure.

◆ Dhcpv6DuidLlt

typedef { ... } Dhcpv6DuidLlt

DUID-LLT structure.

◆ Dhcpv6ElapsedTimeOption

typedef { ... } Dhcpv6ElapsedTimeOption

Elapsed Time option.

◆ Dhcpv6FqdnOption

typedef { ... } Dhcpv6FqdnOption

Fully Qualified Domain Name option.

◆ Dhcpv6IaAddrOption

typedef { ... } Dhcpv6IaAddrOption

IA Address option.

◆ Dhcpv6IaNaOption

typedef { ... } Dhcpv6IaNaOption

Identity Association for Non-temporary Addresses option.

◆ Dhcpv6IaPdOption

typedef { ... } Dhcpv6IaPdOption

Identity Association for Prefix Delegation Option.

◆ Dhcpv6IaPrefixOption

typedef { ... } Dhcpv6IaPrefixOption

IA_PD Prefix option.

◆ Dhcpv6IaTaOption

typedef { ... } Dhcpv6IaTaOption

Identity Association for Temporary Addresses option.

◆ Dhcpv6Message

typedef { ... } Dhcpv6Message

DHCPv6 message.

◆ Dhcpv6Option

typedef { ... } Dhcpv6Option

DHCPv6 option.

◆ Dhcpv6OroOption

typedef { ... } Dhcpv6OroOption

Option Request option.

◆ Dhcpv6PreferenceOption

typedef { ... } Dhcpv6PreferenceOption

Preference option.

◆ Dhcpv6ReconfMessageOption

typedef { ... } Dhcpv6ReconfMessageOption

Reconfigure Message option.

◆ Dhcpv6RelayMessage

typedef { ... } Dhcpv6RelayMessage

DHCPv6 relay agent message.

◆ Dhcpv6ServerUnicastOption

typedef { ... } Dhcpv6ServerUnicastOption

Server Unicast option.

◆ Dhcpv6StatusCodeOption

typedef { ... } Dhcpv6StatusCodeOption

Status Code option.

Enumeration Type Documentation

◆ Dhcpv6DuidType

DUID types.

Enumerator
DHCPV6_DUID_LLT 
DHCPV6_DUID_EN 
DHCPV6_DUID_LL 

Definition at line 65 of file dhcpv6_common.h.

◆ Dhcpv6HardwareType

Hardware types.

Enumerator
DHCPV6_HARDWARE_TYPE_ETH 
DHCPV6_HARDWARE_TYPE_EUI64 

Definition at line 77 of file dhcpv6_common.h.

◆ Dhcpv6MessageType

DHCPv6 message types.

Enumerator
DHCPV6_MSG_TYPE_SOLICIT 
DHCPV6_MSG_TYPE_ADVERTISE 
DHCPV6_MSG_TYPE_REQUEST 
DHCPV6_MSG_TYPE_CONFIRM 
DHCPV6_MSG_TYPE_RENEW 
DHCPV6_MSG_TYPE_REBIND 
DHCPV6_MSG_TYPE_REPLY 
DHCPV6_MSG_TYPE_RELEASE 
DHCPV6_MSG_TYPE_DECLINE 
DHCPV6_MSG_TYPE_RECONFIGURE 
DHCPV6_MSG_TYPE_INFO_REQUEST 
DHCPV6_MSG_TYPE_RELAY_FORW 
DHCPV6_MSG_TYPE_RELAY_REPL 

Definition at line 88 of file dhcpv6_common.h.

◆ Dhcpv6OptionCode

DHCPv6 option codes.

Enumerator
DHCPV6_OPT_CLIENT_ID 
DHCPV6_OPT_SERVER_ID 
DHCPV6_OPT_IA_NA 
DHCPV6_OPT_IA_TA 
DHCPV6_OPT_IA_ADDR 
DHCPV6_OPT_ORO 
DHCPV6_OPT_PREFERENCE 
DHCPV6_OPT_ELAPSED_TIME 
DHCPV6_OPT_RELAY_MSG 
DHCPV6_OPT_AUTH 
DHCPV6_OPT_UNICAST 
DHCPV6_OPT_STATUS_CODE 
DHCPV6_OPT_RAPID_COMMIT 
DHCPV6_OPT_USER_CLASS 
DHCPV6_OPT_VENDOR_CLASS 
DHCPV6_OPT_VENDOR_OPTS 
DHCPV6_OPT_INTERFACE_ID 
DHCPV6_OPT_RECONF_MSG 
DHCPV6_OPT_RECONF_ACCEPT 
DHCPV6_OPT_DNS_SERVERS 
DHCPV6_OPT_DOMAIN_LIST 
DHCPV6_OPT_IA_PD 
DHCPV6_OPT_IA_PREFIX 
DHCPV6_OPT_INFO_REFRESH_TIME 
DHCPV6_OPT_FQDN 
DHCPV6_OPT_CAPTIVE_PORTAL 

Definition at line 110 of file dhcpv6_common.h.

◆ Dhcpv6StatusCode

Status code.

Enumerator
DHCPV6_STATUS_SUCCESS 
DHCPV6_STATUS_UNSPEC_FAILURE 
DHCPV6_STATUS_NO_ADDRS_AVAILABLE 
DHCPV6_STATUS_NO_BINDING 
DHCPV6_STATUS_NOT_ON_LINK 
DHCPV6_STATUS_USE_MULTICAST 

Definition at line 145 of file dhcpv6_common.h.

Function Documentation

◆ dhcpv6AddOption()

Dhcpv6Option* dhcpv6AddOption ( void *  message,
size_t *  messageLen,
uint16_t  optionCode,
const void *  optionValue,
size_t  optionLen 
)

Add an option to a DHCPv6 message.

Parameters
[in]messagePointer to the DHCPv6 message
[in,out]messageLenActual length of the DHCPv6 message
[in]optionCodeOption code
[in]optionValueOption value
[in]optionLenLength of the option value
Returns
If the option was successfully added, a pointer to the freshly created option is returned. Otherwise NULL pointer is returned

Definition at line 111 of file dhcpv6_common.c.

◆ dhcpv6AddSubOption()

Dhcpv6Option* dhcpv6AddSubOption ( Dhcpv6Option baseOption,
size_t *  messageLen,
uint16_t  optionCode,
const void *  optionValue,
size_t  optionLen 
)

Add a suboption under an existing base option.

Parameters
[in]baseOptionPointer to the base option
[in,out]messageLenLength of the overall DHCPv6 message
[in]optionCodeOption code
[in]optionValueOption value
[in]optionLenLength of the option value
Returns
If the option was successfully added, a pointer to the freshly created option is returned. Otherwise NULL pointer is returned

Definition at line 165 of file dhcpv6_common.c.

◆ dhcpv6GetOption()

Dhcpv6Option* dhcpv6GetOption ( const uint8_t *  options,
size_t  optionsLength,
uint16_t  optionCode 
)

Search a DHCPv6 message for a given option.

Parameters
[in]optionsPointer to the Options field
[in]optionsLengthLength of the Options field
[in]optionCodeCode of the option to find
Returns
If the specified option was found, a pointer to the corresponding option is returned. Otherwise NULL pointer is returned

Definition at line 226 of file dhcpv6_common.c.

◆ dhcpv6GetStatusCode()

Dhcpv6StatusCode dhcpv6GetStatusCode ( const uint8_t *  options,
size_t  length 
)

Retrieve status code.

This function returns a status indication related to the DHCPv6 message or option in which it appears

Parameters
[in]optionsPointer to the Options field
[in]lengthLength of the Options field
Returns
Status code

Definition at line 70 of file dhcpv6_common.c.

Variable Documentation

◆ address

Ipv6Addr address[1]

Definition at line 271 of file dhcpv6_common.h.

◆ algorithm

uint8_t algorithm

Definition at line 315 of file dhcpv6_common.h.

◆ authInfo

uint8_t authInfo[]

Definition at line 318 of file dhcpv6_common.h.

◆ code

uint16_t code

Definition at line 235 of file dhcpv6_common.h.

◆ DHCPV6_ALL_RELAY_AGENTS_AND_SERVERS_ADDR

const Ipv6Addr DHCPV6_ALL_RELAY_AGENTS_AND_SERVERS_ADDR
extern

Definition at line 51 of file dhcpv6_common.c.

◆ DHCPV6_ALL_SERVERS_ADDR

const Ipv6Addr DHCPV6_ALL_SERVERS_ADDR
extern

Definition at line 55 of file dhcpv6_common.c.

◆ domainName

uint8_t domainName[]

Definition at line 417 of file dhcpv6_common.h.

◆ enterpriseNumber

uint32_t enterpriseNumber

Definition at line 182 of file dhcpv6_common.h.

◆ hardwareType

uint16_t hardwareType

Definition at line 169 of file dhcpv6_common.h.

◆ hopCount

uint8_t hopCount

Definition at line 222 of file dhcpv6_common.h.

◆ iaId

uint32_t iaId

Definition at line 247 of file dhcpv6_common.h.

◆ identifier

uint8_t identifier[]

Definition at line 183 of file dhcpv6_common.h.

◆ length

uint16_t length

Definition at line 236 of file dhcpv6_common.h.

◆ linkAddress

Ipv6Addr linkAddress

Definition at line 223 of file dhcpv6_common.h.

◆ linkLayerAddr

MacAddr linkLayerAddr

Definition at line 171 of file dhcpv6_common.h.

◆ mbz

uint8_t mbz

Definition at line 415 of file dhcpv6_common.h.

◆ msgType

uint8_t msgType

Definition at line 209 of file dhcpv6_common.h.

◆ n

uint8_t n

Definition at line 414 of file dhcpv6_common.h.

◆ o

uint8_t o

Definition at line 413 of file dhcpv6_common.h.

◆ options

uint8_t options[]

Definition at line 211 of file dhcpv6_common.h.

◆ peerAddress

Ipv6Addr peerAddress

Definition at line 224 of file dhcpv6_common.h.

◆ preferredLifetime

uint32_t preferredLifetime

Definition at line 272 of file dhcpv6_common.h.

◆ prefix

Ipv6Addr prefix

Definition at line 395 of file dhcpv6_common.h.

◆ prefixLen

uint8_t prefixLen

Definition at line 394 of file dhcpv6_common.h.

◆ protocol

uint8_t protocol

Definition at line 314 of file dhcpv6_common.h.

◆ rdm

uint8_t rdm

Definition at line 316 of file dhcpv6_common.h.

◆ replayDetection

uint8_t replayDetection[8]

Definition at line 317 of file dhcpv6_common.h.

◆ requestedOption

uint16_t requestedOption[1]

Definition at line 284 of file dhcpv6_common.h.

◆ s

uint8_t s

Definition at line 412 of file dhcpv6_common.h.

◆ searchList

uint8_t searchList[1]

Definition at line 369 of file dhcpv6_common.h.

◆ serverAddr

Ipv6Addr serverAddr

Definition at line 328 of file dhcpv6_common.h.

◆ statusCode

uint16_t statusCode

Definition at line 338 of file dhcpv6_common.h.

◆ statusMessage

char_t statusMessage[]

Definition at line 339 of file dhcpv6_common.h.

◆ t1

uint32_t t1

Definition at line 248 of file dhcpv6_common.h.

◆ t2

uint32_t t2

Definition at line 249 of file dhcpv6_common.h.

◆ time

uint32_t time

Definition at line 170 of file dhcpv6_common.h.

◆ transactionId

uint8_t transactionId[3]

Definition at line 210 of file dhcpv6_common.h.

◆ type

uint16_t type

Definition at line 168 of file dhcpv6_common.h.

◆ validLifetime

uint32_t validLifetime

Definition at line 273 of file dhcpv6_common.h.

◆ value

uint16_t value

Definition at line 237 of file dhcpv6_common.h.