49 lines
2.1 KiB
C
49 lines
2.1 KiB
C
/******************************************************************************
|
|
* Copyright (c) 2004, 2008 IBM Corporation
|
|
* All rights reserved.
|
|
* This program and the accompanying materials
|
|
* are made available under the terms of the BSD License
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.opensource.org/licenses/bsd-license.php
|
|
*
|
|
* Contributors:
|
|
* IBM Corporation - initial implementation
|
|
*****************************************************************************/
|
|
|
|
#ifndef _DHCP_H_
|
|
#define _DHCP_H_
|
|
|
|
#include <stdint.h>
|
|
#include "tftp.h"
|
|
|
|
/** \struct btphdr
|
|
* A header for BootP/DHCP-messages.
|
|
* For more information see RFC 951 / RFC 2131.
|
|
*/
|
|
struct btphdr {
|
|
uint8_t op; /**< Identifies is it request (1) or reply (2) */
|
|
uint8_t htype; /**< HW address type (ethernet usually) */
|
|
uint8_t hlen; /**< HW address length */
|
|
uint8_t hops; /**< This info used by relay agents (not used) */
|
|
uint32_t xid; /**< This ID is used to match queries and replies */
|
|
uint16_t secs; /**< Unused */
|
|
uint16_t unused; /**< Unused */
|
|
uint32_t ciaddr; /**< Client IP address (if client knows it) */
|
|
uint32_t yiaddr; /**< "Your" (client) IP address */
|
|
uint32_t siaddr; /**< Next server IP address (TFTP server IP) */
|
|
uint32_t giaddr; /**< Gateway IP address (used by relay agents) */
|
|
uint8_t chaddr[16]; /**< Client HW address */
|
|
uint8_t sname[64]; /**< Server host name (TFTP server name) */
|
|
uint8_t file[128]; /**< Boot file name */
|
|
uint8_t vend[64]; /**< Optional parameters field (DHCP-options) */
|
|
};
|
|
|
|
void dhcpv4_generate_transaction_id(void);
|
|
int bootp(char *ret_buffer, filename_ip_t *, unsigned int);
|
|
int dhcpv4(char *ret_buffer, filename_ip_t *);
|
|
void dhcp_send_release(int fd);
|
|
|
|
/* Handles DHCP-packets, which are detected by receive_ether. */
|
|
extern int8_t handle_dhcp(int fd, uint8_t * packet, int32_t packetsize);
|
|
|
|
#endif
|