Add tests for INetd 1.1.
Bug: 73032258
Test: VtsHalNetNetdV1_0TargetTest and VtsHalNetNetdV1_1TargetTest passes on marlin
Change-Id: Id4d49f08563982353a9a7db79b569e933ea03c46
Merged-In: Id4d49f08563982353a9a7db79b569e933ea03c46
(cherry picked from commit 94832f94dc902b130bf3b2814e9addc2f27a2840)
diff --git a/net/netd/testutils/VtsHalNetNetdTestUtils.cpp b/net/netd/testutils/VtsHalNetNetdTestUtils.cpp
index 1f7db2b..da377c4 100644
--- a/net/netd/testutils/VtsHalNetNetdTestUtils.cpp
+++ b/net/netd/testutils/VtsHalNetNetdTestUtils.cpp
@@ -43,7 +43,7 @@
return ret;
}
-// TODO: deduplicate this with system/netd/server/binder_test.cpp.
+// TODO: deduplicate this with system/netd/tests/binder_test.cpp.
static std::vector<std::string> runCommand(const std::string& command) {
std::vector<std::string> lines;
FILE* f;
@@ -70,7 +70,7 @@
return runCommand(command);
}
-static int countMatchingIpRules(const std::string& regexString) {
+int countMatchingIpRules(const std::string& regexString) {
const std::regex regex(regexString, std::regex_constants::extended);
int matches = 0;
@@ -87,6 +87,30 @@
}
int countRulesForFwmark(const uint32_t fwmark) {
- std::string regex = StringPrintf("from all fwmark 0x%x/.* lookup ", fwmark);
+ // Skip top nibble, which differs between rules.
+ std::string regex = StringPrintf("from all fwmark 0x[0-9a-f]+%x/.* lookup ", fwmark);
return countMatchingIpRules(regex);
}
+
+int checkReachability(net_handle_t netHandle, const char* addrStr) {
+ addrinfo *ai, hints = {.ai_flags = AI_NUMERICHOST | AI_NUMERICSERV};
+ int ret = getaddrinfo(addrStr, "53", &hints, &ai);
+ if (ret) {
+ return -EINVAL;
+ }
+
+ int sock = socket(ai->ai_family, SOCK_DGRAM, 0);
+ if (sock == -1 || android_setsocknetwork(netHandle, sock) == -1) {
+ ret = -errno;
+ freeaddrinfo(ai);
+ return ret;
+ }
+
+ ret = connect(sock, ai->ai_addr, ai->ai_addrlen);
+ close(sock);
+ if (ret == -1) {
+ ret = -errno;
+ }
+ freeaddrinfo(ai);
+ return ret;
+}