diff options
Diffstat (limited to 'sys/dev/softraidvar.h')
-rw-r--r-- | sys/dev/softraidvar.h | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/sys/dev/softraidvar.h b/sys/dev/softraidvar.h index 0b27906da56..a53f55adada 100644 --- a/sys/dev/softraidvar.h +++ b/sys/dev/softraidvar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: softraidvar.h,v 1.107 2011/09/18 13:11:08 jsing Exp $ */ +/* $OpenBSD: softraidvar.h,v 1.108 2011/09/18 19:40:49 jsing Exp $ */ /* * Copyright (c) 2006 Marco Peereboom <marco@peereboom.us> * Copyright (c) 2008 Chris Kuethe <ckuethe@openbsd.org> @@ -28,7 +28,7 @@ #include <crypto/md5.h> -#define SR_META_VERSION 4 /* bump when sr_metadata changes */ +#define SR_META_VERSION 5 /* bump when sr_metadata changes */ #define SR_META_SIZE 64 /* save space at chunk beginning */ #define SR_META_OFFSET 16 /* skip 8192 bytes at chunk beginning */ @@ -134,7 +134,19 @@ struct sr_crypto_chk_hmac_sha1 { u_int8_t sch_mac[20]; } __packed; +#define SR_OPT_INVALID 0x00 +#define SR_OPT_CRYPTO 0x01 +#define SR_OPT_BOOT 0x02 +#define SR_OPT_KEYDISK 0x03 + +struct sr_meta_opt_hdr { + u_int32_t som_type; /* optional metadata type. */ + u_int32_t som_length; /* optional metadata length. */ + u_int8_t som_checksum[MD5_DIGEST_LENGTH]; +} __packed; + struct sr_meta_crypto { + struct sr_meta_opt_hdr scm_hdr; u_int32_t scm_alg; /* vol crypto algorithm */ #define SR_CRYPTOA_AES_XTS_128 1 #define SR_CRYPTOA_AES_XTS_256 2 @@ -163,38 +175,23 @@ struct sr_meta_crypto { } __packed; struct sr_meta_boot { + struct sr_meta_opt_hdr sbm_hdr; u_int64_t sbm_root_uid; u_int32_t sbm_bootblk_size; u_int32_t sbm_bootldr_size; } __packed; struct sr_meta_keydisk { + struct sr_meta_opt_hdr skm_hdr; u_int8_t skm_maskkey[SR_CRYPTO_MAXKEYBYTES]; } __packed; -struct sr_meta_opt { - struct sr_meta_opt_invariant { - u_int32_t som_type; /* optional type */ -#define SR_OPT_INVALID 0x00 -#define SR_OPT_CRYPTO 0x01 -#define SR_OPT_BOOT 0x02 -#define SR_OPT_KEYDISK 0x03 - u_int32_t som_pad; - union { - struct sr_meta_crypto smm_crypto; - struct sr_meta_boot smm_boot; - struct sr_meta_keydisk smm_keydisk; - } som_meta; - } _som_invariant; -#define somi _som_invariant -#define somi_crypto _som_invariant.smm_crypto -#define somi_boot _som_invariant.smm_boot - /* MD5 of invariant optional metadata */ - u_int8_t som_checksum[MD5_DIGEST_LENGTH]; -} __packed; +#define SR_OLD_META_OPT_SIZE 2480 +#define SR_OLD_META_OPT_OFFSET 8 +#define SR_OLD_META_OPT_MD5 (SR_OLD_META_OPT_SIZE - MD5_DIGEST_LENGTH) struct sr_meta_opt_item { - struct sr_meta_opt omi_om; + struct sr_meta_opt_hdr *omi_som; SLIST_ENTRY(sr_meta_opt_item) omi_link; }; @@ -560,7 +557,7 @@ struct sr_discipline { void (*sd_set_vol_state)(struct sr_discipline *); int (*sd_openings)(struct sr_discipline *); int (*sd_meta_opt_handler)(struct sr_discipline *, - struct sr_meta_opt *); + struct sr_meta_opt_hdr *); /* SCSI emulation */ struct scsi_sense_data sd_scsi_sense; |