aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md60
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)