diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pb-config/pb-config.c | 5 | ||||
-rw-r--r-- | lib/pb-protocol/pb-protocol.c | 8 | ||||
-rw-r--r-- | lib/types/types.h | 5 |
3 files changed, 15 insertions, 3 deletions
diff --git a/lib/pb-config/pb-config.c b/lib/pb-config/pb-config.c index 35008cc..ed84fec 100644 --- a/lib/pb-config/pb-config.c +++ b/lib/pb-config/pb-config.c @@ -62,8 +62,11 @@ struct config *config_copy(void *ctx, const struct config *src) dest->boot_priorities = talloc_array(dest, struct boot_priority, src->n_boot_priorities); - for (i = 0; i < src->n_boot_priorities; i++) + for (i = 0; i < src->n_boot_priorities; i++) { + dest->boot_priorities[i].priority = + src->boot_priorities[i].priority; dest->boot_priorities[i].type = src->boot_priorities[i].type; + } return dest; } diff --git a/lib/pb-protocol/pb-protocol.c b/lib/pb-protocol/pb-protocol.c index 5a1cee7..3c472fe 100644 --- a/lib/pb-protocol/pb-protocol.c +++ b/lib/pb-protocol/pb-protocol.c @@ -279,7 +279,7 @@ int pb_protocol_config_len(const struct config *config) len += 4 + optional_strlen(config->network.dns_servers[i]); len += 4; - len += config->n_boot_priorities * 4; + len += config->n_boot_priorities * 8; return len; } @@ -464,7 +464,11 @@ int pb_protocol_serialise_config(const struct config *config, *(uint32_t *)pos = __cpu_to_be32(config->n_boot_priorities); pos += 4; for (i = 0; i < config->n_boot_priorities; i++) { - *(uint32_t *)pos = __cpu_to_be32(config->boot_priorities[i].type); + *(uint32_t *)pos = + __cpu_to_be32(config->boot_priorities[i].type); + pos += 4; + *(uint32_t *)pos = + __cpu_to_be32(config->boot_priorities[i].priority); pos += 4; } diff --git a/lib/types/types.h b/lib/types/types.h index 3a76cda..a1065ee 100644 --- a/lib/types/types.h +++ b/lib/types/types.h @@ -109,6 +109,11 @@ struct network_config { }; struct boot_priority { + /* Boot options with higher priority values will take precedence over + * lower values. Negative priorities signify "don't boot this by + * default". + */ + int priority; enum device_type type; }; |