io6Library
WIZnet Dual Stack TCP/IP Ethernet Controller Driver
Data Structures | Macros | Enumerations | Functions | Variables
dhcpv6.c File Reference

DHCPv6 APIs implement file. More...

#include "dhcpv6.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

Go to the source code of this file.

Data Structures

struct  __attribute__
 

Macros

#define _DHCP6_DEBUG_
 
#define STATE_DHCP6_INIT   0
 Initialize. More...
 
#define STATE_DHCP6_SOLICIT   1
 send DISCOVER and wait OFFER More...
 
#define STATE_DHCP6_REQUEST   2
 send REQEUST and wait ACK or NACK More...
 
#define STATE_DHCP6_LEASED   3
 ReceiveD ACK and IP leased. More...
 
#define STATE_DHCP6_REREQUEST   4
 send REQUEST for maintaining leased IP More...
 
#define STATE_DHCP6_RELEASE   5
 No use. More...
 
#define STATE_DHCP6_STOP   6
 Stop procssing DHCP. More...
 
#define DHCP6_SOLICIT   1
 DISCOVER message in OPT of RIP_MSG. More...
 
#define DHCP6_ADVERTISE   2
 OFFER message in OPT of RIP_MSG. More...
 
#define DHCP6_REQUEST   3
 REQUEST message in OPT of RIP_MSG. More...
 
#define DHCP6_CONFIRM   4
 DECLINE message in OPT of RIP_MSG. More...
 
#define DHCP6_RENEW   5
 ACK message in OPT of RIP_MSG. More...
 
#define DHCP6_REBIND   6
 NACK message in OPT of RIP_MSG. More...
 
#define DHCP6_REPLY   7
 RELEASE message in OPT of RIP_MSG. No use. More...
 
#define DHCP6_RELEASE   8
 INFORM message in OPT of RIP_MSG. No use. More...
 
#define DHCP6_DECLINE   9
 INFORM message in OPT of RIP_MSG. No use. More...
 
#define DHCP6_RECONFIGURE   10
 INFORM message in OPT of RIP_MSG. No use. More...
 
#define DHCP6_INFO_REQUEST   11
 INFORM message in OPT of RIP_MSG. No use. More...
 

Enumerations

enum  {
  OPT_CLIENTID = 1, OPT_SERVERID = 2, OPT_IANA = 3, OPT_IATA = 4,
  OPT_IAADDR = 5, OPT_REQUEST = 6, OPT_PREFERENCE = 7, OPT_ELAPSED_TIME = 8,
  OPT_RELAY_MSG = 9, OPT_AUTH = 11, OPT_UNICAST = 12, OPT_STATUS_CODE = 13,
  OPT_RAPID_COMMIT = 14, OPT_USER_CLASS = 15, OPT_VENDOR_CLASS = 16, OPT_VENDOR_OPTS = 17,
  OPT_INTERFACE_ID = 18, OPT_RECONF_MSG = 19, OPT_RECONF_ACCEPT = 20, SIP_Server_DNL = 21,
  SIP_Server_V6ADDR = 22, DNS_RecursiveNameServer = 23, Domain_Search_List = 24, OPT_IAPD = 25,
  OPT_IAPREFIX = 26, OPT_NIS_SERVERS = 27, OPT_NISP_SERVERS = 28, OPT_NIS_DOMAIN_NAME = 29,
  OPT_NISP_DOMAIN_NAME = 30, OPT_LIFETIME = 32, FQ_DOMAIN_NAME = 39
}
 

Functions

void send_DHCP_SOLICIT (void)
 
uint8_t send_DHCP_REQUEST (void)
 
uint8_t check_DHCP_timeout (void)
 
void reset_DHCP_timeout (void)
 
void InitDhcpOption (unsigned asize, unsigned agrowby)
 
void AppendDhcpOption (uint8_t value)
 
void DumpDhcpOption (char *sMark)
 
void DHCP_Option_Select (uint8_t option)
 
uint8_t send_DHCP_INFOREQ (void)
 
int8_t parseDHCPMSG (void)
 
uint8_t DHCP_run2 (void)
 
uint8_t DHCP_run (wiz_NetInfo *netinfo)
 
void DHCP_stop (void)
 
void DHCP_init (uint8_t s, uint8_t *buf)
 
void DHCP_time_handler (void)
 

Variables

uint8_t DNS6_Address [16]
 
uint8_t DHCP_SOCKET
 
uint8_t DHCP_allocated_ip [16]
 
int8_t dhcp_state = STATE_DHCP6_INIT
 
int8_t dhcp_retry_count = 0
 
volatile uint32_t dhcp_tick_1s = 0
 
uint32_t dhcp_tick_next = DHCP_WAIT_TIME
 
uint32_t DHCP_XID
 
RIP_MSG pDHCPMSG
 
uint8_t HOST_NAME [] = DCHP_HOST_NAME
 
uint8_t DHCP_CHADDR [6]
 
uint16_t DUID_type_s
 
uint16_t Hardware_type_s
 
uint8_t Time_s [4]
 
uint32_t Enterprise_num_s
 
uint8_t Server_MAC [6]
 
uint8_t recv_IP [16]
 
uint32_t PreLifeTime
 
uint32_t ValidLifeTime
 
uint16_t code
 
uint8_t IAID [4]
 
uint8_t T1 [4]
 
uint8_t T2 [4]
 
uint16_t iana_len
 
uint16_t iaaddr_len
 
uint16_t statuscode_len
 
uint16_t Lstatuscode_len
 
uint16_t serverid_len
 
uint16_t clientid_len
 
uint8_t status_msg [] = ""
 
unsigned size
 
unsigned num
 
unsigned num2 = 0
 
unsigned growby
 

Detailed Description

DHCPv6 APIs implement file.

Processig DHCPv6 protocol as SOLICIT, ADVERTISE.

Version
0.0.1
Date
2016/06/08
Revision history
<2016/07/18> 1st Release
Author
JustinKim

Copyright (c) 2016, WIZnet Co., LTD. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the <ORGANIZATION> nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Definition in file dhcpv6.c.

Macro Definition Documentation

◆ _DHCP6_DEBUG_

#define _DHCP6_DEBUG_

Definition at line 49 of file dhcpv6.c.

◆ STATE_DHCP6_INIT

#define STATE_DHCP6_INIT   0

Initialize.

Definition at line 55 of file dhcpv6.c.

◆ STATE_DHCP6_SOLICIT

#define STATE_DHCP6_SOLICIT   1

send DISCOVER and wait OFFER

Definition at line 56 of file dhcpv6.c.

◆ STATE_DHCP6_REQUEST

#define STATE_DHCP6_REQUEST   2

send REQEUST and wait ACK or NACK

Definition at line 57 of file dhcpv6.c.

◆ STATE_DHCP6_LEASED

#define STATE_DHCP6_LEASED   3

ReceiveD ACK and IP leased.

Definition at line 58 of file dhcpv6.c.

◆ STATE_DHCP6_REREQUEST

#define STATE_DHCP6_REREQUEST   4

send REQUEST for maintaining leased IP

Definition at line 59 of file dhcpv6.c.

◆ STATE_DHCP6_RELEASE

#define STATE_DHCP6_RELEASE   5

No use.

Definition at line 60 of file dhcpv6.c.

◆ STATE_DHCP6_STOP

#define STATE_DHCP6_STOP   6

Stop procssing DHCP.

Definition at line 61 of file dhcpv6.c.

◆ DHCP6_SOLICIT

#define DHCP6_SOLICIT   1

DISCOVER message in OPT of RIP_MSG.

Definition at line 64 of file dhcpv6.c.

◆ DHCP6_ADVERTISE

#define DHCP6_ADVERTISE   2

OFFER message in OPT of RIP_MSG.

Definition at line 65 of file dhcpv6.c.

◆ DHCP6_REQUEST

#define DHCP6_REQUEST   3

REQUEST message in OPT of RIP_MSG.

Definition at line 66 of file dhcpv6.c.

◆ DHCP6_CONFIRM

#define DHCP6_CONFIRM   4

DECLINE message in OPT of RIP_MSG.

Definition at line 67 of file dhcpv6.c.

◆ DHCP6_RENEW

#define DHCP6_RENEW   5

ACK message in OPT of RIP_MSG.

Definition at line 68 of file dhcpv6.c.

◆ DHCP6_REBIND

#define DHCP6_REBIND   6

NACK message in OPT of RIP_MSG.

Definition at line 69 of file dhcpv6.c.

◆ DHCP6_REPLY

#define DHCP6_REPLY   7

RELEASE message in OPT of RIP_MSG. No use.

Definition at line 70 of file dhcpv6.c.

◆ DHCP6_RELEASE

#define DHCP6_RELEASE   8

INFORM message in OPT of RIP_MSG. No use.

Definition at line 71 of file dhcpv6.c.

◆ DHCP6_DECLINE

#define DHCP6_DECLINE   9

INFORM message in OPT of RIP_MSG. No use.

Definition at line 72 of file dhcpv6.c.

◆ DHCP6_RECONFIGURE

#define DHCP6_RECONFIGURE   10

INFORM message in OPT of RIP_MSG. No use.

Definition at line 73 of file dhcpv6.c.

◆ DHCP6_INFO_REQUEST

#define DHCP6_INFO_REQUEST   11

INFORM message in OPT of RIP_MSG. No use.

Definition at line 74 of file dhcpv6.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
OPT_CLIENTID 
OPT_SERVERID 
OPT_IANA 
OPT_IATA 
OPT_IAADDR 
OPT_REQUEST 
OPT_PREFERENCE 
OPT_ELAPSED_TIME 
OPT_RELAY_MSG 
OPT_AUTH 
OPT_UNICAST 
OPT_STATUS_CODE 
OPT_RAPID_COMMIT 
OPT_USER_CLASS 
OPT_VENDOR_CLASS 
OPT_VENDOR_OPTS 
OPT_INTERFACE_ID 
OPT_RECONF_MSG 
OPT_RECONF_ACCEPT 
SIP_Server_DNL 
SIP_Server_V6ADDR 
DNS_RecursiveNameServer 
Domain_Search_List 
OPT_IAPD 
OPT_IAPREFIX 
OPT_NIS_SERVERS 
OPT_NISP_SERVERS 
OPT_NIS_DOMAIN_NAME 
OPT_NISP_DOMAIN_NAME 
OPT_LIFETIME 
FQ_DOMAIN_NAME 

Definition at line 84 of file dhcpv6.c.

Function Documentation

◆ send_DHCP_SOLICIT()

void send_DHCP_SOLICIT ( void  )

◆ send_DHCP_REQUEST()

uint8_t send_DHCP_REQUEST ( void  )

◆ check_DHCP_timeout()

uint8_t check_DHCP_timeout ( void  )

◆ reset_DHCP_timeout()

void reset_DHCP_timeout ( void  )

Definition at line 1261 of file dhcpv6.c.

References dhcp_retry_count, dhcp_tick_1s, dhcp_tick_next, and DHCP_WAIT_TIME.

Referenced by check_DHCP_timeout(), and DHCP_init().

◆ InitDhcpOption()

void InitDhcpOption ( unsigned  asize,
unsigned  agrowby 
)
Parameters
asize
agrowby

Definition at line 188 of file dhcpv6.c.

References growby, num, and size.

Referenced by send_DHCP_INFOREQ(), send_DHCP_REQUEST(), and send_DHCP_SOLICIT().

◆ AppendDhcpOption()

void AppendDhcpOption ( uint8_t  value)
Parameters
value

Definition at line 200 of file dhcpv6.c.

References num, RIP_MSG::OPT, pDHCPMSG, and size.

Referenced by send_DHCP_INFOREQ(), send_DHCP_REQUEST(), and send_DHCP_SOLICIT().

◆ DumpDhcpOption()

void DumpDhcpOption ( char *  sMark)
Parameters
sMark

Definition at line 218 of file dhcpv6.c.

References num, num2, RIP_MSG::OPT, pDHCPMSG, and size.

Referenced by send_DHCP_INFOREQ(), send_DHCP_REQUEST(), and send_DHCP_SOLICIT().

◆ DHCP_Option_Select()

void DHCP_Option_Select ( uint8_t  option)

◆ send_DHCP_INFOREQ()

uint8_t send_DHCP_INFOREQ ( void  )

◆ parseDHCPMSG()

int8_t parseDHCPMSG ( void  )

◆ DHCP_run2()

uint8_t DHCP_run2 ( void  )

◆ DHCP_run()

uint8_t DHCP_run ( wiz_NetInfo netinfo)

◆ DHCP_stop()

void DHCP_stop ( void  )

Definition at line 1165 of file dhcpv6.c.

References close(), DHCP_SOCKET, dhcp_state, and STATE_DHCP6_STOP.

◆ DHCP_init()

void DHCP_init ( uint8_t  s,
uint8_t *  buf 
)
Parameters
s
buf

Definition at line 1228 of file dhcpv6.c.

References DHCP_CHADDR, DHCP_SOCKET, dhcp_state, DHCP_XID, getSHAR, RIP_MSG::OPT, pDHCPMSG, reset_DHCP_timeout(), setSHAR, and STATE_DHCP6_INIT.

◆ DHCP_time_handler()

void DHCP_time_handler ( void  )

Definition at line 1272 of file dhcpv6.c.

References dhcp_tick_1s.

Variable Documentation

◆ DNS6_Address

uint8_t DNS6_Address[16]
Initial value:
= {
0,
}

Definition at line 76 of file dhcpv6.c.

Referenced by parseDHCPMSG().

◆ DHCP_SOCKET

uint8_t DHCP_SOCKET

◆ DHCP_allocated_ip

uint8_t DHCP_allocated_ip[16]
Initial value:
= {
0,
}

Definition at line 130 of file dhcpv6.c.

Referenced by DHCP_run().

◆ dhcp_state

int8_t dhcp_state = STATE_DHCP6_INIT

Definition at line 133 of file dhcpv6.c.

Referenced by check_DHCP_timeout(), DHCP_init(), DHCP_run(), DHCP_run2(), and DHCP_stop().

◆ dhcp_retry_count

int8_t dhcp_retry_count = 0

Definition at line 134 of file dhcpv6.c.

Referenced by check_DHCP_timeout(), and reset_DHCP_timeout().

◆ dhcp_tick_1s

volatile uint32_t dhcp_tick_1s = 0

Definition at line 136 of file dhcpv6.c.

Referenced by check_DHCP_timeout(), DHCP_time_handler(), and reset_DHCP_timeout().

◆ dhcp_tick_next

uint32_t dhcp_tick_next = DHCP_WAIT_TIME

Definition at line 137 of file dhcpv6.c.

Referenced by check_DHCP_timeout(), and reset_DHCP_timeout().

◆ DHCP_XID

uint32_t DHCP_XID

Definition at line 139 of file dhcpv6.c.

Referenced by DHCP_init(), send_DHCP_INFOREQ(), send_DHCP_REQUEST(), and send_DHCP_SOLICIT().

◆ pDHCPMSG

RIP_MSG pDHCPMSG

◆ HOST_NAME

uint8_t HOST_NAME[] = DCHP_HOST_NAME

Definition at line 143 of file dhcpv6.c.

◆ DHCP_CHADDR

uint8_t DHCP_CHADDR[6]

Definition at line 145 of file dhcpv6.c.

Referenced by DHCP_init(), send_DHCP_INFOREQ(), send_DHCP_REQUEST(), and send_DHCP_SOLICIT().

◆ DUID_type_s

uint16_t DUID_type_s

Definition at line 157 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ Hardware_type_s

uint16_t Hardware_type_s

Definition at line 158 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ Time_s

uint8_t Time_s[4]

Definition at line 159 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ Enterprise_num_s

uint32_t Enterprise_num_s

Definition at line 160 of file dhcpv6.c.

Referenced by parseDHCPMSG().

◆ Server_MAC

uint8_t Server_MAC[6]

Definition at line 161 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ recv_IP

uint8_t recv_IP[16]

Definition at line 162 of file dhcpv6.c.

Referenced by DHCP_run(), parseDHCPMSG(), and send_DHCP_REQUEST().

◆ PreLifeTime

uint32_t PreLifeTime

Definition at line 163 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ ValidLifeTime

uint32_t ValidLifeTime

Definition at line 164 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ code

uint16_t code

Definition at line 165 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ IAID

uint8_t IAID[4]

Definition at line 166 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ T1

uint8_t T1[4]

Definition at line 167 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ T2

uint8_t T2[4]

Definition at line 168 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ iana_len

uint16_t iana_len

Definition at line 169 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ iaaddr_len

uint16_t iaaddr_len

Definition at line 170 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ statuscode_len

uint16_t statuscode_len

Definition at line 171 of file dhcpv6.c.

Referenced by parseDHCPMSG().

◆ Lstatuscode_len

uint16_t Lstatuscode_len

Definition at line 172 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ serverid_len

uint16_t serverid_len

Definition at line 173 of file dhcpv6.c.

Referenced by parseDHCPMSG(), and send_DHCP_REQUEST().

◆ clientid_len

uint16_t clientid_len

Definition at line 174 of file dhcpv6.c.

Referenced by parseDHCPMSG().

◆ status_msg

uint8_t status_msg[] = ""

Definition at line 175 of file dhcpv6.c.

◆ size

unsigned size

◆ num

unsigned num

◆ num2

unsigned num2 = 0

Definition at line 179 of file dhcpv6.c.

Referenced by DumpDhcpOption().

◆ growby

unsigned growby

Definition at line 180 of file dhcpv6.c.

Referenced by InitDhcpOption(), send_DHCP_INFOREQ(), send_DHCP_REQUEST(), and send_DHCP_SOLICIT().