X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=lib%2Fpb-protocol%2Fpb-protocol.c;h=9d07a588f92a5a6c3792b67a27ee507fdf2e4d4d;hp=7d45f512b0dcb81db6b83ba6223e6eb921dde30f;hb=32d3249e252fe201eb81155cbf3b800ce5cf88e0;hpb=acc5ace6e58db2f3dceb1f7a27d0fc1fb29c4a27 diff --git a/lib/pb-protocol/pb-protocol.c b/lib/pb-protocol/pb-protocol.c index 7d45f51..9d07a58 100644 --- a/lib/pb-protocol/pb-protocol.c +++ b/lib/pb-protocol/pb-protocol.c @@ -239,6 +239,9 @@ int pb_protocol_system_info_len(const struct system_info *sysinfo) 4 + optional_strlen(bd_info->mountpoint); } + /* BMC MAC */ + len += HWADDR_SIZE; + return len; } @@ -257,6 +260,7 @@ static int pb_protocol_interface_config_len(struct interface_config *conf) if (conf->method == CONFIG_METHOD_STATIC) { len += 4 + optional_strlen(conf->static_config.address); len += 4 + optional_strlen(conf->static_config.gateway); + len += 4 + optional_strlen(conf->static_config.url); } return len; @@ -420,6 +424,9 @@ int pb_protocol_serialise_system_info(const struct system_info *sysinfo, pos += pb_protocol_serialise_string(pos, bd_info->mountpoint); } + memcpy(pos, sysinfo->bmc_mac, HWADDR_SIZE); + pos += HWADDR_SIZE; + assert(pos <= buf + buf_len); (void)buf_len; @@ -448,6 +455,8 @@ static int pb_protocol_serialise_config_interface(char *buf, conf->static_config.address); pos += pb_protocol_serialise_string(pos, conf->static_config.gateway); + pos += pb_protocol_serialise_string(pos, + conf->static_config.url); } return pos - buf; @@ -850,8 +859,18 @@ int pb_protocol_deserialise_system_info(struct system_info *sysinfo, sysinfo->blockdevs[i] = bd_info; } - rc = 0; + for (i = 0; i < HWADDR_SIZE; i++) { + if (pos[i] != 0) { + sysinfo->bmc_mac = talloc_memdup(sysinfo, pos, HWADDR_SIZE); + break; + } + } + + pos += HWADDR_SIZE; + len -= HWADDR_SIZE; + + rc = 0; out: return rc; } @@ -884,6 +903,9 @@ static int pb_protocol_deserialise_config_interface(const char **buf, if (read_string(iface, buf, len, &iface->static_config.gateway)) return -1; + + if (read_string(iface, buf, len, &iface->static_config.url)) + return -1; } return 0;