/usr/include/gdnsd/misc.h is in gdnsd-dev 1.11.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | /* Copyright © 2012 Brandon L Black <blblack@gmail.com>
*
* This file is part of gdnsd.
*
* gdnsd is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* gdnsd is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with gdnsd. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef GDNSD_MISC_H
#define GDNSD_MISC_H
#include <gdnsd/compiler.h>
#include <inttypes.h>
#include <stdbool.h>
// allocate a new string, concatenating s1 + s2.
// retval is the new string
// if s2_offs is not NULL, *s2_offs will be set
// to the offset of the copy of s2 within the retval.
F_MALLOC F_NONNULLX(1,2) F_WUNUSED
char* gdnsd_str_combine(const char* s1, const char* s2, const char** s2_offs);
// PRNG:
// gdnsd_rand_init() allocates an opaque PRNG state which can
// be later free()'d when no longer required.
typedef struct _gdnsd_rstate_t gdnsd_rstate_t;
gdnsd_rstate_t* gdnsd_rand_init(void);
// gdnsd_rand_get32(rs) returns uint32_t random numbers
// gdnsd_rand_get64(rs) returns uint64_t random numbers
// You can reduce the ranges via the modulo operator, provided that
// your modulo values are never too large relative to the overall
// size. Very large modulos could introduce significant bias in the
// results. Of course, perfect power-of-two modulos have no bias.
// In the common case of dynamic modulo values in code, the maximum
// bias is proportional the maximum modulo your code uses, and the
// bias can be significant for _get32() cases.
// Examples: max_modulo vs _get32() -> bias
// 2^20 -> 0.02%
// 2^24 -> 0.4%
// 2^28 -> 6.25%
// 2^29 -> 12.5%
// 2^30 -> 25%
// 2^32-1 -> 50%
// Whereas _get64() will have a bias < 0.00000003% for any modulo
// that's 2^32 or smaller.
F_NONNULL
uint32_t gdnsd_rand_get32(gdnsd_rstate_t* rs);
F_NONNULL
uint64_t gdnsd_rand_get64(gdnsd_rstate_t* rs);
// Returns true if running on Linux with a kernel version >= x.y.z
// Returns false for non-Linux systems, or Linux kernels older than specified.
bool gdnsd_linux_min_version(const unsigned x, const unsigned y, const unsigned z);
// Jenkins lookup2
uint32_t gdnsd_lookup2(const char *k, uint32_t len);
#endif // GDNSD_MISC_H
|