2007-06-05 22:01:26 +00:00
|
|
|
#ifndef ELTORITO_H_
|
|
|
|
#define ELTORITO_H_
|
|
|
|
|
|
|
|
#include "tree.h"
|
|
|
|
#include "file.h"
|
|
|
|
#include "ecma119.h"
|
|
|
|
|
|
|
|
struct el_torito_boot_catalog {
|
2007-09-01 20:35:53 +00:00
|
|
|
struct iso_tree_node_boot *node; /* node of the catalog */
|
|
|
|
struct el_torito_boot_image *image; /* default boot image */
|
|
|
|
enum tree_node_from proc; /* whether the catalog is new or read from a
|
|
|
|
* prev session/image */
|
2007-06-05 22:01:26 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct el_torito_boot_image {
|
2007-09-01 20:35:53 +00:00
|
|
|
struct iso_tree_node_boot *node;
|
|
|
|
|
|
|
|
unsigned int bootable:1; /**< If the entry is bootable. */
|
|
|
|
unsigned int isolinux:1; /**< If the image will be patched */
|
2007-06-05 22:01:26 +00:00
|
|
|
unsigned char type; /**< The type of image */
|
|
|
|
unsigned char partition_type; /**< type of partition for HD-emul images */
|
|
|
|
short load_seg; /**< Load segment for the initial boot image. */
|
|
|
|
short load_size; /**< Number of sector to load. */
|
|
|
|
};
|
|
|
|
|
2007-09-01 20:35:53 +00:00
|
|
|
struct el_torito_validation_entry {
|
|
|
|
uint8_t header_id BP(1, 1);
|
|
|
|
uint8_t platform_id BP(2, 2);
|
|
|
|
uint8_t reserved BP(3, 4);
|
|
|
|
uint8_t id_string BP(5, 28);
|
|
|
|
uint8_t checksum BP(29, 30);
|
|
|
|
uint8_t key_byte1 BP(31, 31);
|
|
|
|
uint8_t key_byte2 BP(32, 32);
|
|
|
|
};
|
2007-06-05 22:01:26 +00:00
|
|
|
|
2007-09-01 20:35:53 +00:00
|
|
|
struct el_torito_default_entry {
|
|
|
|
uint8_t boot_indicator BP(1, 1);
|
|
|
|
uint8_t boot_media_type BP(2, 2);
|
|
|
|
uint8_t load_seg BP(3, 4);
|
|
|
|
uint8_t system_type BP(5, 5);
|
|
|
|
uint8_t unused1 BP(6, 6);
|
|
|
|
uint8_t sec_count BP(7, 8);
|
|
|
|
uint8_t block BP(9, 12);
|
|
|
|
uint8_t unused2 BP(13, 32);
|
|
|
|
};
|
2007-06-05 22:01:26 +00:00
|
|
|
|
2007-09-01 20:35:53 +00:00
|
|
|
struct el_torito_section_header_entry {
|
|
|
|
uint8_t header_indicator BP(1, 1);
|
|
|
|
uint8_t platform_id BP(2, 2);
|
|
|
|
uint8_t number BP(3, 4);
|
|
|
|
uint8_t character BP(5, 32);
|
|
|
|
};
|
2007-06-05 22:01:26 +00:00
|
|
|
|
2007-09-01 20:35:53 +00:00
|
|
|
struct el_torito_section_entry {
|
|
|
|
uint8_t boot_indicator BP(1, 1);
|
|
|
|
uint8_t boot_media_type BP(2, 2);
|
|
|
|
uint8_t load_seg BP(3, 4);
|
|
|
|
uint8_t system_type BP(5, 5);
|
|
|
|
uint8_t unused1 BP(6, 6);
|
|
|
|
uint8_t sec_count BP(7, 8);
|
|
|
|
uint8_t block BP(9, 12);
|
|
|
|
uint8_t selec_criteria BP(13, 13);
|
|
|
|
uint8_t vendor_sc BP(14, 32);
|
|
|
|
};
|
|
|
|
|
|
|
|
void el_torito_boot_catalog_free(struct el_torito_boot_catalog *cat);
|
2007-06-05 22:01:26 +00:00
|
|
|
|
2007-08-27 22:51:48 +00:00
|
|
|
/**
|
|
|
|
* Write the Boot Record Volume Descriptor
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
el_torito_write_boot_vol_desc(struct ecma119_write_target *t, uint8_t *buf);
|
|
|
|
|
2007-06-05 22:01:26 +00:00
|
|
|
void
|
|
|
|
el_torito_wr_boot_vol_desc(struct ecma119_write_target *t, uint8_t *buf);
|
|
|
|
|
2007-09-01 20:35:53 +00:00
|
|
|
/**
|
|
|
|
* Write catalog + image
|
|
|
|
*/
|
2007-06-05 22:01:26 +00:00
|
|
|
void
|
|
|
|
el_torito_wr_catalog(struct ecma119_write_target *t, uint8_t *buf);
|
|
|
|
|
|
|
|
#endif /*ELTORITO_H_*/
|