🌌 SpectraShell
Current path:
usr
/
include
/
👤 Create WP Admin
⬆️
Go up: /usr
✏️ Editing: maxminddb.h
#ifdef __cplusplus extern "C" { #endif #ifndef MAXMINDDB_H #define MAXMINDDB_H /* Request POSIX.1-2008. However, we want to remain compatible with * POSIX.1-2001 (since we have been historically and see no reason to drop * compatibility). By requesting POSIX.1-2008, we can conditionally use * features provided by that standard if the implementation provides it. We can * check for what the implementation provides by checking the _POSIX_VERSION * macro after including unistd.h. If a feature is in POSIX.1-2008 but not * POSIX.1-2001, check that macro before using the feature (or check for the * feature directly if possible). */ #ifndef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200809L #endif #include "maxminddb_config.h" #include <stdarg.h> #include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <sys/types.h> #ifdef _WIN32 #include <winsock2.h> #include <ws2tcpip.h> /* libmaxminddb package version from configure */ #define PACKAGE_VERSION "1.5.2" typedef ADDRESS_FAMILY sa_family_t; #if defined(_MSC_VER) /* MSVC doesn't define signed size_t, copy it from configure */ #define ssize_t SSIZE_T /* MSVC doesn't support restricted pointers */ #define restrict #endif #else #include <netdb.h> #include <netinet/in.h> #include <sys/socket.h> #endif #define MMDB_DATA_TYPE_EXTENDED (0) #define MMDB_DATA_TYPE_POINTER (1) #define MMDB_DATA_TYPE_UTF8_STRING (2) #define MMDB_DATA_TYPE_DOUBLE (3) #define MMDB_DATA_TYPE_BYTES (4) #define MMDB_DATA_TYPE_UINT16 (5) #define MMDB_DATA_TYPE_UINT32 (6) #define MMDB_DATA_TYPE_MAP (7) #define MMDB_DATA_TYPE_INT32 (8) #define MMDB_DATA_TYPE_UINT64 (9) #define MMDB_DATA_TYPE_UINT128 (10) #define MMDB_DATA_TYPE_ARRAY (11) #define MMDB_DATA_TYPE_CONTAINER (12) #define MMDB_DATA_TYPE_END_MARKER (13) #define MMDB_DATA_TYPE_BOOLEAN (14) #define MMDB_DATA_TYPE_FLOAT (15) #define MMDB_RECORD_TYPE_SEARCH_NODE (0) #define MMDB_RECORD_TYPE_EMPTY (1) #define MMDB_RECORD_TYPE_DATA (2) #define MMDB_RECORD_TYPE_INVALID (3) /* flags for open */ #define MMDB_MODE_MMAP (1) #define MMDB_MODE_MASK (7) /* error codes */ #define MMDB_SUCCESS (0) #define MMDB_FILE_OPEN_ERROR (1) #define MMDB_CORRUPT_SEARCH_TREE_ERROR (2) #define MMDB_INVALID_METADATA_ERROR (3) #define MMDB_IO_ERROR (4) #define MMDB_OUT_OF_MEMORY_ERROR (5) #define MMDB_UNKNOWN_DATABASE_FORMAT_ERROR (6) #define MMDB_INVALID_DATA_ERROR (7) #define MMDB_INVALID_LOOKUP_PATH_ERROR (8) #define MMDB_LOOKUP_PATH_DOES_NOT_MATCH_DATA_ERROR (9) #define MMDB_INVALID_NODE_NUMBER_ERROR (10) #define MMDB_IPV6_LOOKUP_IN_IPV4_DATABASE_ERROR (11) #if !(MMDB_UINT128_IS_BYTE_ARRAY) #if MMDB_UINT128_USING_MODE typedef unsigned int mmdb_uint128_t __attribute__((__mode__(TI))); #else typedef unsigned __int128 mmdb_uint128_t; #endif #endif /* This is a pointer into the data section for a given IP address lookup */ typedef struct MMDB_entry_s { const struct MMDB_s *mmdb; uint32_t offset; } MMDB_entry_s; typedef struct MMDB_lookup_result_s { bool found_entry; MMDB_entry_s entry; uint16_t netmask; } MMDB_lookup_result_s; typedef struct MMDB_entry_data_s { bool has_data; union { uint32_t pointer; const char *utf8_string; double double_value; const uint8_t *bytes; uint16_t uint16; uint32_t uint32; int32_t int32; uint64_t uint64; #if MMDB_UINT128_IS_BYTE_ARRAY uint8_t uint128[16]; #else mmdb_uint128_t uint128; #endif bool boolean; float float_value; }; /* This is a 0 if a given entry cannot be found. This can only happen * when a call to MMDB_(v)get_value() asks for hash keys or array * indices that don't exist. */ uint32_t offset; /* This is the next entry in the data section, but it's really only * relevant for entries that part of a larger map or array * struct. There's no good reason for an end user to look at this * directly. */ uint32_t offset_to_next; /* This is only valid for strings, utf8_strings or binary data */ uint32_t data_size; /* This is an MMDB_DATA_TYPE_* constant */ uint32_t type; } MMDB_entry_data_s; /* This is the return type when someone asks for all the entry data in a map or * array */ typedef struct MMDB_entry_data_list_s { MMDB_entry_data_s entry_data; struct MMDB_entry_data_list_s *next; void *pool; } MMDB_entry_data_list_s; typedef struct MMDB_description_s { const char *language; const char *description; } MMDB_description_s; /* WARNING: do not add new fields to this struct without bumping the SONAME. * The struct is allocated by the users of this library and increasing the * size will cause existing users to allocate too little space when the shared * library is upgraded */ typedef struct MMDB_metadata_s { uint32_t node_count; uint16_t record_size; uint16_t ip_version; const char *database_type; struct { size_t count; const char **names; } languages; uint16_t binary_format_major_version; uint16_t binary_format_minor_version; uint64_t build_epoch; struct { size_t count; MMDB_description_s **descriptions; } description; /* See above warning before adding fields */ } MMDB_metadata_s; /* WARNING: do not add new fields to this struct without bumping the SONAME. * The struct is allocated by the users of this library and increasing the * size will cause existing users to allocate too little space when the shared * library is upgraded */ typedef struct MMDB_ipv4_start_node_s { uint16_t netmask; uint32_t node_value; /* See above warning before adding fields */ } MMDB_ipv4_start_node_s; /* WARNING: do not add new fields to this struct without bumping the SONAME. * The struct is allocated by the users of this library and increasing the * size will cause existing users to allocate too little space when the shared * library is upgraded */ typedef struct MMDB_s { uint32_t flags; const char *filename; ssize_t file_size; const uint8_t *file_content; const uint8_t *data_section; uint32_t data_section_size; const uint8_t *metadata_section; uint32_t metadata_section_size; uint16_t full_record_byte_size; uint16_t depth; MMDB_ipv4_start_node_s ipv4_start_node; MMDB_metadata_s metadata; /* See above warning before adding fields */ } MMDB_s; typedef struct MMDB_search_node_s { uint64_t left_record; uint64_t right_record; uint8_t left_record_type; uint8_t right_record_type; MMDB_entry_s left_record_entry; MMDB_entry_s right_record_entry; } MMDB_search_node_s; extern int MMDB_open(const char *const filename, uint32_t flags, MMDB_s *const mmdb); extern MMDB_lookup_result_s MMDB_lookup_string(const MMDB_s *const mmdb, const char *const ipstr, int *const gai_error, int *const mmdb_error); extern MMDB_lookup_result_s MMDB_lookup_sockaddr(const MMDB_s *const mmdb, const struct sockaddr *const sockaddr, int *const mmdb_error); extern int MMDB_read_node(const MMDB_s *const mmdb, uint32_t node_number, MMDB_search_node_s *const node); extern int MMDB_get_value(MMDB_entry_s *const start, MMDB_entry_data_s *const entry_data, ...); extern int MMDB_vget_value(MMDB_entry_s *const start, MMDB_entry_data_s *const entry_data, va_list va_path); extern int MMDB_aget_value(MMDB_entry_s *const start, MMDB_entry_data_s *const entry_data, const char *const *const path); extern int MMDB_get_metadata_as_entry_data_list( const MMDB_s *const mmdb, MMDB_entry_data_list_s **const entry_data_list); extern int MMDB_get_entry_data_list(MMDB_entry_s *start, MMDB_entry_data_list_s **const entry_data_list); extern void MMDB_free_entry_data_list(MMDB_entry_data_list_s *const entry_data_list); extern void MMDB_close(MMDB_s *const mmdb); extern const char *MMDB_lib_version(void); extern int MMDB_dump_entry_data_list(FILE *const stream, MMDB_entry_data_list_s *const entry_data_list, int indent); extern const char *MMDB_strerror(int error_code); #endif /* MAXMINDDB_H */ #ifdef __cplusplus } #endif
Save
Upload
📁
Create Folder
📁
arpa
📁
asm
📁
asm-generic
📁
bind9
📁
bits
📁
blkid
📁
brotli
📁
c++
📁
coredumper
📁
drm
📁
e2p
📁
et
📁
event2
📁
ext2fs
📁
finclude
📁
fontconfig
📁
freetype2
📁
fstrm
📁
fwctl
📁
gdbm
📁
gio-unix-2.0
📁
GL
📁
glib-2.0
📁
gnu
📁
google
📁
graphite2
📁
gssapi
📁
gssrpc
📁
harfbuzz
📁
json-c
📁
kadm5
📁
krb5
📁
libexslt
📁
libltdl
📁
libmount
📁
libpng16
📁
libxml2
📁
libxslt
📁
linux
📁
lzma
📁
misc
📁
mtd
📁
ncurses
📁
ncursesw
📁
net
📁
netash
📁
netatalk
📁
netax25
📁
neteconet
📁
netinet
📁
netipx
📁
netiucv
📁
netpacket
📁
netrom
📁
netrose
📁
nfs
📁
openssl
📁
pcp
📁
protobuf-c
📁
protocols
📁
python3.9
📁
rdma
📁
rpc
📁
scsi
📁
security
📁
selinux
📁
sepol
📁
sound
📁
sys
📁
sysprof-4
📁
unicode
📁
video
📁
webp
📁
X11
📁
xcb
📁
xen
📄
a.out.h
|
✏️ Edit
📄
aio.h
|
✏️ Edit
📄
aliases.h
|
✏️ Edit
📄
alloca.h
|
✏️ Edit
📄
ar.h
|
✏️ Edit
📄
argp.h
|
✏️ Edit
📄
argz.h
|
✏️ Edit
📄
assert.h
|
✏️ Edit
📄
autosprintf.h
|
✏️ Edit
📄
byteswap.h
|
✏️ Edit
📄
bzlib.h
|
✏️ Edit
📄
complex.h
|
✏️ Edit
📄
com_err.h
|
✏️ Edit
📄
cpio.h
|
✏️ Edit
📄
cpuidle.h
|
✏️ Edit
📄
crypt.h
|
✏️ Edit
📄
ctype.h
|
✏️ Edit
📄
curses.h
|
✏️ Edit
📄
cursesapp.h
|
✏️ Edit
📄
cursesf.h
|
✏️ Edit
📄
cursesm.h
|
✏️ Edit
📄
cursesp.h
|
✏️ Edit
📄
cursesw.h
|
✏️ Edit
📄
cursslk.h
|
✏️ Edit
📄
dbm.h
|
✏️ Edit
📄
dirent.h
|
✏️ Edit
📄
dlfcn.h
|
✏️ Edit
📄
elf.h
|
✏️ Edit
📄
endian.h
|
✏️ Edit
📄
entities.h
|
✏️ Edit
📄
envz.h
|
✏️ Edit
📄
err.h
|
✏️ Edit
📄
errno.h
|
✏️ Edit
📄
error.h
|
✏️ Edit
📄
eti.h
|
✏️ Edit
📄
etip.h
|
✏️ Edit
📄
evdns.h
|
✏️ Edit
📄
event.h
|
✏️ Edit
📄
evhttp.h
|
✏️ Edit
📄
evrpc.h
|
✏️ Edit
📄
evutil.h
|
✏️ Edit
📄
execinfo.h
|
✏️ Edit
📄
expat.h
|
✏️ Edit
📄
expat_config.h
|
✏️ Edit
📄
expat_external.h
|
✏️ Edit
📄
fcntl.h
|
✏️ Edit
📄
features-time64.h
|
✏️ Edit
📄
features.h
|
✏️ Edit
📄
fenv.h
|
✏️ Edit
📄
ffi-x86_64.h
|
✏️ Edit
📄
ffi.h
|
✏️ Edit
📄
ffitarget-x86_64.h
|
✏️ Edit
📄
ffitarget.h
|
✏️ Edit
📄
FlexLexer.h
|
✏️ Edit
📄
fmtmsg.h
|
✏️ Edit
📄
fnmatch.h
|
✏️ Edit
📄
form.h
|
✏️ Edit
📄
fpu_control.h
|
✏️ Edit
📄
fstab.h
|
✏️ Edit
📄
fstrm.h
|
✏️ Edit
📄
fts.h
|
✏️ Edit
📄
ftw.h
|
✏️ Edit
📄
gconv.h
|
✏️ Edit
📄
gd.h
|
✏️ Edit
📄
gdbm.h
|
✏️ Edit
📄
gdcache.h
|
✏️ Edit
📄
gdfontg.h
|
✏️ Edit
📄
gdfontl.h
|
✏️ Edit
📄
gdfontmb.h
|
✏️ Edit
📄
gdfonts.h
|
✏️ Edit
📄
gdfontt.h
|
✏️ Edit
📄
gdfx.h
|
✏️ Edit
📄
gdpp.h
|
✏️ Edit
📄
gd_color_map.h
|
✏️ Edit
📄
gd_errors.h
|
✏️ Edit
📄
gd_io.h
|
✏️ Edit
📄
gelf.h
|
✏️ Edit
📄
getopt.h
|
✏️ Edit
📄
gettext-po.h
|
✏️ Edit
📄
gif_lib.h
|
✏️ Edit
📄
glob.h
|
✏️ Edit
📄
gnu-versions.h
|
✏️ Edit
📄
gnumake.h
|
✏️ Edit
📄
gpg-error.h
|
✏️ Edit
📄
gpgrt.h
|
✏️ Edit
📄
grp.h
|
✏️ Edit
📄
gshadow.h
|
✏️ Edit
📄
gssapi.h
|
✏️ Edit
📄
iconv.h
|
✏️ Edit
📄
idn-free.h
|
✏️ Edit
📄
idn-int.h
|
✏️ Edit
📄
idna.h
|
✏️ Edit
📄
ieee754.h
|
✏️ Edit
📄
ifaddrs.h
|
✏️ Edit
📄
inttypes.h
|
✏️ Edit
📄
jconfig-64.h
|
✏️ Edit
📄
jconfig.h
|
✏️ Edit
📄
jerror.h
|
✏️ Edit
📄
jmorecfg.h
|
✏️ Edit
📄
jpegint.h
|
✏️ Edit
📄
jpeglib.h
|
✏️ Edit
📄
kdb.h
|
✏️ Edit
📄
keyutils.h
|
✏️ Edit
📄
krad.h
|
✏️ Edit
📄
krb5.h
|
✏️ Edit
📄
langinfo.h
|
✏️ Edit
📄
lastlog.h
|
✏️ Edit
📄
libaio.h
|
✏️ Edit
📄
libelf.h
|
✏️ Edit
📄
libgen.h
|
✏️ Edit
📄
libintl.h
|
✏️ Edit
📄
libtasn1.h
|
✏️ Edit
📄
limits.h
|
✏️ Edit
📄
link.h
|
✏️ Edit
📄
lmdb.h
|
✏️ Edit
📄
locale.h
|
✏️ Edit
📄
ltdl.h
|
✏️ Edit
📄
lzma.h
|
✏️ Edit
📄
malloc.h
|
✏️ Edit
📄
math.h
|
✏️ Edit
📄
maxminddb.h
|
✏️ Edit
📄
maxminddb_config-64.h
|
✏️ Edit
📄
maxminddb_config.h
|
✏️ Edit
📄
mcheck.h
|
✏️ Edit
📄
memory.h
|
✏️ Edit
📄
menu.h
|
✏️ Edit
📄
mntent.h
|
✏️ Edit
📄
monetary.h
|
✏️ Edit
📄
mqueue.h
|
✏️ Edit
📄
ncurses.h
|
✏️ Edit
📄
ncurses_dll.h
|
✏️ Edit
📄
nc_tparm.h
|
✏️ Edit
📄
ndbm.h
|
✏️ Edit
📄
netdb.h
|
✏️ Edit
📄
nlist.h
|
✏️ Edit
📄
nl_types.h
|
✏️ Edit
📄
nss.h
|
✏️ Edit
📄
obstack.h
|
✏️ Edit
📄
panel.h
|
✏️ Edit
📄
paths.h
|
✏️ Edit
📄
pcre.h
|
✏️ Edit
📄
pcre2.h
|
✏️ Edit
📄
pcre2posix.h
|
✏️ Edit
📄
pcrecpp.h
|
✏️ Edit
📄
pcrecpparg.h
|
✏️ Edit
📄
pcreposix.h
|
✏️ Edit
📄
pcre_scanner.h
|
✏️ Edit
📄
pcre_stringpiece.h
|
✏️ Edit
📄
png.h
|
✏️ Edit
📄
pngconf.h
|
✏️ Edit
📄
pnglibconf.h
|
✏️ Edit
📄
poll.h
|
✏️ Edit
📄
powercap.h
|
✏️ Edit
📄
pr29.h
|
✏️ Edit
📄
printf.h
|
✏️ Edit
📄
proc_service.h
|
✏️ Edit
📄
profile.h
|
✏️ Edit
📄
pthread.h
|
✏️ Edit
📄
pty.h
|
✏️ Edit
📄
punycode.h
|
✏️ Edit
📄
pwd.h
|
✏️ Edit
📄
regex.h
|
✏️ Edit
📄
regexp.h
|
✏️ Edit
📄
resolv.h
|
✏️ Edit
📄
re_comp.h
|
✏️ Edit
📄
sched.h
|
✏️ Edit
📄
search.h
|
✏️ Edit
📄
semaphore.h
|
✏️ Edit
📄
setjmp.h
|
✏️ Edit
📄
sgtty.h
|
✏️ Edit
📄
shadow.h
|
✏️ Edit
📄
signal.h
|
✏️ Edit
📄
spawn.h
|
✏️ Edit
📄
stab.h
|
✏️ Edit
📄
stdc-predef.h
|
✏️ Edit
📄
stdint.h
|
✏️ Edit
📄
stdio.h
|
✏️ Edit
📄
stdio_ext.h
|
✏️ Edit
📄
stdlib.h
|
✏️ Edit
📄
string.h
|
✏️ Edit
📄
stringprep.h
|
✏️ Edit
📄
strings.h
|
✏️ Edit
📄
syscall.h
|
✏️ Edit
📄
sysexits.h
|
✏️ Edit
📄
syslog.h
|
✏️ Edit
📄
tar.h
|
✏️ Edit
📄
term.h
|
✏️ Edit
📄
termcap.h
|
✏️ Edit
📄
termio.h
|
✏️ Edit
📄
termios.h
|
✏️ Edit
📄
term_entry.h
|
✏️ Edit
📄
tgmath.h
|
✏️ Edit
📄
threads.h
|
✏️ Edit
📄
thread_db.h
|
✏️ Edit
📄
tic.h
|
✏️ Edit
📄
tiff.h
|
✏️ Edit
📄
tiffconf-64.h
|
✏️ Edit
📄
tiffconf.h
|
✏️ Edit
📄
tiffio.h
|
✏️ Edit
📄
tiffio.hxx
|
✏️ Edit
📄
tiffvers.h
|
✏️ Edit
📄
time.h
|
✏️ Edit
📄
tld.h
|
✏️ Edit
📄
ttyent.h
|
✏️ Edit
📄
uchar.h
|
✏️ Edit
📄
ucontext.h
|
✏️ Edit
📄
ulimit.h
|
✏️ Edit
📄
unctrl.h
|
✏️ Edit
📄
unistd.h
|
✏️ Edit
📄
utime.h
|
✏️ Edit
📄
utmp.h
|
✏️ Edit
📄
utmpx.h
|
✏️ Edit
📄
values.h
|
✏️ Edit
📄
verto-module.h
|
✏️ Edit
📄
verto.h
|
✏️ Edit
📄
wait.h
|
✏️ Edit
📄
wchar.h
|
✏️ Edit
📄
wctype.h
|
✏️ Edit
📄
wordexp.h
|
✏️ Edit
📄
zconf.h
|
✏️ Edit
📄
zdict.h
|
✏️ Edit
📄
zlib.h
|
✏️ Edit
📄
zstd.h
|
✏️ Edit
📄
zstd_errors.h
|
✏️ Edit