Browse Source

Extend quota snapshots with file and directory counts

master
evgeny 6 days ago
parent
commit
c8236373b1
  1. 4
      src/member_files/protocol.c
  2. 3
      src/member_files/protocol.h

4
src/member_files/protocol.c

@ -68,7 +68,7 @@ int mf_encode(const struct mf_message* m, uint8_t* p, size_t cap) {
return -1;
}
memset(p, 0, MF_WIRE_HEADER);
p[0] = 3; p[1] = m->kind; p[2] = m->command; p[3] = (uint8_t)m->status; p[4] = (uint8_t)(m->status >> 8);
p[0] = MF_PROTOCOL_VERSION; p[1] = m->kind; p[2] = m->command; p[3] = (uint8_t)m->status; p[4] = (uint8_t)(m->status >> 8);
mf_put64(p + 5, m->request_id); mf_put64(p + 13, m->owner); mf_put64(p + 21, m->offset);
mf_put64(p + 29, m->size); mf_put64(p + 37, m->cursor);
memcpy(p + 45, m->version, 16); memcpy(p + 61, m->upload, 16); memcpy(p + 77, m->hash, 32);
@ -84,7 +84,7 @@ int mf_decode(const uint8_t* p, size_t n, struct mf_message* m) {
if (!p || !m || n < MF_WIRE_HEADER) goto bad;
size_t a = p[119] | ((size_t)p[120] << 8), b = p[121] | ((size_t)p[122] << 8);
size_t d = p[123] | ((size_t)p[124] << 8);
if (p[0] != 3 || (p[1] != MF_REQUEST && p[1] != MF_RESPONSE) || p[2] < MF_LIST || p[2] > MF_QUOTA ||
if (p[0] != MF_PROTOCOL_VERSION || (p[1] != MF_REQUEST && p[1] != MF_RESPONSE) || p[2] < MF_LIST || p[2] > MF_QUOTA ||
a > MF_PATH_MAX || b > MF_PATH_MAX || d > MF_BLOCK_SIZE || n != MF_WIRE_HEADER + a + b + d ||
memchr(p + MF_WIRE_HEADER, 0, a + b) || p[118] > 1) goto bad;
memset(m, 0, sizeof(*m));

3
src/member_files/protocol.h

@ -15,12 +15,13 @@ extern "C" {
#endif
#define MF_BLOCK_SIZE 8192
#define MF_PROTOCOL_VERSION 4
#define MF_PATH_MAX 1024
#define MF_NAME_MAX 255
#define MF_WIRE_HEADER 125
#define MF_WIRE_MAX (MF_WIRE_HEADER + 2 * MF_PATH_MAX + MF_BLOCK_SIZE)
#define MF_ENTRY_HEADER 35
#define MF_QUOTA_BYTES 24 /* used:u64, limit:u64, reserved:u64; все значения в байтах */
#define MF_QUOTA_BYTES 40 /* used/limit/reserved в байтах, files/directories; пять u64 LE */
#define MF_IDLE_TB 100000ULL /* 10 секунд */
#define MF_REQUEST 1
#define MF_RESPONSE 2

Loading…
Cancel
Save