Revert "move fnv_64a_buf to utils.c and remove mutliple copies"

Fix clang breakage.

This reverts commit 7cd32872b6.
This commit is contained in:
Stéphane Graber 2014-02-13 17:34:26 -05:00
parent 7cd32872b6
commit e1579aaff6
4 changed files with 58 additions and 28 deletions

View File

@ -1119,6 +1119,38 @@ static int setup_rootfs_pivot_root(const char *rootfs, const char *pivotdir)
return 0; return 0;
} }
/*
* Note: This is a verbatum copy of what is in monitor.c. We're just
* usint it here to generate a safe subdirectory in /dev/ for the
* containers /dev/
*/
/* Note we don't use SHA-1 here as we don't want to depend on HAVE_GNUTLS.
* FNV has good anti collision properties and we're not worried
* about pre-image resistance or one-way-ness, we're just trying to make
* the name unique in the 108 bytes of space we have.
*/
#define FNV1A_64_INIT ((uint64_t)0xcbf29ce484222325ULL)
static uint64_t fnv_64a_buf(void *buf, size_t len, uint64_t hval)
{
unsigned char *bp;
for(bp = buf; bp < (unsigned char *)buf + len; bp++)
{
/* xor the bottom with the current octet */
hval ^= (uint64_t)*bp;
/* gcc optimised:
* multiply by the 64 bit FNV magic prime mod 2^64
*/
hval += (hval << 1) + (hval << 4) + (hval << 5) +
(hval << 7) + (hval << 8) + (hval << 40);
}
return hval;
}
/* /*
* Check to see if a directory has something mounted on it and, * Check to see if a directory has something mounted on it and,
* if it does, return the fstype. * if it does, return the fstype.

View File

@ -123,6 +123,31 @@ int lxc_monitor_close(int fd)
return close(fd); return close(fd);
} }
/* Note we don't use SHA-1 here as we don't want to depend on HAVE_GNUTLS.
* FNV has good anti collision properties and we're not worried
* about pre-image resistance or one-way-ness, we're just trying to make
* the name unique in the 108 bytes of space we have.
*/
#define FNV1A_64_INIT ((uint64_t)0xcbf29ce484222325ULL)
static uint64_t fnv_64a_buf(void *buf, size_t len, uint64_t hval)
{
unsigned char *bp;
for(bp = buf; bp < (unsigned char *)buf + len; bp++)
{
/* xor the bottom with the current octet */
hval ^= (uint64_t)*bp;
/* gcc optimised:
* multiply by the 64 bit FNV magic prime mod 2^64
*/
hval += (hval << 1) + (hval << 4) + (hval << 5) +
(hval << 7) + (hval << 8) + (hval << 40);
}
return hval;
}
int lxc_monitor_sock_name(const char *lxcpath, struct sockaddr_un *addr) { int lxc_monitor_sock_name(const char *lxcpath, struct sockaddr_un *addr) {
size_t len; size_t len;
int ret; int ret;

View File

@ -1151,27 +1151,3 @@ bool dir_exists(const char *path)
return false; return false;
return S_ISDIR(sb.st_mode); return S_ISDIR(sb.st_mode);
} }
/* Note we don't use SHA-1 here as we don't want to depend on HAVE_GNUTLS.
* FNV has good anti collision properties and we're not worried
* about pre-image resistance or one-way-ness, we're just trying to make
* the name unique in the 108 bytes of space we have.
*/
uint64_t fnv_64a_buf(void *buf, size_t len, uint64_t hval)
{
unsigned char *bp;
for(bp = buf; bp < (unsigned char *)buf + len; bp++)
{
/* xor the bottom with the current octet */
hval ^= (uint64_t)*bp;
/* gcc optimised:
* multiply by the 64 bit FNV magic prime mod 2^64
*/
hval += (hval << 1) + (hval << 4) + (hval << 5) +
(hval << 7) + (hval << 8) + (hval << 40);
}
return hval;
}

View File

@ -272,7 +272,4 @@ inline static bool am_unpriv(void) {
extern uid_t get_ns_uid(uid_t orig); extern uid_t get_ns_uid(uid_t orig);
extern bool dir_exists(const char *path); extern bool dir_exists(const char *path);
#define FNV1A_64_INIT ((uint64_t)0xcbf29ce484222325ULL)
extern inline uint64_t fnv_64a_buf(void *buf, size_t len, uint64_t hval);
#endif #endif