pi_hole_api/
ftl_types.rs

1use num_derive::FromPrimitive;
2use serde::{Deserialize, Serialize};
3use serde_repr::*;
4use strum::{EnumCount, EnumIter};
5
6// These types are taken from enums.h in the Pi-Hole FTL repository
7// and modified to be able to convert the integer values into something more easily usable
8
9#[derive(
10    Serialize_repr, Deserialize_repr, Eq, PartialEq, Debug, EnumCount, EnumIter, FromPrimitive,
11)]
12#[repr(u8)]
13pub enum DNSSECStatus {
14    DNSSECUnspecified,
15    DNSSECSecure,
16    DNSSECInsecure,
17    DNSSECBogus,
18    DNSSECAbandoned,
19}
20
21#[derive(
22    Serialize_repr, Deserialize_repr, Eq, PartialEq, Debug, EnumCount, EnumIter, FromPrimitive,
23)]
24#[repr(u8)]
25pub enum QueryStatus {
26    QueryUnknown,
27    QueryGravity,
28    QueryForwarded,
29    QueryCache,
30    QueryRegex,
31    QueryBlacklist,
32    QueryExternalBlockedIp,
33    QueryExternalBlockedNull,
34    QueryExternalBlockedNxra,
35    QueryGravityCname,
36    QueryRegexCname,
37    QueryBlacklistCname,
38    QueryRetried,
39    QueryRetriedDnssec,
40    QueryInProgress,
41    QueryDbbusy,
42    QueryStatusMax,
43}
44
45#[derive(
46    Serialize_repr, Deserialize_repr, Eq, PartialEq, Debug, EnumCount, EnumIter, FromPrimitive,
47)]
48#[repr(u8)]
49pub enum ReplyType {
50    ReplyUNKNOWN,
51    ReplyNODATA,
52    ReplyNXDOMAIN,
53    ReplyCNAME,
54    ReplyIP,
55    ReplyDOMAIN,
56    ReplyRRNAME,
57    ReplySERVFAIL,
58    ReplyREFUSED,
59    ReplyNOTIMP,
60    ReplyOTHER,
61    ReplyDNSSEC,
62    ReplyNONE,
63    ReplyBLOB,
64    QueryReplyMax,
65}
66
67#[derive(Deserialize, Serialize, Eq, PartialEq, Debug, EnumCount, EnumIter, FromPrimitive)]
68pub enum QueryType {
69    A,
70    AAAA,
71    ANY,
72    SRV,
73    SOA,
74    PTR,
75    TXT,
76    NAPTR,
77    MX,
78    DS,
79    RRSIG,
80    DNSKEY,
81    NS,
82    OTHER,
83    SVCB,
84    HTTPS,
85    MAX,
86}