Linux v69820.1blu.de 4.15.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64
Apache/2.4.58
Server IP : 195.90.215.149 & Your IP : 216.73.216.250
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
include /
nodejs /
src /
Delete
Unzip
Name
Size
Permission
Date
Action
crypto
[ DIR ]
drwxr-xr-x
2024-07-10 10:55
permission
[ DIR ]
drwxr-xr-x
2024-07-10 10:55
tracing
[ DIR ]
drwxr-xr-x
2024-07-10 10:55
acorn_version.h
209
B
-rw-r--r--
2024-04-18 19:08
aliased_buffer-inl.h
7.44
KB
-rw-r--r--
2024-02-13 21:40
aliased_buffer.h
6.05
KB
-rw-r--r--
2024-02-13 21:40
aliased_struct-inl.h
1.32
KB
-rw-r--r--
2024-02-13 21:40
aliased_struct.h
1.44
KB
-rw-r--r--
2024-02-13 21:40
async_wrap-inl.h
2.68
KB
-rw-r--r--
2024-02-13 21:40
async_wrap.h
11.32
KB
-rw-r--r--
2024-02-13 21:40
base64-inl.h
5.76
KB
-rw-r--r--
2024-02-13 21:40
base64.h
1.43
KB
-rw-r--r--
2024-02-13 21:40
base64_version.h
227
B
-rw-r--r--
2024-02-13 21:40
base_object-inl.h
8.94
KB
-rw-r--r--
2024-02-13 21:40
base_object.h
13.3
KB
-rw-r--r--
2024-02-13 21:40
base_object_types.h
3.28
KB
-rw-r--r--
2024-02-13 21:40
blob_serializer_deserializer-inl.h
10.54
KB
-rw-r--r--
2024-02-13 21:40
blob_serializer_deserializer.h
3.56
KB
-rw-r--r--
2024-02-13 21:40
callback_queue-inl.h
2.59
KB
-rw-r--r--
2024-02-13 21:40
callback_queue.h
1.96
KB
-rw-r--r--
2024-02-13 21:40
cares_wrap.h
14.37
KB
-rw-r--r--
2024-04-18 19:08
cjs_module_lexer_version.h
277
B
-rw-r--r--
2024-04-18 19:08
cleanup_queue-inl.h
1.58
KB
-rw-r--r--
2024-02-13 21:40
cleanup_queue.h
2.19
KB
-rw-r--r--
2024-02-13 21:40
connect_wrap.h
584
B
-rw-r--r--
2024-02-13 21:40
connection_wrap.h
686
B
-rw-r--r--
2024-02-13 21:40
debug_utils-inl.h
7.42
KB
-rw-r--r--
2024-02-13 21:40
debug_utils.h
6.77
KB
-rw-r--r--
2024-02-13 21:40
diagnosticfilename-inl.h
768
B
-rw-r--r--
2024-02-13 21:40
env-inl.h
25.59
KB
-rw-r--r--
2024-02-13 21:40
env.h
38.85
KB
-rw-r--r--
2024-02-13 21:40
env_properties.h
33.32
KB
-rw-r--r--
2024-02-13 21:40
handle_wrap.h
4.16
KB
-rw-r--r--
2024-02-13 21:40
histogram-inl.h
2.39
KB
-rw-r--r--
2024-02-13 21:40
histogram.h
7.89
KB
-rw-r--r--
2024-02-13 21:40
inspector_agent.h
4.69
KB
-rw-r--r--
2024-02-13 21:40
inspector_io.h
2.19
KB
-rw-r--r--
2024-02-13 21:40
inspector_profiler.h
4.53
KB
-rw-r--r--
2024-02-13 21:40
inspector_socket.h
1.53
KB
-rw-r--r--
2024-02-13 21:40
inspector_socket_server.h
3.5
KB
-rw-r--r--
2024-02-13 21:40
js_native_api.h
31.22
KB
-rw-r--r--
2024-02-13 21:40
js_native_api_types.h
4.44
KB
-rw-r--r--
2024-02-13 21:40
js_native_api_v8.h
16.83
KB
-rw-r--r--
2024-02-13 21:40
js_native_api_v8_internals.h
1.56
KB
-rw-r--r--
2024-02-13 21:40
js_stream.h
1.35
KB
-rw-r--r--
2024-02-13 21:40
json_utils.h
3.8
KB
-rw-r--r--
2024-02-13 21:40
memory_tracker-inl.h
12.01
KB
-rw-r--r--
2024-02-13 21:40
memory_tracker.h
11.55
KB
-rw-r--r--
2024-02-13 21:40
module_wrap.h
3.72
KB
-rw-r--r--
2024-02-13 21:40
node.h
56.44
KB
-rw-r--r--
2024-02-13 21:40
node_api.h
9.96
KB
-rw-r--r--
2024-02-13 21:40
node_api_internals.h
1.24
KB
-rw-r--r--
2024-02-13 21:40
node_api_types.h
1.57
KB
-rw-r--r--
2024-02-13 21:40
node_binding.h
4.19
KB
-rw-r--r--
2024-02-13 21:40
node_blob.h
5.04
KB
-rw-r--r--
2024-02-13 21:40
node_bob-inl.h
657
B
-rw-r--r--
2024-02-13 21:40
node_bob.h
2.82
KB
-rw-r--r--
2024-02-13 21:40
node_buffer.h
3.6
KB
-rw-r--r--
2024-02-13 21:40
node_builtins.h
5.63
KB
-rw-r--r--
2024-02-13 21:40
node_constants.h
3.67
KB
-rw-r--r--
2024-02-13 21:40
node_context_data.h
2.94
KB
-rw-r--r--
2024-02-13 21:40
node_contextify.h
7.63
KB
-rw-r--r--
2024-02-13 21:40
node_crypto.h
2.27
KB
-rw-r--r--
2024-02-13 21:40
node_dir.h
1.31
KB
-rw-r--r--
2024-02-13 21:40
node_dtrace.h
2.89
KB
-rw-r--r--
2024-02-13 21:40
node_errors.h
16.86
KB
-rw-r--r--
2024-02-13 21:40
node_external_reference.h
7.86
KB
-rw-r--r--
2024-02-13 21:40
node_file-inl.h
12.45
KB
-rw-r--r--
2024-02-13 21:40
node_file.h
14.7
KB
-rw-r--r--
2024-02-13 21:40
node_http2.h
38.61
KB
-rw-r--r--
2024-02-13 21:40
node_http2_state.h
4.76
KB
-rw-r--r--
2024-02-13 21:40
node_http_common-inl.h
5.46
KB
-rw-r--r--
2024-02-13 21:40
node_http_common.h
24.56
KB
-rw-r--r--
2024-02-13 21:40
node_i18n.h
4.34
KB
-rw-r--r--
2024-02-13 21:40
node_internals.h
15.03
KB
-rw-r--r--
2024-02-13 21:40
node_main_instance.h
2.96
KB
-rw-r--r--
2024-02-13 21:40
node_mem-inl.h
3.6
KB
-rw-r--r--
2024-02-13 21:40
node_mem.h
1.27
KB
-rw-r--r--
2024-02-13 21:40
node_messaging.h
14.3
KB
-rw-r--r--
2024-02-13 21:40
node_metadata.h
4.37
KB
-rw-r--r--
2024-02-13 21:40
node_mutex.h
7.78
KB
-rw-r--r--
2024-02-13 21:40
node_object_wrap.h
3.78
KB
-rw-r--r--
2024-02-13 21:40
node_options-inl.h
15.86
KB
-rw-r--r--
2024-02-13 21:40
node_options.h
17.57
KB
-rw-r--r--
2024-02-13 21:40
node_perf.h
4.76
KB
-rw-r--r--
2024-02-13 21:40
node_perf_common.h
2.88
KB
-rw-r--r--
2024-02-13 21:40
node_platform.h
6.19
KB
-rw-r--r--
2024-02-13 21:40
node_process-inl.h
737
B
-rw-r--r--
2024-02-13 21:40
node_process.h
3.36
KB
-rw-r--r--
2024-02-13 21:40
node_realm-inl.h
4.59
KB
-rw-r--r--
2024-02-13 21:40
node_realm.h
5.38
KB
-rw-r--r--
2024-02-13 21:40
node_report.h
994
B
-rw-r--r--
2024-02-13 21:40
node_revert.h
2.09
KB
-rw-r--r--
2024-02-13 21:40
node_root_certs.h
231.49
KB
-rw-r--r--
2024-02-13 21:40
node_sea.h
517
B
-rw-r--r--
2024-02-13 21:40
node_shadow_realm.h
449
B
-rw-r--r--
2024-02-13 21:40
node_snapshot_builder.h
1.21
KB
-rw-r--r--
2024-02-13 21:40
node_snapshotable.h
4.82
KB
-rw-r--r--
2024-02-13 21:40
node_sockaddr-inl.h
7.28
KB
-rw-r--r--
2024-02-13 21:40
node_sockaddr.h
12.91
KB
-rw-r--r--
2024-02-13 21:40
node_stat_watcher.h
2.36
KB
-rw-r--r--
2024-02-13 21:40
node_threadsafe_cow-inl.h
1.28
KB
-rw-r--r--
2024-02-13 21:40
node_threadsafe_cow.h
2.78
KB
-rw-r--r--
2024-02-13 21:40
node_union_bytes.h
1.66
KB
-rw-r--r--
2024-02-13 21:40
node_url.h
2.13
KB
-rw-r--r--
2024-02-13 21:40
node_util.h
1.39
KB
-rw-r--r--
2024-02-13 21:40
node_v8.h
1.67
KB
-rw-r--r--
2024-02-13 21:40
node_v8_platform-inl.h
6.63
KB
-rw-r--r--
2024-02-13 21:40
node_version.h
3.85
KB
-rw-r--r--
2024-04-18 19:08
node_wasi.h
5.21
KB
-rw-r--r--
2024-02-13 21:40
node_wasm_web_api.h
1.78
KB
-rw-r--r--
2024-02-13 21:40
node_watchdog.h
4.32
KB
-rw-r--r--
2024-02-13 21:40
node_win32_etw_provider-inl.h
11.53
KB
-rw-r--r--
2024-02-13 21:40
node_win32_etw_provider.h
3.67
KB
-rw-r--r--
2024-02-13 21:40
node_worker.h
4.92
KB
-rw-r--r--
2024-02-13 21:40
pipe_wrap.h
2.78
KB
-rw-r--r--
2024-02-13 21:40
req_wrap-inl.h
5.43
KB
-rw-r--r--
2024-02-13 21:40
req_wrap.h
2.23
KB
-rw-r--r--
2024-02-13 21:40
spawn_sync.h
6.87
KB
-rw-r--r--
2024-02-13 21:40
stream_base-inl.h
4.93
KB
-rw-r--r--
2024-02-13 21:40
stream_base.h
17.44
KB
-rw-r--r--
2024-02-13 21:40
stream_pipe.h
2.39
KB
-rw-r--r--
2024-02-13 21:40
stream_wrap.h
4.15
KB
-rw-r--r--
2024-02-13 21:40
string_bytes.h
4.69
KB
-rw-r--r--
2024-02-13 21:40
string_decoder-inl.h
858
B
-rw-r--r--
2024-02-13 21:40
string_decoder.h
1.5
KB
-rw-r--r--
2024-02-13 21:40
string_search.h
20.94
KB
-rw-r--r--
2024-02-13 21:40
tcp_wrap.h
3.9
KB
-rw-r--r--
2024-02-13 21:40
threadpoolwork-inl.h
2.58
KB
-rw-r--r--
2024-02-13 21:40
timer_wrap-inl.h
755
B
-rw-r--r--
2024-02-13 21:40
timer_wrap.h
1.79
KB
-rw-r--r--
2024-02-13 21:40
tty_wrap.h
2.27
KB
-rw-r--r--
2024-02-13 21:40
udp_wrap.h
8.5
KB
-rw-r--r--
2024-02-13 21:40
undici_version.h
215
B
-rw-r--r--
2024-04-18 19:08
util-inl.h
19.56
KB
-rw-r--r--
2024-02-13 21:40
util.h
31.46
KB
-rw-r--r--
2024-02-13 21:40
v8abbr.h
5.05
KB
-rw-r--r--
2024-02-13 21:40
Save
Rename
#ifndef SRC_CARES_WRAP_H_ #define SRC_CARES_WRAP_H_ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #define CARES_STATICLIB #include "async_wrap.h" #include "base_object.h" #include "env.h" #include "memory_tracker.h" #include "node.h" #include "node_internals.h" #include "util.h" #include "ares.h" #include "v8.h" #include "uv.h" #include <unordered_set> #ifdef __POSIX__ # include <netdb.h> #endif // __POSIX__ #if defined(__ANDROID__) || \ defined(__MINGW32__) || \ defined(__OpenBSD__) || \ defined(_MSC_VER) # include <nameser.h> #else # include <arpa/nameser.h> #endif namespace node { namespace cares_wrap { constexpr int ns_t_cname_or_a = -1; constexpr int DNS_ESETSRVPENDING = -1000; class ChannelWrap; inline void safe_free_hostent(struct hostent* host); using HostEntPointer = DeleteFnPtr<hostent, ares_free_hostent>; using SafeHostEntPointer = DeleteFnPtr<hostent, safe_free_hostent>; inline const char* ToErrorCodeString(int status) { switch (status) { #define V(code) case ARES_##code: return #code; V(EADDRGETNETWORKPARAMS) V(EBADFAMILY) V(EBADFLAGS) V(EBADHINTS) V(EBADNAME) V(EBADQUERY) V(EBADRESP) V(EBADSTR) V(ECANCELLED) V(ECONNREFUSED) V(EDESTRUCTION) V(EFILE) V(EFORMERR) V(ELOADIPHLPAPI) V(ENODATA) V(ENOMEM) V(ENONAME) V(ENOTFOUND) V(ENOTIMP) V(ENOTINITIALIZED) V(EOF) V(EREFUSED) V(ESERVFAIL) V(ETIMEOUT) #undef V } return "UNKNOWN_ARES_ERROR"; } inline void cares_wrap_hostent_cpy( struct hostent* dest, const struct hostent* src) { dest->h_addr_list = nullptr; dest->h_addrtype = 0; dest->h_aliases = nullptr; dest->h_length = 0; dest->h_name = nullptr; /* copy `h_name` */ size_t name_size = strlen(src->h_name) + 1; dest->h_name = node::Malloc<char>(name_size); memcpy(dest->h_name, src->h_name, name_size); /* copy `h_aliases` */ size_t alias_count; for (alias_count = 0; src->h_aliases[alias_count] != nullptr; alias_count++) { } dest->h_aliases = node::Malloc<char*>(alias_count + 1); for (size_t i = 0; i < alias_count; i++) { const size_t cur_alias_size = strlen(src->h_aliases[i]) + 1; dest->h_aliases[i] = node::Malloc(cur_alias_size); memcpy(dest->h_aliases[i], src->h_aliases[i], cur_alias_size); } dest->h_aliases[alias_count] = nullptr; /* copy `h_addr_list` */ size_t list_count; for (list_count = 0; src->h_addr_list[list_count] != nullptr; list_count++) { } dest->h_addr_list = node::Malloc<char*>(list_count + 1); for (size_t i = 0; i < list_count; i++) { dest->h_addr_list[i] = node::Malloc(src->h_length); memcpy(dest->h_addr_list[i], src->h_addr_list[i], src->h_length); } dest->h_addr_list[list_count] = nullptr; /* work after work */ dest->h_length = src->h_length; dest->h_addrtype = src->h_addrtype; } struct NodeAresTask final : public MemoryRetainer { ChannelWrap* channel; ares_socket_t sock; uv_poll_t poll_watcher; inline void MemoryInfo(MemoryTracker* trakcer) const override; SET_MEMORY_INFO_NAME(NodeAresTask) SET_SELF_SIZE(NodeAresTask) struct Hash { inline size_t operator()(NodeAresTask* a) const { return std::hash<ares_socket_t>()(a->sock); } }; struct Equal { inline bool operator()(NodeAresTask* a, NodeAresTask* b) const { return a->sock == b->sock; } }; static NodeAresTask* Create(ChannelWrap* channel, ares_socket_t sock); using List = std::unordered_set<NodeAresTask*, Hash, Equal>; }; class ChannelWrap final : public AsyncWrap { public: ChannelWrap( Environment* env, v8::Local<v8::Object> object, int timeout, int tries); ~ChannelWrap() override; static void New(const v8::FunctionCallbackInfo<v8::Value>& args); void Setup(); void EnsureServers(); void StartTimer(); void CloseTimer(); void ModifyActivityQueryCount(int count); inline uv_timer_t* timer_handle() { return timer_handle_; } inline ares_channel cares_channel() { return channel_; } inline void set_query_last_ok(bool ok) { query_last_ok_ = ok; } inline void set_is_servers_default(bool is_default) { is_servers_default_ = is_default; } inline int active_query_count() { return active_query_count_; } inline NodeAresTask::List* task_list() { return &task_list_; } void MemoryInfo(MemoryTracker* tracker) const override; SET_MEMORY_INFO_NAME(ChannelWrap) SET_SELF_SIZE(ChannelWrap) static void AresTimeout(uv_timer_t* handle); private: uv_timer_t* timer_handle_ = nullptr; ares_channel channel_ = nullptr; bool query_last_ok_ = true; bool is_servers_default_ = true; bool library_inited_ = false; int timeout_; int tries_; int active_query_count_ = 0; NodeAresTask::List task_list_; }; class GetAddrInfoReqWrap final : public ReqWrap<uv_getaddrinfo_t> { public: GetAddrInfoReqWrap(Environment* env, v8::Local<v8::Object> req_wrap_obj, bool verbatim); SET_NO_MEMORY_INFO() SET_MEMORY_INFO_NAME(GetAddrInfoReqWrap) SET_SELF_SIZE(GetAddrInfoReqWrap) bool verbatim() const { return verbatim_; } private: const bool verbatim_; }; class GetNameInfoReqWrap final : public ReqWrap<uv_getnameinfo_t> { public: GetNameInfoReqWrap(Environment* env, v8::Local<v8::Object> req_wrap_obj); SET_NO_MEMORY_INFO() SET_MEMORY_INFO_NAME(GetNameInfoReqWrap) SET_SELF_SIZE(GetNameInfoReqWrap) }; struct ResponseData final { int status; bool is_host; SafeHostEntPointer host; MallocedBuffer<unsigned char> buf; }; template <typename Traits> class QueryWrap final : public AsyncWrap { public: QueryWrap(ChannelWrap* channel, v8::Local<v8::Object> req_wrap_obj) : AsyncWrap(channel->env(), req_wrap_obj, AsyncWrap::PROVIDER_QUERYWRAP), channel_(channel), trace_name_(Traits::name) {} ~QueryWrap() { CHECK_EQ(false, persistent().IsEmpty()); // Let Callback() know that this object no longer exists. if (callback_ptr_ != nullptr) *callback_ptr_ = nullptr; } int Send(const char* name) { return Traits::Send(this, name); } void AresQuery(const char* name, int dnsclass, int type) { channel_->EnsureServers(); TRACE_EVENT_NESTABLE_ASYNC_BEGIN1( TRACING_CATEGORY_NODE2(dns, native), trace_name_, this, "name", TRACE_STR_COPY(name)); ares_query( channel_->cares_channel(), name, dnsclass, type, Callback, MakeCallbackPointer()); } void ParseError(int status) { CHECK_NE(status, ARES_SUCCESS); v8::HandleScope handle_scope(env()->isolate()); v8::Context::Scope context_scope(env()->context()); const char* code = ToErrorCodeString(status); v8::Local<v8::Value> arg = OneByteString(env()->isolate(), code); TRACE_EVENT_NESTABLE_ASYNC_END1( TRACING_CATEGORY_NODE2(dns, native), trace_name_, this, "error", status); MakeCallback(env()->oncomplete_string(), 1, &arg); } const BaseObjectPtr<ChannelWrap>& channel() const { return channel_; } void AfterResponse() { CHECK(response_data_); int status = response_data_->status; if (status != ARES_SUCCESS) return ParseError(status); status = Traits::Parse(this, response_data_); if (status != ARES_SUCCESS) ParseError(status); } void* MakeCallbackPointer() { CHECK_NULL(callback_ptr_); callback_ptr_ = new QueryWrap<Traits>*(this); return callback_ptr_; } static QueryWrap<Traits>* FromCallbackPointer(void* arg) { std::unique_ptr<QueryWrap<Traits>*> wrap_ptr { static_cast<QueryWrap<Traits>**>(arg) }; QueryWrap<Traits>* wrap = *wrap_ptr.get(); if (wrap == nullptr) return nullptr; wrap->callback_ptr_ = nullptr; return wrap; } static void Callback( void* arg, int status, int timeouts, unsigned char* answer_buf, int answer_len) { QueryWrap<Traits>* wrap = FromCallbackPointer(arg); if (wrap == nullptr) return; unsigned char* buf_copy = nullptr; if (status == ARES_SUCCESS) { buf_copy = node::Malloc<unsigned char>(answer_len); memcpy(buf_copy, answer_buf, answer_len); } wrap->response_data_ = std::make_unique<ResponseData>(); ResponseData* data = wrap->response_data_.get(); data->status = status; data->is_host = false; data->buf = MallocedBuffer<unsigned char>(buf_copy, answer_len); wrap->QueueResponseCallback(status); } static void Callback( void* arg, int status, int timeouts, struct hostent* host) { QueryWrap<Traits>* wrap = FromCallbackPointer(arg); if (wrap == nullptr) return; struct hostent* host_copy = nullptr; if (status == ARES_SUCCESS) { host_copy = node::Malloc<hostent>(1); cares_wrap_hostent_cpy(host_copy, host); } wrap->response_data_ = std::make_unique<ResponseData>(); ResponseData* data = wrap->response_data_.get(); data->status = status; data->host.reset(host_copy); data->is_host = true; wrap->QueueResponseCallback(status); } void QueueResponseCallback(int status) { BaseObjectPtr<QueryWrap<Traits>> strong_ref{this}; env()->SetImmediate([this, strong_ref](Environment*) { AfterResponse(); // Delete once strong_ref goes out of scope. Detach(); }); channel_->set_query_last_ok(status != ARES_ECONNREFUSED); channel_->ModifyActivityQueryCount(-1); } void CallOnComplete( v8::Local<v8::Value> answer, v8::Local<v8::Value> extra = v8::Local<v8::Value>()) { v8::HandleScope handle_scope(env()->isolate()); v8::Context::Scope context_scope(env()->context()); v8::Local<v8::Value> argv[] = { v8::Integer::New(env()->isolate(), 0), answer, extra }; const int argc = arraysize(argv) - extra.IsEmpty(); TRACE_EVENT_NESTABLE_ASYNC_END0( TRACING_CATEGORY_NODE2(dns, native), trace_name_, this); MakeCallback(env()->oncomplete_string(), argc, argv); } void MemoryInfo(MemoryTracker* tracker) const override { tracker->TrackField("channel", channel_); if (response_data_) { tracker->TrackFieldWithSize("response", response_data_->buf.size); } } SET_MEMORY_INFO_NAME(QueryWrap) SET_SELF_SIZE(QueryWrap<Traits>) private: BaseObjectPtr<ChannelWrap> channel_; std::unique_ptr<ResponseData> response_data_; const char* trace_name_; // Pointer to pointer to 'this' that can be reset from the destructor, // in order to let Callback() know that 'this' no longer exists. QueryWrap<Traits>** callback_ptr_ = nullptr; }; struct AnyTraits final { static constexpr const char* name = "resolveAny"; static int Send(QueryWrap<AnyTraits>* wrap, const char* name); static int Parse( QueryWrap<AnyTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct ATraits final { static constexpr const char* name = "resolve4"; static int Send(QueryWrap<ATraits>* wrap, const char* name); static int Parse( QueryWrap<ATraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct AaaaTraits final { static constexpr const char* name = "resolve6"; static int Send(QueryWrap<AaaaTraits>* wrap, const char* name); static int Parse( QueryWrap<AaaaTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct CaaTraits final { static constexpr const char* name = "resolveCaa"; static int Send(QueryWrap<CaaTraits>* wrap, const char* name); static int Parse( QueryWrap<CaaTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct CnameTraits final { static constexpr const char* name = "resolveCname"; static int Send(QueryWrap<CnameTraits>* wrap, const char* name); static int Parse( QueryWrap<CnameTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct MxTraits final { static constexpr const char* name = "resolveMx"; static int Send(QueryWrap<MxTraits>* wrap, const char* name); static int Parse( QueryWrap<MxTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct NsTraits final { static constexpr const char* name = "resolveNs"; static int Send(QueryWrap<NsTraits>* wrap, const char* name); static int Parse( QueryWrap<NsTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct TxtTraits final { static constexpr const char* name = "resolveTxt"; static int Send(QueryWrap<TxtTraits>* wrap, const char* name); static int Parse( QueryWrap<TxtTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct SrvTraits final { static constexpr const char* name = "resolveSrv"; static int Send(QueryWrap<SrvTraits>* wrap, const char* name); static int Parse( QueryWrap<SrvTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct PtrTraits final { static constexpr const char* name = "resolvePtr"; static int Send(QueryWrap<PtrTraits>* wrap, const char* name); static int Parse( QueryWrap<PtrTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct NaptrTraits final { static constexpr const char* name = "resolveNaptr"; static int Send(QueryWrap<NaptrTraits>* wrap, const char* name); static int Parse( QueryWrap<NaptrTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct SoaTraits final { static constexpr const char* name = "resolveSoa"; static int Send(QueryWrap<SoaTraits>* wrap, const char* name); static int Parse( QueryWrap<SoaTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; struct ReverseTraits final { static constexpr const char* name = "reverse"; static int Send(QueryWrap<ReverseTraits>* wrap, const char* name); static int Parse( QueryWrap<ReverseTraits>* wrap, const std::unique_ptr<ResponseData>& response); }; using QueryAnyWrap = QueryWrap<AnyTraits>; using QueryAWrap = QueryWrap<ATraits>; using QueryAaaaWrap = QueryWrap<AaaaTraits>; using QueryCaaWrap = QueryWrap<CaaTraits>; using QueryCnameWrap = QueryWrap<CnameTraits>; using QueryMxWrap = QueryWrap<MxTraits>; using QueryNsWrap = QueryWrap<NsTraits>; using QueryTxtWrap = QueryWrap<TxtTraits>; using QuerySrvWrap = QueryWrap<SrvTraits>; using QueryPtrWrap = QueryWrap<PtrTraits>; using QueryNaptrWrap = QueryWrap<NaptrTraits>; using QuerySoaWrap = QueryWrap<SoaTraits>; using GetHostByAddrWrap = QueryWrap<ReverseTraits>; } // namespace cares_wrap } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_CARES_WRAP_H_