From e81acfd251eb9e6afc6cc7ee589f89e9553935f5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 22 Mar 2021 21:23:40 +0100 Subject: [PATCH] gpt: add some simple helpers for categorizing GPT partition types --- src/shared/gpt.c | 40 ++++++++++++++++++++++++++++++++++++++++ src/shared/gpt.h | 5 +++++ 2 files changed, 45 insertions(+) diff --git a/src/shared/gpt.c b/src/shared/gpt.c index a96f5ee02d..5f2de0d947 100644 --- a/src/shared/gpt.c +++ b/src/shared/gpt.c @@ -106,3 +106,43 @@ int gpt_partition_label_valid(const char *s) { return char16_strlen(recoded) <= 36; } + +bool gpt_partition_type_is_root(sd_id128_t id) { + return sd_id128_equal(id, GPT_ROOT_X86) || + sd_id128_equal(id, GPT_ROOT_X86_64) || + sd_id128_equal(id, GPT_ROOT_ARM) || + sd_id128_equal(id, GPT_ROOT_ARM_64) || + sd_id128_equal(id, GPT_ROOT_IA64) || + sd_id128_equal(id, GPT_ROOT_RISCV32) || + sd_id128_equal(id, GPT_ROOT_RISCV64); +} + +bool gpt_partition_type_is_root_verity(sd_id128_t id) { + return sd_id128_equal(id, GPT_ROOT_X86_VERITY) || + sd_id128_equal(id, GPT_ROOT_X86_64_VERITY) || + sd_id128_equal(id, GPT_ROOT_ARM_VERITY) || + sd_id128_equal(id, GPT_ROOT_ARM_64_VERITY) || + sd_id128_equal(id, GPT_ROOT_IA64_VERITY) || + sd_id128_equal(id, GPT_ROOT_RISCV32_VERITY) || + sd_id128_equal(id, GPT_ROOT_RISCV64_VERITY); +} + +bool gpt_partition_type_is_usr(sd_id128_t id) { + return sd_id128_equal(id, GPT_USR_X86) || + sd_id128_equal(id, GPT_USR_X86_64) || + sd_id128_equal(id, GPT_USR_ARM) || + sd_id128_equal(id, GPT_USR_ARM_64) || + sd_id128_equal(id, GPT_USR_IA64) || + sd_id128_equal(id, GPT_USR_RISCV32) || + sd_id128_equal(id, GPT_USR_RISCV64); +} + +bool gpt_partition_type_is_usr_verity(sd_id128_t id) { + return sd_id128_equal(id, GPT_USR_X86_VERITY) || + sd_id128_equal(id, GPT_USR_X86_64_VERITY) || + sd_id128_equal(id, GPT_USR_ARM_VERITY) || + sd_id128_equal(id, GPT_USR_ARM_64_VERITY) || + sd_id128_equal(id, GPT_USR_IA64_VERITY) || + sd_id128_equal(id, GPT_USR_RISCV32_VERITY) || + sd_id128_equal(id, GPT_USR_RISCV64_VERITY); +} diff --git a/src/shared/gpt.h b/src/shared/gpt.h index 2e0f50c3c6..22b1d68d5f 100644 --- a/src/shared/gpt.h +++ b/src/shared/gpt.h @@ -128,3 +128,8 @@ typedef struct GptPartitionType { extern const GptPartitionType gpt_partition_type_table[]; int gpt_partition_label_valid(const char *s); + +bool gpt_partition_type_is_root(sd_id128_t id); +bool gpt_partition_type_is_root_verity(sd_id128_t id); +bool gpt_partition_type_is_usr(sd_id128_t id); +bool gpt_partition_type_is_usr_verity(sd_id128_t id); -- 2.25.1