3.4 KiB
3.4 KiB
Examples
reader
: Example of reading DNSTAP from a file and printing it's content, usingdnswire_reader
(unidirectional mode)writer
: Example of constructing a DNSTAP message and writing it to a file, usingdnswire_writer
(unidirectional mode)receiver
: Example of receiving a DNSTAP message over a TCP connection and printing it's content, usingdnswire_reader
(bidirectional mode)sender
: Example of constructing a DNSTAP message and sending it over a TCP connection, usingdnswire_writer
(bidirectional mode)daemon_sender_uv
: Example of a daemon that will continuously send DNSTAP messages to connected clients (unidirectional mode), using the event enginelibuv
anddnstap_encode_protobuf
along withtinyframe
to encode once and send to manyclient_receiver_uv
: Example of a client that will receive DNSTAP message from the daemon (unidirectional mode), using the event enginelibuv
anddnswire_reader
with the buffer push interfacereader_sender
: Example of a reader that read DNSTAP from a file (unidirectional mode) and then sends the DNSTAP messages over a TCP connection (bidirectional mode)
receiver and sender
These examples uses the way of connecting as implemented in the fstrm
library, the receiver listens for connections by the sender and the sender
connects to the receiver.
$ ./receiver 127.0.0.1 5353
socket
bind
listen
accept
receiving...
---- dnstap
identity: sender
version: 0.1.0
message:
type: MESSAGE
query_time: 1574765731.199945162
response_time: 1574765731.199945362
socket_family: INET
socket_protocol: UDP
query_address: 127.0.0.1
query_port: 12345
response_address: 127.0.0.1
response_port: 53
query_message_length: 27
query_message: dns_wire_format_placeholder
response_message_length: 27
response_message: dns_wire_format_placeholder
----
stopped
$ ./sender 127.0.0.1 5353
socket
connect
sending...
sent, stopping...
stopped
daemon_sender_uv and client_receiver_uv
These examples works in the reverse way compared to receiver
and sender
,
and maybe a more traditional way, the daemon listens and accepts connections
from new clients, and will continuously send messages to established clients
that are ready to receive them.
$ ./daemon_sender_uv 127.0.0.1 5353
client 1 connected
client 1: sending control start and content type
client 1: sending DNSTAP
client 1: sending DNSTAP
client 1 disconnected
$ ./client_receiver_uv 127.0.0.1 5353
received 42 bytes
got control start
got content type DNSTAP
received 133 bytes
---- dnstap
identity: daemon_sender_uv
version: 0.1.0
message:
type: MESSAGE
query_time: 1574257180.95619354
response_time: 1574257180.95619490
socket_family: INET
socket_protocol: UDP
query_address: 127.0.0.1
query_port: 12345
response_address: 127.0.0.1
response_port: 53
query_message_length: 27
query_message: dns_wire_format_placeholder
response_message_length: 27
response_message: dns_wire_format_placeholder
----
received 133 bytes
---- dnstap
identity: daemon_sender_uv
version: 0.1.0
message:
type: MESSAGE
query_time: 1574257181.96381443
response_time: 1574257181.96381557
socket_family: INET
socket_protocol: UDP
query_address: 127.0.0.1
query_port: 12345
response_address: 127.0.0.1
response_port: 53
query_message_length: 27
query_message: dns_wire_format_placeholder
response_message_length: 27
response_message: dns_wire_format_placeholder
----
^C