uboot/net/bootp.h
<<
>>
Prefs
   1/*
   2 *      Copied from LiMon - BOOTP.
   3 *
   4 *      Copyright 1994, 1995, 2000 Neil Russell.
   5 *      (See License)
   6 *      Copyright 2000 Paolo Scaffardi
   7 */
   8
   9#ifndef __BOOTP_H__
  10#define __BOOTP_H__
  11
  12#ifndef __NET_H__
  13#include <net.h>
  14#endif /* __NET_H__ */
  15
  16/**********************************************************************/
  17
  18/*
  19 *      BOOTP header.
  20 */
  21#if defined(CONFIG_CMD_DHCP)
  22/* Minimum DHCP Options size per RFC2131 - results in 576 byte pkt */
  23#define OPT_FIELD_SIZE 312
  24#if defined(CONFIG_BOOTP_VENDOREX)
  25extern u8 *dhcp_vendorex_prep(u8 *e); /*rtn new e after add own opts. */
  26extern u8 *dhcp_vendorex_proc(u8 *e); /*rtn next e if mine,else NULL  */
  27#endif
  28#else
  29#define OPT_FIELD_SIZE 64
  30#endif
  31
  32struct Bootp_t {
  33        uchar           bp_op;          /* Operation                    */
  34# define OP_BOOTREQUEST 1
  35# define OP_BOOTREPLY   2
  36        uchar           bp_htype;       /* Hardware type                */
  37# define HWT_ETHER      1
  38        uchar           bp_hlen;        /* Hardware address length      */
  39# define HWL_ETHER      6
  40        uchar           bp_hops;        /* Hop count (gateway thing)    */
  41        ulong           bp_id;          /* Transaction ID               */
  42        ushort          bp_secs;        /* Seconds since boot           */
  43        ushort          bp_spare1;      /* Alignment                    */
  44        IPaddr_t        bp_ciaddr;      /* Client IP address            */
  45        IPaddr_t        bp_yiaddr;      /* Your (client) IP address     */
  46        IPaddr_t        bp_siaddr;      /* Server IP address            */
  47        IPaddr_t        bp_giaddr;      /* Gateway IP address           */
  48        uchar           bp_chaddr[16];  /* Client hardware address      */
  49        char            bp_sname[64];   /* Server host name             */
  50        char            bp_file[128];   /* Boot file name               */
  51        char            bp_vend[OPT_FIELD_SIZE]; /* Vendor information  */
  52};
  53
  54#define BOOTP_HDR_SIZE  sizeof(struct Bootp_t)
  55
  56/**********************************************************************/
  57/*
  58 *      Global functions and variables.
  59 */
  60
  61/* bootp.c */
  62extern ulong    BootpID;                /* ID of cur BOOTP request      */
  63extern char     BootFile[128];          /* Boot file name               */
  64extern int      BootpTry;
  65
  66
  67/* Send a BOOTP request */
  68extern void BootpRequest(void);
  69
  70/****************** DHCP Support *********************/
  71extern void DhcpRequest(void);
  72
  73/* DHCP States */
  74typedef enum { INIT,
  75               INIT_REBOOT,
  76               REBOOTING,
  77               SELECTING,
  78               REQUESTING,
  79               REBINDING,
  80               BOUND,
  81               RENEWING } dhcp_state_t;
  82
  83#define DHCP_DISCOVER 1
  84#define DHCP_OFFER    2
  85#define DHCP_REQUEST  3
  86#define DHCP_DECLINE  4
  87#define DHCP_ACK      5
  88#define DHCP_NAK      6
  89#define DHCP_RELEASE  7
  90
  91#define SELECT_TIMEOUT 3000UL   /* Milliseconds to wait for offers */
  92
  93/**********************************************************************/
  94
  95#endif /* __BOOTP_H__ */
  96