#ifndef _IPXE_GZIP_H #define _IPXE_GZIP_H /** @file * * gzip compressed images * */ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include /** gzip header */ struct gzip_header { /** Magic ID */ uint16_t magic; /** Compression method */ uint8_t method; /** Flags */ uint8_t flags; /** Modification time */ uint32_t mtime; /** Extra flags */ uint8_t extra; /** Operating system */ uint8_t os; } __attribute__ (( packed )); /** Magic ID */ #define GZIP_MAGIC 0x1f8b /** Compression method */ #define GZIP_METHOD_DEFLATE 0x08 /** CRC header is present */ #define GZIP_FL_HCRC 0x02 /** Extra header is present */ #define GZIP_FL_EXTRA 0x04 /** File name is present */ #define GZIP_FL_NAME 0x08 /** File comment is present */ #define GZIP_FL_COMMENT 0x10 /** gzip extra header */ struct gzip_extra_header { /** Extra header length (excluding this field) */ uint16_t len; } __attribute__ (( packed )); /** gzip CRC header */ struct gzip_crc_header { /** CRC-16 */ uint16_t crc; } __attribute__ (( packed )); /** gzip footer */ struct gzip_footer { /** CRC-32 */ uint32_t crc; /** Uncompressed size (modulo 2^32) */ uint32_t len; } __attribute__ (( packed )); extern struct image_type gzip_image_type __image_type ( PROBE_NORMAL ); #endif /* _IPXE_GZIP_H */