Avoid pass-by-reference in C-style ABI of libnetd_resolv
This is in preparation to enabling the ABI checker on libnetd_resolv.
Switching resolv_init()'s argument from reference to pointer is
technically an ABI change, but in practice most calling conventions
pass pointers and references exactly the same way (I verified only
aarch64).
Test: as follows:
- build libnetd_resolv
- install on system with old netd binary
- reboot
- atest resolv_integration_test
Change-Id: Iebf385036010b4065afe74209a9f7cf021ca5a20
diff --git a/DnsResolver.cpp b/DnsResolver.cpp
index bef973f..de2637e 100644
--- a/DnsResolver.cpp
+++ b/DnsResolver.cpp
@@ -24,13 +24,13 @@
#include "DnsResolverService.h"
#include "resolv_private.h"
-bool resolv_init(const ResolverNetdCallbacks& callbacks) {
+bool resolv_init(const ResolverNetdCallbacks* callbacks) {
android::base::InitLogging(/*argv=*/nullptr);
android::base::SetDefaultTag("libnetd_resolv");
LOG(INFO) << __func__ << ": Initializing resolver";
resolv_set_log_severity(android::base::WARNING);
- android::net::gResNetdCallbacks = callbacks;
+ android::net::gResNetdCallbacks = *callbacks;
android::net::gDnsResolv = android::net::DnsResolver::getInstance();
return android::net::gDnsResolv->start();
}
diff --git a/include/netd_resolv/resolv.h b/include/netd_resolv/resolv.h
index 6b3e3e2..fef356e 100644
--- a/include/netd_resolv/resolv.h
+++ b/include/netd_resolv/resolv.h
@@ -148,6 +148,6 @@
LIBNETD_RESOLV_PUBLIC bool resolv_has_nameservers(unsigned netid);
// Set callbacks and bring DnsResolver up.
-LIBNETD_RESOLV_PUBLIC bool resolv_init(const ResolverNetdCallbacks& callbacks);
+LIBNETD_RESOLV_PUBLIC bool resolv_init(const ResolverNetdCallbacks* callbacks);
#endif // NETD_RESOLV_RESOLV_H