daemon: Added "Listen" config option.
The main thread listens on all configured addresses and serves requests
through the frontend socket module. The backend collector loop now runs in its
own background thread.
The main thread listens on all configured addresses and serves requests
through the frontend socket module. The backend collector loop now runs in its
own background thread.
frontend: Use channel shutdown to synchronize handler thread shutdown.
This allows the handler to fully control the shutdown procedure.
pthread_cancel did not play well with pthread_cond_*wait in multiple threads
and the respective locked mutex.
This allows the handler to fully control the shutdown procedure.
pthread_cancel did not play well with pthread_cond_*wait in multiple threads
and the respective locked mutex.
utils channel: Added sdb_channel_shutdown().
This function initiates a shutdown of the channel, forbidding any subsequent
writes. However, readers are still able to empty the buffer. Then, EBADF will
be returned through errno. This allows for graceful shutdowns.
This function initiates a shutdown of the channel, forbidding any subsequent
writes. However, readers are still able to empty the buffer. Then, EBADF will
be returned through errno. This allows for graceful shutdowns.
utils channel: Normalize time before passing it to phtread_cond_timedwait.
utils channel: Unlock mutex before returning on error.
utils channel: Update timeout in channel_select when needed.
utils channel: Let channel_select() set errno.
utils channel: Changed abstime argument to a timeout.
frontend/sock: Added loop control to the socket handler.
Added framework for frontend connection handling.
frontend/sock supports UNIX domain sockets for now. It doesn't do much expect
for managing listening sockets and accepting connections on them which are
then handled in the background. So far, each connection is closed right away.
frontend/sock supports UNIX domain sockets for now. It doesn't do much expect
for managing listening sockets and accepting connections on them which are
then handled in the background. So far, each connection is closed right away.
t/utils/channel_test: Added a test-case for sdb_channel_select().
utils channel: Added sdb_channel_select().
This function behaves similar to select(2) providing to passively block on a
channel operation until it becomes ready for reading and / or writing.
Optionally, a deadline may be specified.
This function behaves similar to select(2) providing to passively block on a
channel operation until it becomes ready for reading and / or writing.
Optionally, a deadline may be specified.
utils/channel: Use a mutex instead of a rwlock.
All access to the channel needs to be fully synchronized.
All access to the channel needs to be fully synchronized.
t/utils/channel_test: Added some more write/read tests.
t/: Added tests for the channel implementation.
utils/channel: Added an asynchronous I/O multiplexer.
A channel is a buffered pipe supporting multiple parallel readers and writers.
A channel is a buffered pipe supporting multiple parallel readers and writers.
configure: Don't fail if CHECK is not available.
store: Make sure not to store duplicate host entries.
daemon: Treat parser errors different from daemon/libsysdb errors.
plugin: Unregister all callbacks if module/plugin init failed.
utils llist: Fixed a segfault in functions doing lookups.
utils llist: Made lookup's user-data a constant pointer.
utils llist: Added sdb_llist_remove().
utils llist: Updated documentation.
utils llist: Added lookup callback type to be used for llist_search.
Lookups should be more flexible than comparing two objects.
Lookups should be more flexible than comparing two objects.
utils llist: Added sdb_llist_cmp_cb type.
This is to make sure that comparators always use the same signature.
This is to make sure that comparators always use the same signature.
plugin: Removed sdb_ prefix from private functions.
plugin: Store real plugin name and filename in the context.
plugin: Store plugin info attributes in the plugin context.
plugin: Manage all context information in the core.
Store the new dynamic context in callbacks. The daemon may no longer set the
context before loading a plugin. Instead, sdb_plugin_load now accepts a second
parameter specifying the public context attributes.
Store the new dynamic context in callbacks. The daemon may no longer set the
context before loading a plugin. Instead, sdb_plugin_load now accepts a second
parameter specifying the public context attributes.
plugin: Made plugin context a dynamic object.
A custom type is used for that. The previous context type is used as a public
member of the new internal type. Thus, the external interface does not change.
A custom type is used for that. The previous context type is used as a public
member of the new internal type. Thus, the external interface does not change.
plugin: Dynamically allocate plugin info attributes.
This will allow to keep the information around forever.
This will allow to keep the information around forever.
unit tests: Added basic tests for unixsock utils; mocking libc I/O functions.
GNU libc's fopencookie is used to mock fdopen() and socket handling. This
allows to mock a UNIX socket.
GNU libc's fopencookie is used to mock fdopen() and socket handling. This
allows to mock a UNIX socket.
utils unixsock: Explicitely enable line-buffering.
The module is based on that, so say it explicitely.
The module is based on that, so say it explicitely.
t/utils/strbuf_test: Added lists of golden data for various checks.
This makes it much easier to add more checks for particular functions.
This makes it much easier to add more checks for particular functions.
sysdb.h.in: Reintroduced SDB_STATIC_ARRAY_LEN().
Previously only added to the auto-generated sysdb.h :-/ D'oh!
Previously only added to the auto-generated sysdb.h :-/ D'oh!
t/: Added unit tests for the string buffer utilities.
utils strbuf: Fixed a wrong assertion.
utils strbuf: Allow the initial size to be zero.
t/utils/: Name test-cases after the tested function.
This might make it possible to do coverage tests.
This might make it possible to do coverage tests.
t/utils/dbi_test: Added test queries covering 2-5 columns.
t/utils/dbi_test: Fixed further indexing.
t/utils/dbi_test: Fixed indexing into the golden_data array.
t/utils/dbi_test: Added missing cases in dbi_result_get_field_length_idx().
t/utils/dbi_test: Verify the received data.
t/utils/dbi_test: Added mock queries covering various corner cases.
t/utils/dbi_test: Mock some actual query results; added simple query.
The unit-test now supports mocking arbitrary query results. For that,
appropriate mocks for the dbi_result_get*() functions have been added.
The test now executes a simple query returning one column of data.
The unit-test now supports mocking arbitrary query results. For that,
appropriate mocks for the dbi_result_get*() functions have been added.
The test now executes a simple query returning one column of data.
t/libsysdb_test: Use a list of test-suite creators.
… rather than adding a new block for each new test-suite.
… rather than adding a new block for each new test-suite.
t/utils/dbi_test: Added a simple test-case for query execution.
Added simple mocks for query and result handling.
Added simple mocks for query and result handling.
t/: Added initial version of unit tests for utils/dbi.
The test cases mocks out any (expected) calls to libdbi.
The test cases mocks out any (expected) calls to libdbi.
t/: Make the test-suite compile with strict compiler flags.
t/: Fixed header include order.
Makefile, t/Makefile: Added 'test' alias for 'check'.
t/utils/llist_test: Check sdb_llist_create() return value in setup().
t/utils/llist_test: Added tests for clone and destroy.
Added unit testing framework based on ‘check’.
For now, some basic tests for utils::list have been added.
For now, some basic tests for utils::list have been added.
configure: Added cname::dns to summary output.
sysdbd.conf(5): Added a short description for each plugin.
object: Removed support for cloning typed objects.
This is not used currently. Since it only introduces unneeded complexity (and
somewhat ugly code in some cases), it's better to remove it.
This is not used currently. Since it only introduces unneeded complexity (and
somewhat ugly code in some cases), it's better to remove it.
store: Support NULL attribute values.
store: Handle cname translation centrally.
store: Handle locking correctly when storing attributes.
We cannot release the lock before the attribute update is finished.
We cannot release the lock before the attribute update is finished.
store: Use generic store function also to store attributes.
Except for small special cases, this is exactly the same as storing other
store objects.
Except for small special cases, this is exactly the same as storing other
store objects.
store: Pass the right timestamp to newly created store objects.
Also, fixed object initialization.
Also, fixed object initialization.
store: Use sdb_object_vcreate() when creating objects from super-class.
This allows to pass all required arguments to the init function.
This allows to pass all required arguments to the init function.
object: Added sdb_object_vcreate().
This function expects an va_list argument rather than a "true" variadic list
of arguments.
This function expects an va_list argument rather than a "true" variadic list
of arguments.
store: Use store super-class when storing objects.
This makes the function even more flexible.
This makes the function even more flexible.
store: Canonicalize hostname before storing a service.
Else, host to service mapping is not correct.
Else, host to service mapping is not correct.
store: Refactored host/service store code.
Simplified the code based on the new internal data structures.
Simplified the code based on the new internal data structures.
store: Unified host and service objects into a hierarchical store object.
This allows both hosts and services to support attributes. Also, hosts and
services may be children of other objects allowing to represent dependencies
or other hierarchical structures.
The external interface does not support hierarchical stores yet, though.
This allows both hosts and services to support attributes. Also, hosts and
services may be children of other objects allowing to represent dependencies
or other hierarchical structures.
The external interface does not support hierarchical stores yet, though.
store: Removed now duplicate code.
When creating a new host object, the services/attributes list are always
initialized to an empty list object. No need to further check this anymore.
This was only required in earlier code when copying a user-provided host
object.
When creating a new host object, the services/attributes list are always
initialized to an empty list object. No need to further check this anymore.
This was only required in earlier code when copying a user-provided host
object.
store: Let store object-types be private types.
The user should interact through the objects names or 'features' rather than
accessing any of the objects themselves.
The user should interact through the objects names or 'features' rather than
accessing any of the objects themselves.
store: Let sdb_store_service() accept const arguments.
There's no need in letting the caller construct a service object. All passed
in strings are treated as constant values anyway.
There's no need in letting the caller construct a service object. All passed
in strings are treated as constant values anyway.
store: Let sdb_store_attribute() accept const arguments.
… rather than an attribute object. This eases memory management for the caller
and removes unnecessary string duplicates.
… rather than an attribute object. This eases memory management for the caller
and removes unnecessary string duplicates.
store: Removed unused function sdb_store_get_service().
This may be reintroduced if and when it's needed.
This may be reintroduced if and when it's needed.
store: Removed unsed function sdb_service_create().
There is no need to expose this data-type.
There is no need to expose this data-type.
store: Removed unused sdb_attribute_create().
store: Renamed sdb_store_get_host() to sdb_store_has_host().
… and make the function return a boolean value. We don't currently need a
function to access the actual host object. So, don't expose it that way.
… and make the function return a boolean value. We don't currently need a
function to access the actual host object. So, don't expose it that way.
store: Simplified sdb_store_host().
Let the function accept constant arguments describing the hostname and last
update timestamp rather than a host object. This is more flexible for the
caller.
Let the function accept constant arguments describing the hostname and last
update timestamp rather than a host object. This is more flexible for the
caller.
store: Removed unused sdb_host_create() function.
store: Renamed 'parent' attribute to 'super'.
We might use 'parent' in different places in the future.
We might use 'parent' in different places in the future.
sysdbd.conf: Improved 'cname' documentation.
sysdbd.conf: Added and documented a sample LoadPlugin "cname::dns".
cname::dns: Added first version of a plugin to query DNS for cnames.
plugin/store: Added support for "cname" plugins.
This type of plugins may be used to canonicalize hostnames. Before storing a
new hosts, all registered cname callbacks will be used to translate the
specified hostname before actually storing it.
This type of plugins may be used to canonicalize hostnames. Before storing a
new hosts, all registered cname callbacks will be used to translate the
specified hostname before actually storing it.
plugin: Added formatting log functions.
plugin: Removed another custom lookup-by-name function.
… and use sdb_llist_search_by_name() instead.
… and use sdb_llist_search_by_name() instead.
Let objects be named.
This allows to move common code into helper functions. The objects module now
provides a function to compare two objects by name and linked-lists support to
lookup objects by name now.
This removes the need for various custom and somewhat ugly helper functions
and data-types.
This allows to move common code into helper functions. The objects module now
provides a function to compare two objects by name and linked-lists support to
lookup objects by name now.
This removes the need for various custom and somewhat ugly helper functions
and data-types.
sysdbd.conf(5): Added 'syslog' plugin.
error: Updated documentation; removed obsolete TODO note.
syslog plugin: Added plugin to log to syslog.
config: Added support for (generic) LoadPlugin.
plugin: Added support for log callbacks.
Use this logging mechanism to log messages from the error module.
Use this logging mechanism to log messages from the error module.
sysdbd.conf(5): Added an initial manpage for sysdbd's configuration.
Merged branch 'master' of git://git.tokkee.org/sysdb.git.
Moved data.h from utils to core.
This should also be considered a core component ;-)
This should also be considered a core component ;-)
Moved error / time from utils to core.
This is more appropriate.
This is more appropriate.
store: Use sdb_object_clone, rather than the private, specific functions.
store: Let all store types be public.
This allows to initialize all store objects in a correctly typed fashion.
This allows to initialize all store objects in a correctly typed fashion.
store: Removed the store specific clone callbacks.
… in favor of sdb_object_clone().
… in favor of sdb_object_clone().