The coccinellery repository provides many little semantic patches to fix common
problems in the code. The number of semantic patches in the coccinellery
repository is high and most of the semantic patches apply only for Linux, so it
doesn't make sense to run them on regular basis as the processing takes a lot of
time.
The list of issue found in BIND 9, by no means complete, includes:
- double assignment to a variable
- `continue` at the end of the loop
- double checks for `NULL`
- useless checks for `NULL` (cannot be `NULL`, because of earlier return)
- using `0` instead of `NULL`
- useless extra condition (`if (foo) return; if (!foo) { ...; }`)
- removing & in front of static functions passed as arguments
|
||
|---|---|---|
| .. | ||
| testing | ||
| dlz_bdbhpt_dynamic.c | ||
| Makefile | ||
| README.md | ||
dlz-bdbhpt-dynamic
A Bind 9 Dynamically Loadable BerkeleyDB High Performance Text Driver
Summary
This is an attempt to port the original Bind 9 DLZ bdbhpt_driver.c as found in the Bind 9 source tree into the new DLZ dlopen driver API. The goals of this project are as follows:
- Provide DLZ facilities to OEM-supported Bind distributions
- Support both v1 (Bind 9.8) and v2 (Bind 9.9) of the dlopen() DLZ API
Requirements
You will need the following:
- Bind 9.8 or higher with the DLZ dlopen driver enabled
- BerkeleyDB libraries and header files
- A C compiler
This distribution have been successfully installed and tested on Ubuntu 12.04.
Installation
With the above requirements satisfied perform the following steps:
- Ensure the symlink for dlz_minimal.h points at the correct header file matching your Bind version
- Run: make
- Run: sudo make install # this will install dlz_bdbhpt_dynamic.so into /usr/lib/bind9/
- Add a DLZ statement similar to the example below into your Bind configuration
- Ensure your BerkeleyDB home-directory exists and can be written to by the bind user
- Use the included testing/bdbhpt-populate.pl script to provide some data for initial testing
Usage
Example usage is as follows:
dlz "bdbhpt_dynamic" {
database "dlopen /usr/lib/bind9/dlz_bdbhpt_dynamic.so T /var/cache/bind/dlz dnsdata.db";
};
The arguments for the "database" line above are as follows:
- dlopen - Use the dlopen DLZ driver to dynamically load our compiled driver
- The full path to your built dlz_bdbhpt_dynamic.so
- Single character specifying the mode to open your BerkeleyDB
environment:
- T - Transactional Mode - Highest safety, lowest speed.
- C - Concurrent Mode - Lower safety (no rollback), higher speed.
- P - Private Mode - No interprocess communication & no locking. Lowest safety, highest speed.
- Directory containing your BerkeleyDB - this is where the BerkeleyDB environment will be created.
- Filename within this directory containing your BerkeleyDB tables.
A copy of the above Bind configuration is included within example/dlz.conf.
Author
The person responsible for this is:
Mark Goldfinch g@g.org.nz
The code is maintained at:
https://github.com/goldie80/dlz-bdbhpt-dynamic
There is very little in the way of original code in this work, however, original license conditions from both bdbhpt_driver.c and dlz_example.c are maintained in the dlz_bdbhpt_dynamic.c.