const char *tmp_s;
const knot_dname_t *tmp_d;
const void *tmp_v;
+ uint64_t tmp_u64;
size_t tmp;
+ int tmp_i;
for (const char *f = format; *f != '\0'; f++) {
switch (*f) {
tmp = va_arg(arg, size_t);
wire_ctx_write(&wire, tmp_v, tmp);
break;
+ case 'T':
+ tmp_i = va_arg(arg, int);
+ tmp_u64 = va_arg(arg, uint64_t);
+ if (tmp_u64 > 0) {
+ wire_ctx_write_u8(&wire, tmp_i);
+ wire_ctx_write_u64(&wire, tmp_u64);
+ }
+ break;
}
}
(void)va_arg(arg, const void *);
key.mv_size += va_arg(arg, size_t);
break;
+ case 'T':
+ (void)va_arg(arg, int); // uint8_t will be promoted to int
+ if (va_arg(arg, uint64_t) > 0) {
+ key.mv_size += sizeof(uint8_t);
+ key.mv_size += sizeof(uint64_t);
+ }
+ break;
}
}
va_end(arg);
* - S for zero-terminated string
* - N for a domain name (in knot_dname_t* format)
* - D for fixed-size data (takes two params: void* and size_t)
+ * - T for pair of byte prefix and 64bit timer (takes two params: uint8 and uint64)
*/
MDB_val knot_lmdb_make_key(const char *format, ...);
{
const char *format = (timers->last_master.sin6_family == AF_INET ||
timers->last_master.sin6_family == AF_INET6) ?
- "BLBLBLBLBLBLBLBLBLBLBD" :
- "BLBLBLBLBLBLBLBLBL";
+ "TTTTTTTTTTBD" :
+ "TTTTTTTTT";
MDB_val k = { knot_dname_size(zone), (void *)zone };
MDB_val v = knot_lmdb_make_key(format,