Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[int13] Split out ISO9660 and El Torito definitions to separate heade…
…r files Signed-off-by: Michael Brown <mcb30@ipxe.org>
- Loading branch information
Showing
4 changed files
with
149 additions
and
116 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
#ifndef _IPXE_ELTORITO_H | ||
#define _IPXE_ELTORITO_H | ||
|
||
/** | ||
* @file | ||
* | ||
* El Torito bootable CD-ROM specification | ||
* | ||
*/ | ||
|
||
FILE_LICENCE ( GPL2_OR_LATER ); | ||
|
||
#include <stdint.h> | ||
#include <ipxe/iso9660.h> | ||
|
||
/** An El Torito Boot Record Volume Descriptor (fixed portion) */ | ||
struct eltorito_descriptor_fixed { | ||
/** Descriptor type */ | ||
uint8_t type; | ||
/** Identifier ("CD001") */ | ||
uint8_t id[5]; | ||
/** Version, must be 1 */ | ||
uint8_t version; | ||
/** Boot system indicator; must be "EL TORITO SPECIFICATION" */ | ||
uint8_t system_id[32]; | ||
} __attribute__ (( packed )); | ||
|
||
/** An El Torito Boot Record Volume Descriptor */ | ||
struct eltorito_descriptor { | ||
/** Fixed portion */ | ||
struct eltorito_descriptor_fixed fixed; | ||
/** Unused */ | ||
uint8_t unused[32]; | ||
/** Boot catalog sector */ | ||
uint32_t sector; | ||
} __attribute__ (( packed )); | ||
|
||
/** El Torito Boot Record Volume Descriptor block address */ | ||
#define ELTORITO_LBA 17 | ||
|
||
/** An El Torito Boot Catalog Validation Entry */ | ||
struct eltorito_validation_entry { | ||
/** Header ID; must be 1 */ | ||
uint8_t header_id; | ||
/** Platform ID | ||
* | ||
* 0 = 80x86 | ||
* 1 = PowerPC | ||
* 2 = Mac | ||
*/ | ||
uint8_t platform_id; | ||
/** Reserved */ | ||
uint16_t reserved; | ||
/** ID string */ | ||
uint8_t id_string[24]; | ||
/** Checksum word */ | ||
uint16_t checksum; | ||
/** Signature; must be 0xaa55 */ | ||
uint16_t signature; | ||
} __attribute__ (( packed )); | ||
|
||
/** El Torito platform IDs */ | ||
enum eltorito_platform_id { | ||
ELTORITO_PLATFORM_X86 = 0x00, | ||
ELTORITO_PLATFORM_POWERPC = 0x01, | ||
ELTORITO_PLATFORM_MAC = 0x02, | ||
}; | ||
|
||
/** A bootable entry in the El Torito Boot Catalog */ | ||
struct eltorito_boot_entry { | ||
/** Boot indicator | ||
* | ||
* Must be @c ELTORITO_BOOTABLE for a bootable ISO image | ||
*/ | ||
uint8_t indicator; | ||
/** Media type | ||
* | ||
*/ | ||
uint8_t media_type; | ||
/** Load segment */ | ||
uint16_t load_segment; | ||
/** System type */ | ||
uint8_t filesystem; | ||
/** Unused */ | ||
uint8_t reserved_a; | ||
/** Sector count */ | ||
uint16_t length; | ||
/** Starting sector */ | ||
uint32_t start; | ||
/** Unused */ | ||
uint8_t reserved_b[20]; | ||
} __attribute__ (( packed )); | ||
|
||
/** Boot indicator for a bootable ISO image */ | ||
#define ELTORITO_BOOTABLE 0x88 | ||
|
||
/** El Torito media types */ | ||
enum eltorito_media_type { | ||
/** No emulation */ | ||
ELTORITO_NO_EMULATION = 0, | ||
}; | ||
|
||
#endif /* _IPXE_ELTORITO_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
#ifndef _IPXE_ISO9660_H | ||
#define _IPXE_ISO9660_H | ||
|
||
/** | ||
* @file | ||
* | ||
* ISO9660 CD-ROM specification | ||
* | ||
*/ | ||
|
||
FILE_LICENCE ( GPL2_OR_LATER ); | ||
|
||
#include <stdint.h> | ||
|
||
/** ISO9660 block size */ | ||
#define ISO9660_BLKSIZE 2048 | ||
|
||
/** An ISO9660 Primary Volume Descriptor (fixed portion) */ | ||
struct iso9660_primary_descriptor_fixed { | ||
/** Descriptor type */ | ||
uint8_t type; | ||
/** Identifier ("CD001") */ | ||
uint8_t id[5]; | ||
} __attribute__ (( packed )); | ||
|
||
/** An ISO9660 Primary Volume Descriptor */ | ||
struct iso9660_primary_descriptor { | ||
/** Fixed portion */ | ||
struct iso9660_primary_descriptor_fixed fixed; | ||
} __attribute__ (( packed )); | ||
|
||
/** ISO9660 Primary Volume Descriptor type */ | ||
#define ISO9660_TYPE_PRIMARY 0x01 | ||
|
||
/** ISO9660 Primary Volume Descriptor block address */ | ||
#define ISO9660_PRIMARY_LBA 16 | ||
|
||
/** ISO9660 Boot Volume Descriptor type */ | ||
#define ISO9660_TYPE_BOOT 0x00 | ||
|
||
/** ISO9660 identifier */ | ||
#define ISO9660_ID "CD001" | ||
|
||
#endif /* _IPXE_ISO9660_H */ |