diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..1d4056f --- /dev/null +++ b/README.md @@ -0,0 +1,60 @@ +# dnslite + +DnsLite is a C library for constructing, dispatching, and parsing DNS messages. +It aims to be fully compatible with the standard and cover as many niche elements as +possible while still remaining minimally sized and portable to both Windows and +Unix-y systems. + +## Current Roadmap +### Intended v1 + +| Task | Associated Function | Current Status | Unit Test? | +|--------------------------|----------------------|----------------|------------| +| RFC 1035 Type Compliance | n/a | Complete | n/a | +| Extended RFCs Compliance | n/a | In Progress | n/a | +| Hostname Translation | dnsl_encode_hostname | Functional | Yes | +| Socket Communication | dnsl_socket_* | In Progress | To-Do | +| DNS Message Creation | dnsl_new_* | In Progress | To-Do | +| DNS Message Composition | dnsl_append_* | In Progress | To-Do | +| Resolver Core | TBD | To-Do | No | +| Resolver Record Caching | TBD | To-Do | To-Do | +| Resolver Reverse DNS | TBD | To-Do | No | + +## Installation +### Building + +- Have a suitable C compiler (GCC, MSVC). +- Have CMake v3.12 or newer. +- (Optional) Have Doxygen to build documentation. + +```bash +mkdir build +cd build +cmake ../ +cmake --build . --target install --config Release +``` + +## Usage + +```C +struct dnsl_error *error; + +if (dnsl_socket_init(&error) != 0) +{ + // Etc. +} + +// Should probably be built on thread + don't forget to check for NULL. +dnsl_hostname_ref hostname = dnsl_encode_hostname("git.paterissa.net", &error); +dnsl_msg_ref msg = dnsl_new_query(DNSL_OPCODE_QUERY, true); +dnsl_question_ref question = dnsl_new_question(hostname, DNSL_QUESTION_TYPE_A, DNSL_QUESTION_CLASS_IN, &error); + +dnsl_append_question(msg, question); +// Transmit DNS Message TBD... + +dnsl_free_msg(msg); // Frees message, question, and hostname +dnsl_socket_fini(); +``` + +## License +[BSD 3-Clause](LICENSE) |
