Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f8d8b7b authored by Luke Huang's avatar Luke Huang
Browse files

Clean up Netd and libnetd_resolv for resolver related commands

1. remove all resolver related commands in netd
2. remove unused API in libnetd_resolv

Bug: 126141549
Test: built, flashed, booted
      system/netd/tests/runtests.sh pass

Change-Id: I35ac8f241eebd6284a6a685ef86cd77a1fce4388
parent 5bd827c0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ namespace {

bool verifyCallbacks() {
    return gResNetdCallbacks.check_calling_permission && gResNetdCallbacks.get_network_context &&
           gResNetdCallbacks.get_dns64_prefix;
           gResNetdCallbacks.log;
}

}  // namespace
+19 −27
Original line number Diff line number Diff line
@@ -108,47 +108,39 @@ typedef void (*get_network_context_callback)(unsigned netid, uid_t uid,
typedef bool (*check_calling_permission_callback)(const char* permission);

// TODO: Remove the callback after moving NAT64 prefix discovery out of netd to libnetd_resolv.
typedef bool (*get_dns64_prefix_callback)(unsigned netid, in6_addr* prefix, uint8_t* prefix_len);
typedef void (*log_callback)(const char* msg);

struct ResolverNetdCallbacks {
    check_calling_permission_callback check_calling_permission;
    get_network_context_callback get_network_context;
    get_dns64_prefix_callback get_dns64_prefix;
    log_callback log;
};

LIBNETD_RESOLV_PUBLIC int android_gethostbyaddrfornetcontext(const void*, socklen_t, int,
                                                             const android_net_context*, hostent**);
LIBNETD_RESOLV_PUBLIC int android_gethostbynamefornetcontext(const char*, int,
                                                             const android_net_context*, hostent**);
LIBNETD_RESOLV_PUBLIC int android_getaddrinfofornetcontext(const char*, const char*,
                                                           const addrinfo*,
int android_gethostbyaddrfornetcontext(const void*, socklen_t, int, const android_net_context*,
                                       hostent**);
int android_gethostbynamefornetcontext(const char*, int, const android_net_context*, hostent**);
int android_getaddrinfofornetcontext(const char*, const char*, const addrinfo*,
                                     const android_net_context*, addrinfo**);

LIBNETD_RESOLV_PUBLIC bool resolv_has_nameservers(unsigned netid);

// Query dns with raw msg
LIBNETD_RESOLV_PUBLIC int resolv_res_nsend(const android_net_context* netContext,
                                           const uint8_t* msg, int msgLen, uint8_t* ans, int ansLen,
                                           int* rcode, uint32_t flags);
int resolv_res_nsend(const android_net_context* netContext, const uint8_t* msg, int msgLen,
                     uint8_t* ans, int ansLen, int* rcode, uint32_t flags);

// Set name servers for a network
LIBNETD_RESOLV_PUBLIC int resolv_set_nameservers_for_net(unsigned netid, const char** servers,
                                                         int numservers, const char* domains,
                                                         const res_params* params);
int resolv_set_nameservers_for_net(unsigned netid, const char** servers, int numservers,
                                   const char* domains, const res_params* params);

LIBNETD_RESOLV_PUBLIC int resolv_set_private_dns_for_net(unsigned netid, uint32_t mark,
                                                         const char** servers, int numServers,
                                                         const char* tlsName,
                                                         const uint8_t** fingerprints,
                                                         int numFingerprints);
int resolv_set_private_dns_for_net(unsigned netid, uint32_t mark, const char** servers,
                                   int numServers, const char* tlsName,
                                   const uint8_t** fingerprints, int numFingerprints);

LIBNETD_RESOLV_PUBLIC void resolv_delete_private_dns_for_net(unsigned netid);
void resolv_delete_private_dns_for_net(unsigned netid);

LIBNETD_RESOLV_PUBLIC void resolv_get_private_dns_status_for_net(unsigned netid,
                                                                 ExternalPrivateDnsStatus* status);
void resolv_get_private_dns_status_for_net(unsigned netid, ExternalPrivateDnsStatus* status);

// Delete the cache associated with a certain network
LIBNETD_RESOLV_PUBLIC void resolv_delete_cache_for_net(unsigned netid);
void resolv_delete_cache_for_net(unsigned netid);

LIBNETD_RESOLV_PUBLIC bool resolv_has_nameservers(unsigned netid);

// Set callbacks and bring DnsResolver up.
LIBNETD_RESOLV_PUBLIC bool resolv_init(const ResolverNetdCallbacks& callbacks);
+0 −30
Original line number Diff line number Diff line
@@ -34,39 +34,9 @@

// Struct containing function pointers for every function exported by libnetd_resolv.
extern struct ResolvStub {
    int (*android_getaddrinfofornetcontext)(const char*, const char*, const addrinfo*,
                                            const android_net_context*, addrinfo**);

    void (*android_net_res_stats_aggregate)(res_stats* stats, int* successes, int* errors,
                                            int* timeouts, int* internal_errors, int* rtt_avg,
                                            time_t* last_sample_time);

    int (*android_net_res_stats_get_info_for_net)(unsigned netid, int* nscount,
                                                  sockaddr_storage servers[MAXNS], int* dcount,
                                                  char domains[MAXDNSRCH][MAXDNSRCHPATH],
                                                  res_params* params, res_stats stats[MAXNS],
                                                  int* wait_for_pending_req_timeout_count);

    int (*android_net_res_stats_get_usable_servers)(const res_params* params, res_stats stats[],
                                                    int nscount, bool valid_servers[]);

    void (*resolv_delete_cache_for_net)(unsigned netid);

    void (*resolv_delete_private_dns_for_net)(unsigned netid);

    void (*resolv_get_private_dns_status_for_net)(unsigned netid, ExternalPrivateDnsStatus* status);

    bool (*resolv_has_nameservers)(unsigned netid);

    bool (*resolv_init)(const ResolverNetdCallbacks& callbacks);

    int (*resolv_set_nameservers_for_net)(unsigned netid, const char** servers, unsigned numservers,
                                          const char* domains, const res_params* params);

    int (*resolv_set_private_dns_for_net)(unsigned netid, uint32_t mark, const char** servers,
                                          const unsigned numServers, const char* tlsName,
                                          const uint8_t** fingerprints,
                                          const unsigned numFingerprints);
} RESOLV_STUB;

int resolv_stub_init();
+0 −9
Original line number Diff line number Diff line
@@ -20,17 +20,8 @@

LIBNETD_RESOLV {
  global:
    android_getaddrinfofornetcontext;
    android_net_res_stats_aggregate;
    android_net_res_stats_get_info_for_net;
    android_net_res_stats_get_usable_servers;
    resolv_delete_cache_for_net;
    resolv_delete_private_dns_for_net;
    resolv_get_private_dns_status_for_net;
    resolv_has_nameservers;
    resolv_init;
    resolv_set_nameservers_for_net;
    resolv_set_private_dns_for_net;
  local:
    *;
};