Browse Source

Add a header to bkey structures

master
Con Kolivas 9 years ago
parent
commit
84ff032b0e
  1. 32
      src/libckpool.c

32
src/libckpool.c

@ -1251,14 +1251,32 @@ out:
} }
/* Bkey structure:
* "bkey\n\0"
* 32 bit LE encoded bkey length
* "$keyname\0"
* 32 bit LE encoded key length
* binary data for key
* append further key:len:data combinations
*/
#define BKEY_LENOFS 6
#define BKEY_LENLEN 4
static inline uint32_t *bkey_lenptr(char *bkey)
{
return (uint32_t *)(bkey + BKEY_LENOFS);
}
/* Create an empty binary key object */ /* Create an empty binary key object */
char *bkey_object(void) char *bkey_object(void)
{ {
char *bkey = ckzalloc(PAGESIZE); char *bkey = ckalloc(PAGESIZE);
uint32_t *lenptr; uint32_t *lenptr;
lenptr = (uint32_t *)bkey; sprintf(bkey, "bkey\n");
*lenptr = htole32(4); lenptr = bkey_lenptr(bkey);
*lenptr = htole32(BKEY_LENOFS + BKEY_LENLEN);
return bkey; return bkey;
} }
@ -1289,11 +1307,11 @@ void _bkey_add_hex(char **bkey, const char *key, const char *hex, const char *fi
len += 1; len += 1;
/* Get current message length */ /* Get current message length */
lenptr = (uint32_t *)*bkey; lenptr = bkey_lenptr(*bkey);
msglen = le32toh(*lenptr); msglen = le32toh(*lenptr);
/* Add $key+length+bin */ /* Add $key+length+bin */
newlen = len + 4 + hlen; newlen = len + BKEY_LENLEN + hlen;
*bkey = realloc(*bkey, round_up_page(newlen)); *bkey = realloc(*bkey, round_up_page(newlen));
/* Append keyname */ /* Append keyname */
@ -1303,13 +1321,13 @@ void _bkey_add_hex(char **bkey, const char *key, const char *hex, const char *fi
/* Append bin length */ /* Append bin length */
lenptr = (uint32_t *)(*bkey + msglen); lenptr = (uint32_t *)(*bkey + msglen);
*lenptr = htole32(hlen); *lenptr = htole32(hlen);
msglen += 4; msglen += BKEY_LENLEN;
/* Append binary data */ /* Append binary data */
hex2bin(*bkey + msglen, hex, hlen); hex2bin(*bkey + msglen, hex, hlen);
/* Adjust message length header */ /* Adjust message length header */
lenptr = (uint32_t *)*bkey; lenptr = bkey_lenptr(*bkey);
*lenptr = htole32(newlen); *lenptr = htole32(newlen);
} }

Loading…
Cancel
Save