]>
Commit | Line | Data |
---|---|---|
abef4a7b LP |
1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
2 | ||
3 | #include "varlink-io.systemd.Resolve.Monitor.h" | |
4 | ||
0fe9c5da LP |
5 | /* We want to reuse the ResourceKey and ResourceRecord structures from the io.systemd.Resolve interface, |
6 | * hence import them here. */ | |
7 | #include "varlink-io.systemd.Resolve.h" | |
520ae9ca | 8 | |
2492c89a | 9 | static VARLINK_DEFINE_STRUCT_TYPE( |
520ae9ca YW |
10 | ResourceRecordArray, |
11 | VARLINK_DEFINE_FIELD_BY_TYPE(rr, ResourceRecord, VARLINK_NULLABLE), | |
12 | VARLINK_DEFINE_FIELD(raw, VARLINK_STRING, 0)); | |
abef4a7b | 13 | |
2492c89a | 14 | static VARLINK_DEFINE_STRUCT_TYPE( |
abef4a7b LP |
15 | Answer, |
16 | VARLINK_DEFINE_FIELD_BY_TYPE(rr, ResourceRecord, VARLINK_NULLABLE), | |
17 | VARLINK_DEFINE_FIELD(raw, VARLINK_STRING, 0), | |
18 | VARLINK_DEFINE_FIELD(ifindex, VARLINK_INT, VARLINK_NULLABLE)); | |
19 | ||
2492c89a | 20 | static VARLINK_DEFINE_METHOD( |
abef4a7b LP |
21 | SubscribeQueryResults, |
22 | /* First reply */ | |
23 | VARLINK_DEFINE_OUTPUT(ready, VARLINK_BOOL, VARLINK_NULLABLE), | |
24 | /* Subsequent replies */ | |
25 | VARLINK_DEFINE_OUTPUT(state, VARLINK_STRING, VARLINK_NULLABLE), | |
a068e06d | 26 | VARLINK_DEFINE_OUTPUT(result, VARLINK_STRING, VARLINK_NULLABLE), |
abef4a7b LP |
27 | VARLINK_DEFINE_OUTPUT(rcode, VARLINK_INT, VARLINK_NULLABLE), |
28 | VARLINK_DEFINE_OUTPUT(errno, VARLINK_INT, VARLINK_NULLABLE), | |
a068e06d YW |
29 | VARLINK_DEFINE_OUTPUT(extendedDNSErrorCode, VARLINK_INT, VARLINK_NULLABLE), |
30 | VARLINK_DEFINE_OUTPUT(extendedDNSErrorMessage, VARLINK_STRING, VARLINK_NULLABLE), | |
abef4a7b LP |
31 | VARLINK_DEFINE_OUTPUT_BY_TYPE(question, ResourceKey, VARLINK_NULLABLE|VARLINK_ARRAY), |
32 | VARLINK_DEFINE_OUTPUT_BY_TYPE(collectedQuestions, ResourceKey, VARLINK_NULLABLE|VARLINK_ARRAY), | |
33 | VARLINK_DEFINE_OUTPUT_BY_TYPE(answer, Answer, VARLINK_NULLABLE|VARLINK_ARRAY)); | |
34 | ||
2492c89a | 35 | static VARLINK_DEFINE_STRUCT_TYPE( |
abef4a7b LP |
36 | CacheEntry, |
37 | VARLINK_DEFINE_FIELD_BY_TYPE(key, ResourceKey, 0), | |
520ae9ca | 38 | VARLINK_DEFINE_FIELD_BY_TYPE(rrs, ResourceRecordArray, VARLINK_NULLABLE|VARLINK_ARRAY), |
abef4a7b LP |
39 | VARLINK_DEFINE_FIELD(type, VARLINK_STRING, VARLINK_NULLABLE), |
40 | VARLINK_DEFINE_FIELD(until, VARLINK_INT, 0)); | |
41 | ||
2492c89a | 42 | static VARLINK_DEFINE_STRUCT_TYPE( |
abef4a7b LP |
43 | ScopeCache, |
44 | VARLINK_DEFINE_FIELD(protocol, VARLINK_STRING, 0), | |
45 | VARLINK_DEFINE_FIELD(family, VARLINK_INT, VARLINK_NULLABLE), | |
46 | VARLINK_DEFINE_FIELD(ifindex, VARLINK_INT, VARLINK_NULLABLE), | |
47 | VARLINK_DEFINE_FIELD(ifname, VARLINK_STRING, VARLINK_NULLABLE), | |
48 | VARLINK_DEFINE_FIELD_BY_TYPE(cache, CacheEntry, VARLINK_ARRAY)); | |
49 | ||
2492c89a | 50 | static VARLINK_DEFINE_METHOD( |
abef4a7b LP |
51 | DumpCache, |
52 | VARLINK_DEFINE_OUTPUT_BY_TYPE(dump, ScopeCache, VARLINK_ARRAY)); | |
53 | ||
2492c89a | 54 | static VARLINK_DEFINE_STRUCT_TYPE( |
abef4a7b LP |
55 | ServerState, |
56 | VARLINK_DEFINE_FIELD(Server, VARLINK_STRING, 0), | |
57 | VARLINK_DEFINE_FIELD(Type, VARLINK_STRING, 0), | |
58 | VARLINK_DEFINE_FIELD(Interface, VARLINK_STRING, VARLINK_NULLABLE), | |
59 | VARLINK_DEFINE_FIELD(InterfaceIndex, VARLINK_INT, VARLINK_NULLABLE), | |
60 | VARLINK_DEFINE_FIELD(VerifiedFeatureLevel, VARLINK_STRING, 0), | |
61 | VARLINK_DEFINE_FIELD(PossibleFeatureLevel, VARLINK_STRING, 0), | |
62 | VARLINK_DEFINE_FIELD(DNSSECMode, VARLINK_STRING, 0), | |
63 | VARLINK_DEFINE_FIELD(DNSSECSupported, VARLINK_BOOL, 0), | |
64 | VARLINK_DEFINE_FIELD(ReceivedUDPFragmentMax, VARLINK_INT, 0), | |
65 | VARLINK_DEFINE_FIELD(FailedUDPAttempts, VARLINK_INT, 0), | |
66 | VARLINK_DEFINE_FIELD(FailedTCPAttempts, VARLINK_INT, 0), | |
67 | VARLINK_DEFINE_FIELD(PacketTruncated, VARLINK_BOOL, 0), | |
68 | VARLINK_DEFINE_FIELD(PacketBadOpt, VARLINK_BOOL, 0), | |
69 | VARLINK_DEFINE_FIELD(PacketRRSIGMissing, VARLINK_BOOL, 0), | |
70 | VARLINK_DEFINE_FIELD(PacketInvalid, VARLINK_BOOL, 0), | |
71 | VARLINK_DEFINE_FIELD(PacketDoOff, VARLINK_BOOL, 0)); | |
72 | ||
2492c89a | 73 | static VARLINK_DEFINE_METHOD( |
abef4a7b LP |
74 | DumpServerState, |
75 | VARLINK_DEFINE_OUTPUT_BY_TYPE(dump, ServerState, VARLINK_ARRAY)); | |
76 | ||
2492c89a | 77 | static VARLINK_DEFINE_STRUCT_TYPE( |
abef4a7b LP |
78 | TransactionStatistics, |
79 | VARLINK_DEFINE_FIELD(currentTransactions, VARLINK_INT, 0), | |
80 | VARLINK_DEFINE_FIELD(totalTransactions, VARLINK_INT, 0), | |
81 | VARLINK_DEFINE_FIELD(totalTimeouts, VARLINK_INT, 0), | |
82 | VARLINK_DEFINE_FIELD(totalTimeoutsServedStale, VARLINK_INT, 0), | |
83 | VARLINK_DEFINE_FIELD(totalFailedResponses, VARLINK_INT, 0), | |
84 | VARLINK_DEFINE_FIELD(totalFailedResponsesServedStale, VARLINK_INT, 0)); | |
85 | ||
2492c89a | 86 | static VARLINK_DEFINE_STRUCT_TYPE( |
abef4a7b LP |
87 | CacheStatistics, |
88 | VARLINK_DEFINE_FIELD(size, VARLINK_INT, 0), | |
89 | VARLINK_DEFINE_FIELD(hits, VARLINK_INT, 0), | |
90 | VARLINK_DEFINE_FIELD(misses, VARLINK_INT, 0)); | |
91 | ||
2492c89a | 92 | static VARLINK_DEFINE_STRUCT_TYPE( |
abef4a7b LP |
93 | DnssecStatistics, |
94 | VARLINK_DEFINE_FIELD(secure, VARLINK_INT, 0), | |
95 | VARLINK_DEFINE_FIELD(insecure, VARLINK_INT, 0), | |
96 | VARLINK_DEFINE_FIELD(bogus, VARLINK_INT, 0), | |
97 | VARLINK_DEFINE_FIELD(indeterminate, VARLINK_INT, 0)); | |
98 | ||
2492c89a | 99 | static VARLINK_DEFINE_METHOD( |
abef4a7b LP |
100 | DumpStatistics, |
101 | VARLINK_DEFINE_OUTPUT_BY_TYPE(transactions, TransactionStatistics, 0), | |
102 | VARLINK_DEFINE_OUTPUT_BY_TYPE(cache, CacheStatistics, 0), | |
103 | VARLINK_DEFINE_OUTPUT_BY_TYPE(dnssec, DnssecStatistics, 0)); | |
104 | ||
2492c89a | 105 | static VARLINK_DEFINE_METHOD(ResetStatistics); |
abef4a7b LP |
106 | |
107 | VARLINK_DEFINE_INTERFACE( | |
108 | io_systemd_Resolve_Monitor, | |
109 | "io.systemd.Resolve.Monitor", | |
110 | &vl_method_SubscribeQueryResults, | |
111 | &vl_method_DumpCache, | |
112 | &vl_method_DumpServerState, | |
113 | &vl_method_DumpStatistics, | |
114 | &vl_method_ResetStatistics, | |
115 | &vl_type_ResourceKey, | |
116 | &vl_type_ResourceRecord, | |
520ae9ca | 117 | &vl_type_ResourceRecordArray, |
abef4a7b LP |
118 | &vl_type_Answer, |
119 | &vl_type_CacheEntry, | |
120 | &vl_type_ScopeCache, | |
121 | &vl_type_TransactionStatistics, | |
122 | &vl_type_CacheStatistics, | |
123 | &vl_type_DnssecStatistics, | |
124 | &vl_type_ServerState); |