summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorSamuel Mendoza-Jonas <sam@mendozajonas.com>2016-09-06 13:30:30 +1000
committerSamuel Mendoza-Jonas <sam@mendozajonas.com>2016-09-08 14:26:27 +1000
commit662129afba2d344d692a9dbfd430c91eff4f281d (patch)
tree04a6ab48f0c0c575ee2a72b8b2958510a3750d2b /lib
parent82b4c9d7ecbfada62295620a6082caf1b9860ff6 (diff)
downloadtalos-petitboot-662129afba2d344d692a9dbfd430c91eff4f281d.tar.gz
talos-petitboot-662129afba2d344d692a9dbfd430c91eff4f281d.zip
discover: Avoid writing network overrides to NVRAM
Explicitly keep track of whether the current interface config was set by an IPMI network override, and avoid overwriting any saved config unless the override was marked persistent. Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/pb-config/pb-config.c1
-rw-r--r--lib/pb-protocol/pb-protocol.c9
-rw-r--r--lib/types/types.h1
3 files changed, 11 insertions, 0 deletions
diff --git a/lib/pb-config/pb-config.c b/lib/pb-config/pb-config.c
index 52a43b1..581d70f 100644
--- a/lib/pb-config/pb-config.c
+++ b/lib/pb-config/pb-config.c
@@ -33,6 +33,7 @@ static struct interface_config *config_copy_interface(struct config *ctx,
talloc_strdup(dest, src->static_config.url);
break;
}
+ dest->override = src->override;
return dest;
}
diff --git a/lib/pb-protocol/pb-protocol.c b/lib/pb-protocol/pb-protocol.c
index 1560ef7..706aec9 100644
--- a/lib/pb-protocol/pb-protocol.c
+++ b/lib/pb-protocol/pb-protocol.c
@@ -283,6 +283,8 @@ static int pb_protocol_interface_config_len(struct interface_config *conf)
len += 4 + optional_strlen(conf->static_config.url);
}
+ len += 4 /* conf->override */;
+
return len;
}
@@ -511,6 +513,9 @@ static int pb_protocol_serialise_config_interface(char *buf,
conf->static_config.url);
}
+ *(uint32_t *)pos = conf->override;
+ pos += 4;
+
return pos - buf;
}
@@ -1019,6 +1024,10 @@ static int pb_protocol_deserialise_config_interface(const char **buf,
return -1;
}
+ if (read_u32(buf, len, &tmp))
+ return -1;
+ iface->override = !!tmp;
+
return 0;
}
diff --git a/lib/types/types.h b/lib/types/types.h
index 6b607cd..7b9269b 100644
--- a/lib/types/types.h
+++ b/lib/types/types.h
@@ -129,6 +129,7 @@ struct interface_config {
char *url;
} static_config;
};
+ bool override;
};
struct network_config {
OpenPOWER on IntegriCloud