/** * @file * DHCP client API *//* ... *//* * Copyright (c) 2001-2004 Leon Woestenberg <leon.woestenberg@gmx.net> * Copyright (c) 2001-2004 Axon Digital Design B.V., The Netherlands. * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * 2. 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. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. * * This file is part of the lwIP TCP/IP stack. * * Author: Leon Woestenberg <leon.woestenberg@gmx.net> * *//* ... */#ifndefLWIP_HDR_DHCP_H#defineLWIP_HDR_DHCP_H#include"lwip/opt.h"#ifLWIP_DHCP/* don't build if not configured for use in lwipopts.h */#include"lwip/netif.h"#include"lwip/udp.h"#ifdef__cplusplusextern"C"{#endif/** period (in seconds) of the application calling dhcp_coarse_tmr() */#defineDHCP_COARSE_TIMER_SECS60/** period (in milliseconds) of the application calling dhcp_coarse_tmr() */#defineDHCP_COARSE_TIMER_MSECS(DHCP_COARSE_TIMER_SECS*1000UL)/** period (in milliseconds) of the application calling dhcp_fine_tmr() */#defineDHCP_FINE_TIMER_MSECS500#defineDHCP_BOOT_FILE_LEN128U/* AutoIP cooperation flags (struct dhcp.autoip_coop_state) */typedefenum{DHCP_AUTOIP_COOP_STATE_OFF=0,DHCP_AUTOIP_COOP_STATE_ON=1...}dhcp_autoip_coop_state_enum_t;structdhcp{/** transaction identifier of last sent request */u32_txid;/** track PCB allocation state */u8_tpcb_allocated;/** current DHCP state machine state */u8_tstate;/** retries of current request */u8_ttries;#ifLWIP_DHCP_AUTOIP_COOPu8_tautoip_coop_state;#endifu8_tsubnet_mask_given;u16_trequest_timeout;/* #ticks with period DHCP_FINE_TIMER_SECS for request timeout */u16_tt1_timeout;/* #ticks with period DHCP_COARSE_TIMER_SECS for renewal time */u16_tt2_timeout;/* #ticks with period DHCP_COARSE_TIMER_SECS for rebind time */u16_tt1_renew_time;/* #ticks with period DHCP_COARSE_TIMER_SECS until next renew try */u16_tt2_rebind_time;/* #ticks with period DHCP_COARSE_TIMER_SECS until next rebind try */u16_tlease_used;/* #ticks with period DHCP_COARSE_TIMER_SECS since last received DHCP ack */u16_tt0_timeout;/* #ticks with period DHCP_COARSE_TIMER_SECS for lease time */ip_addr_tserver_ip_addr;/* dhcp server address that offered this lease (ip_addr_t because passed to UDP) */ip4_addr_toffered_ip_addr;ip4_addr_toffered_sn_mask;ip4_addr_toffered_gw_addr;u32_toffered_t0_lease;/* lease period (in seconds) */u32_toffered_t1_renew;/* recommended renew time (usually 50% of lease period) */u32_toffered_t2_rebind;/* recommended rebind time (usually 87.5 of lease period) */#ifLWIP_DHCP_BOOTP_FILEip4_addr_toffered_si_addr;charboot_file_name[DHCP_BOOT_FILE_LEN];/* ... */#endif/* LWIP_DHCP_BOOTPFILE */...};voiddhcp_set_struct(structnetif*netif,structdhcp*dhcp);/** Remove a struct dhcp previously set to the netif using dhcp_set_struct() */#definedhcp_remove_struct(netif)netif_set_client_data(netif,LWIP_NETIF_CLIENT_DATA_INDEX_DHCP,NULL)voiddhcp_cleanup(structnetif*netif);err_tdhcp_start(structnetif*netif);err_tdhcp_renew(structnetif*netif);err_tdhcp_release(structnetif*netif);voiddhcp_stop(structnetif*netif);voiddhcp_release_and_stop(structnetif*netif);voiddhcp_inform(structnetif*netif);voiddhcp_network_changed(structnetif*netif);#ifDHCP_DOES_ARP_CHECKvoiddhcp_arp_reply(structnetif*netif,constip4_addr_t*addr);#endifu8_tdhcp_supplied_address(conststructnetif*netif);/* to be called every minute */voiddhcp_coarse_tmr(void);/* to be called every half second */voiddhcp_fine_tmr(void);#ifLWIP_DHCP_GET_NTP_SRV/** This function must exist, in other to add offered NTP servers to * the NTP (or SNTP) engine. * See LWIP_DHCP_MAX_NTP_SERVERS *//* ... */externvoiddhcp_set_ntp_servers(u8_tnum_ntp_servers,constip4_addr_t*ntp_server_addrs);/* ... */#endif/* LWIP_DHCP_GET_NTP_SRV */#definenetif_dhcp_data(netif)((structdhcp*)netif_get_client_data(netif,LWIP_NETIF_CLIENT_DATA_INDEX_DHCP))#ifdef__cplusplus}extern "C" { ... }#endif/* ... */#endif/* LWIP_DHCP *//* ... */#endif/*LWIP_HDR_DHCP_H*/
Details
Show: from
Types: Columns:
All items filtered out
All items filtered out
This file uses the notable symbols shown below. Click anywhere in the file to view more details.