mirror of https://github.com/ipxe/ipxe.git
[settings] Add "unixtime" builtin setting to expose the current time
Expose the current wall-clock time (in seconds since the Epoch), since this is often useful in captured boot logs and can also be useful when checking unexpected X.509 certificate validation failures. Use a :uint32 setting to avoid Y2K38 rollover, thereby ensuring that this will eventually be somebody else's problem. Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/58/merge
parent
0bfe9f5342
commit
41f786cc0a
|
@ -31,6 +31,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||||
#include <byteswap.h>
|
#include <byteswap.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <time.h>
|
||||||
#include <ipxe/in.h>
|
#include <ipxe/in.h>
|
||||||
#include <ipxe/ip.h>
|
#include <ipxe/ip.h>
|
||||||
#include <ipxe/ipv6.h>
|
#include <ipxe/ipv6.h>
|
||||||
|
@ -2552,6 +2553,38 @@ struct builtin_setting version_builtin_setting __builtin_setting = {
|
||||||
.fetch = version_fetch,
|
.fetch = version_fetch,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch current time setting
|
||||||
|
*
|
||||||
|
* @v data Buffer to fill with setting data
|
||||||
|
* @v len Length of buffer
|
||||||
|
* @ret len Length of setting data, or negative error
|
||||||
|
*/
|
||||||
|
static int unixtime_fetch ( void *data, size_t len ) {
|
||||||
|
uint32_t content;
|
||||||
|
|
||||||
|
/* Return current time */
|
||||||
|
content = htonl ( time(NULL) );
|
||||||
|
if ( len > sizeof ( content ) )
|
||||||
|
len = sizeof ( content );
|
||||||
|
memcpy ( data, &content, len );
|
||||||
|
return sizeof ( content );
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Current time setting */
|
||||||
|
const struct setting unixtime_setting __setting ( SETTING_MISC, unixtime ) = {
|
||||||
|
.name = "unixtime",
|
||||||
|
.description = "Seconds since the Epoch",
|
||||||
|
.type = &setting_type_uint32,
|
||||||
|
.scope = &builtin_scope,
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Current time built-in setting */
|
||||||
|
struct builtin_setting unixtime_builtin_setting __builtin_setting = {
|
||||||
|
.setting = &unixtime_setting,
|
||||||
|
.fetch = unixtime_fetch,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch built-in setting
|
* Fetch built-in setting
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue