diff options
Diffstat (limited to 'contrib/syslinux/syslinux-4.03/core/fs/pxe/pxe.h')
-rw-r--r-- | contrib/syslinux/syslinux-4.03/core/fs/pxe/pxe.h | 252 |
1 files changed, 0 insertions, 252 deletions
diff --git a/contrib/syslinux/syslinux-4.03/core/fs/pxe/pxe.h b/contrib/syslinux/syslinux-4.03/core/fs/pxe/pxe.h deleted file mode 100644 index 1e6fa76..0000000 --- a/contrib/syslinux/syslinux-4.03/core/fs/pxe/pxe.h +++ /dev/null @@ -1,252 +0,0 @@ -/* ----------------------------------------------------------------------- - * - * Copyright 1999-2008 H. Peter Anvin - All Rights Reserved - * Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin - * - * 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, Inc., 53 Temple Place Ste 330, - * Boston MA 02111-1307, USA; either version 2 of the License, or - * (at your option) any later version; incorporated herein by reference. - * - * ----------------------------------------------------------------------- */ - -/* - * pxe.h - * - * PXE opcodes - * - */ -#ifndef PXE_H -#define PXE_H - -#include <syslinux/pxe_api.h> -#include "fs.h" /* For MAX_OPEN, should go away */ - -/* - * Some basic defines... - */ -#define TFTP_PORT htons(69) /* Default TFTP port */ -#define TFTP_BLOCKSIZE_LG2 9 -#define TFTP_BLOCKSIZE (1 << TFTP_BLOCKSIZE_LG2) -#define PKTBUF_SIZE 2048 /* */ - -#define is_digit(c) (((c) >= '0') && ((c) <= '9')) - -static inline bool is_hex(char c) -{ - return (c >= '0' && c <= '9') || - (c >= 'A' && c <= 'F') || - (c >= 'a' && c <= 'f'); -} - -static inline int hexval(char c) -{ - return (c >= 'A') ? (c & ~0x20) - 'A' + 10 : (c - '0'); -} - -/* - * TFTP operation codes - */ -#define TFTP_RRQ htons(1) // Read rest -#define TFTP_WRQ htons(2) // Write rest -#define TFTP_DATA htons(3) // Data packet -#define TFTP_ACK htons(4) // ACK packet -#define TFTP_ERROR htons(5) // ERROR packet -#define TFTP_OACK htons(6) // OACK packet - -/* - * TFTP error codes - */ -#define TFTP_EUNDEF htons(0) // Unspecified error -#define TFTP_ENOTFOUND htons(1) // File not found -#define TFTP_EACCESS htons(2) // Access violation -#define TFTP_ENOSPACE htons(3) // Disk full -#define TFTP_EBADOP htons(4) // Invalid TFTP operation -#define TFTP_EBADID htons(5) // Unknown transfer -#define TFTP_EEXISTS htons(6) // File exists -#define TFTP_ENOUSER htons(7) // No such user -#define TFTP_EOPTNEG htons(8) // Option negotiation failure - - -#define BOOTP_OPTION_MAGIC htonl(0x63825363) -#define MAC_MAX 32 - -/* Defines for DNS */ -#define DNS_PORT htons(53) /* Default DNS port */ -#define DNS_MAX_PACKET 512 /* Defined by protocol */ -#define DNS_MAX_SERVERS 4 /* Max no of DNS servers */ - - -/* - * structures - */ - -struct pxenv_t { - uint8_t signature[6]; /* PXENV+ */ - uint16_t version; - uint8_t length; - uint8_t checksum; - segoff16_t rmentry; - uint32_t pmoffset; - uint16_t pmselector; - uint16_t stackseg; - uint16_t stacksize; - uint16_t bc_codeseg; - uint16_t bc_codesize; - uint16_t bc_dataseg; - uint16_t bc_datasize; - uint16_t undidataseg; - uint16_t undidatasize; - uint16_t undicodeseg; - uint16_t undicodesize; - segoff16_t pxeptr; -} __packed; - -struct pxe_t { - uint8_t signature[4]; /* !PXE */ - uint8_t structlength; - uint8_t structcksum; - uint8_t structrev; - uint8_t _pad1; - segoff16_t undiromid; - segoff16_t baseromid; - segoff16_t entrypointsp; - segoff16_t entrypointesp; - segoff16_t statuscallout; - uint8_t _pad2; - uint8_t segdesccnt; - uint16_t firstselector; - pxe_segdesc_t seg[7]; -} __packed; - -enum pxe_segments { - PXE_Seg_Stack = 0, - PXE_Seg_UNDIData = 1, - PXE_Seg_UNDICode = 2, - PXE_Seg_UNDICodeWrite = 3, - PXE_Seg_BC_Data = 4, - PXE_Seg_BC_Code = 5, - PXE_Seg_BC_CodeWrite = 6 -}; - -struct bootp_t { - uint8_t opcode; /* BOOTP/DHCP "opcode" */ - uint8_t hardware; /* ARP hreadware type */ - uint8_t hardlen; /* Hardware address length */ - uint8_t gatehops; /* Used by forwarders */ - uint32_t ident; /* Transaction ID */ - uint16_t seconds; /* Seconds elapsed */ - uint16_t flags; /* Broadcast flags */ - uint32_t cip; /* Cient IP */ - uint32_t yip; /* "Your" IP */ - uint32_t sip; /* Next Server IP */ - uint32_t gip; /* Relay agent IP */ - uint8_t macaddr[16]; /* Client MAC address */ - uint8_t sname[64]; /* Server name (optional) */ - char bootfile[128]; /* Boot file name */ - uint32_t option_magic; /* Vendor option magic cookie */ - uint8_t options[1260]; /* Vendor options */ -} __attribute__ ((packed)); - -/* - * Our inode private information -- this includes the packet buffer! - */ -struct pxe_pvt_inode { - uint16_t tftp_localport; /* Local port number (0=not in us)*/ - uint16_t tftp_remoteport; /* Remote port number */ - uint32_t tftp_remoteip; /* Remote IP address */ - uint32_t tftp_filepos; /* bytes downloaded (includeing buffer) */ - uint32_t tftp_blksize; /* Block size for this connection(*) */ - uint16_t tftp_bytesleft; /* Unclaimed data bytes */ - uint16_t tftp_lastpkt; /* Sequence number of last packet (NBO) */ - char *tftp_dataptr; /* Pointer to available data */ - uint8_t tftp_goteof; /* 1 if the EOF packet received */ - uint8_t tftp_unused[3]; /* Currently unused */ - char tftp_pktbuf[PKTBUF_SIZE]; -} __attribute__ ((packed)); - -#define PVT(i) ((struct pxe_pvt_inode *)((i)->pvt)) - -/* - * Network boot information - */ -struct ip_info { - uint32_t ipv4; - uint32_t myip; - uint32_t serverip; - uint32_t gateway; - uint32_t netmask; -}; - -/* - * Variable externs - */ -extern struct ip_info IPInfo; - -extern uint8_t MAC[]; -extern char BOOTIFStr[]; -extern uint8_t MAC_len; -extern uint8_t MAC_type; - -extern uint8_t DHCPMagic; -extern uint32_t RebootTime; - -extern char boot_file[]; -extern char path_prefix[]; -extern char LocalDomain[]; - -extern char IPOption[]; -extern char dot_quad_buf[]; - -extern uint32_t dns_server[]; - -extern uint16_t APIVer; -extern far_ptr_t PXEEntry; -extern uint8_t KeepPXE; - -extern far_ptr_t InitStack; - -extern bool have_uuid; -extern uint8_t uuid_type; -extern uint8_t uuid[]; - -extern uint16_t BIOS_fbm; -extern const uint8_t TimeoutTable[]; - -/* - * Compute the suitable gateway for a specific route -- too many - * vendor PXE stacks don't do this correctly... - */ -static inline uint32_t gateway(uint32_t ip) -{ - if ((ip ^ IPInfo.myip) & IPInfo.netmask) - return IPInfo.gateway; - else - return 0; -} - -/* - * functions - */ - -/* pxe.c */ -bool ip_ok(uint32_t); -int pxe_call(int, void *); - -/* dhcp_options.c */ -void parse_dhcp(int); - -/* dnsresolv.c */ -int dns_mangle(char **, const char *); -uint32_t dns_resolv(const char *); - -/* idle.c */ -void pxe_idle_init(void); -void pxe_idle_cleanup(void); - -/* socknum.c */ -uint16_t get_port(void); -void free_port(uint16_t port); - -#endif /* pxe.h */ |