#ifndef PXE_TYPES_H
#define PXE_TYPES_H

/** @file
 *
 * PXE data types
 *
 */

FILE_LICENCE ( GPL2_OR_LATER );

#include <stdint.h>
#include <errno.h> /* PXE status codes */

/** @addtogroup pxe Preboot eXecution Environment (PXE) API
 *  @{
 */

/** @defgroup pxe_types PXE data types
 *
 * Basic PXE data types such as #UINT16_t, #ADDR32_t, #SEGSEL_t etc.
 *
 * These definitions are based on Table 1-1 ("Data Type Definitions")
 * in the Intel PXE specification version 2.1.  They have been
 * generalised to non-x86 architectures where possible.
 *
 * @{
 */

/** An 8-bit unsigned integer */
typedef uint8_t UINT8_t;

/** A 16-bit unsigned integer */
typedef uint16_t UINT16_t;

/** A 32-bit unsigned integer */
typedef uint32_t UINT32_t;

/** A PXE exit code.
 *
 * Permitted values are #PXENV_EXIT_SUCCESS and #PXENV_EXIT_FAILURE.
 *
 */
typedef UINT16_t PXENV_EXIT_t;
#define PXENV_EXIT_SUCCESS	0x0000	/**< No error occurred */
#define PXENV_EXIT_FAILURE	0x0001	/**< An error occurred */

/** A PXE status code.
 *
 * Status codes are defined in errno.h.
 *
 */
typedef UINT16_t PXENV_STATUS_t;

/** An IPv4 address.
 *
 * @note This data type is in network (big-endian) byte order.
 *
 */
typedef UINT32_t IP4_t;

/** A UDP port.
 *
 * @note This data type is in network (big-endian) byte order.
 *
 */
typedef UINT16_t UDP_PORT_t;

/** Maximum length of a MAC address */
#define MAC_ADDR_LEN 16

/** A MAC address */
typedef UINT8_t MAC_ADDR_t[MAC_ADDR_LEN];

#ifndef HAVE_ARCH_ADDR32
/** A physical address.
 *
 * For x86, this is a 32-bit physical address, and is therefore
 * limited to the low 4GB.
 *
 */
typedef UINT32_t ADDR32_t;
#endif

#ifndef HAVE_ARCH_SEGSEL
/** A segment selector.
 *
 * For x86, this is a real mode segment (0x0000-0xffff), or a
 * protected-mode segment selector, such as could be loaded into a
 * segment register.
 *
 */
typedef UINT16_t SEGSEL_t;
#endif

#ifndef HAVE_ARCH_OFF16
/** An offset within a segment identified by #SEGSEL
 *
 * For x86, this is a 16-bit offset.
 *
 */
typedef UINT16_t OFF16_t;
#endif

/** A segment:offset address
 *
 * For x86, this is a 16-bit real-mode or protected-mode
 * segment:offset address.
 *
 */
typedef struct s_SEGOFF16 {
	OFF16_t		offset;		/**< Offset within the segment */
	SEGSEL_t	segment;	/**< Segment selector */
} PACKED SEGOFF16_t;

/** A segment descriptor */
typedef struct s_SEGDESC {
	SEGSEL_t	segment_address;	/**< Segment selector */
	ADDR32_t	Physical_address;	/**< Segment base address */
	OFF16_t		Seg_size;		/**< Size of the segment */
} PACKED SEGDESC_t;

/** @} */ /* pxe_types */

/** @} */ /* pxe */

#endif /* PXE_TYPES_H */
