This repository has been archived on 2024-05-23. You can view files and clone it, but cannot push or open issues or pull requests.
dns-toy/lib/debug.ml

42 lines
1.3 KiB
OCaml
Raw Normal View History

let dns_header (header : Types.dns_header) =
Printf.sprintf
2023-06-19 20:44:32 +02:00
"{ \"id\": %d, \"flags\": %d, \"num_questions\": %d, \"num_answers\": %d, \
\"num_authorities\": %d, \"num_additionals\": %d }"
2023-06-14 16:35:14 +02:00
header.id
header.flags
header.num_questions
header.num_answers
header.num_authorities
header.num_additionals
;;
let dns_question (question : Types.dns_question) =
Printf.sprintf
2023-06-19 20:44:32 +02:00
"{ \"name\": \"%s\", \"type_\": %d, \"class_\": %d }"
2023-06-14 16:35:14 +02:00
(Bytes.to_string question.name)
question.type_
question.class_
;;
2023-06-14 16:54:55 +02:00
2023-06-19 22:33:05 +02:00
let dns_record ?(json = false) (record : Types.dns_record) =
Printf.sprintf
2023-06-19 20:44:32 +02:00
"{ \"name\": \"%s\", \"type_\": %d, \"class_\": %d, \"ttl\": %d, \"data\": \"%s\" }"
2023-06-14 16:54:55 +02:00
(Bytes.to_string record.name)
record.type_
record.class_
record.ttl
2023-06-19 22:33:05 +02:00
(Utils.get_bytecode ~json record.data)
2023-06-14 16:54:55 +02:00
;;
2023-06-19 21:52:39 +02:00
let dns_packet (record : Types.dns_packet) =
let list fn l = String.concat ", " (List.map (fun el -> fn el) l) in
Printf.sprintf
"{ \"header\": %s, \"questions\": [%s], \"answers\": [%s], \"authorities\": [%s], \
\"additionals\": [%s] }"
(dns_header record.header)
(list dns_question record.questions)
(list dns_record record.answers)
(list dns_record record.authorities)
(list dns_record record.additionals)
;;