Restore ANDROID_NO_USE_FWMARK_CLIENT for kernel tests

This was removed in aosp/856089, but kernel tests still depend on it.

Bug: 130199266
Change-Id: I30a69c30a60cfb979702540a274ff0770f398c45
Merged-In: I30a69c30a60cfb979702540a274ff0770f398c45
(cherry picked from commit bc2996c04025993f5a665937870a12f34fe87c61)
diff --git a/client/FwmarkClient.cpp b/client/FwmarkClient.cpp
index 8593740..cc4893d 100644
--- a/client/FwmarkClient.cpp
+++ b/client/FwmarkClient.cpp
@@ -30,8 +30,22 @@
 
 namespace {
 
+// Env flag to control whether FwmarkClient sends sockets to netd for marking.
+// This can only be disabled in debuggable builds and is meant for kernel testing.
+inline constexpr char ANDROID_NO_USE_FWMARK_CLIENT[] = "ANDROID_NO_USE_FWMARK_CLIENT";
+
 const sockaddr_un FWMARK_SERVER_PATH = {AF_UNIX, "/dev/socket/fwmarkd"};
 
+#if defined(NETD_CLIENT_DEBUGGABLE_BUILD)
+constexpr bool isBuildDebuggable = true;
+#else
+constexpr bool isBuildDebuggable = false;
+#endif
+
+bool isOverriddenBy(const char *name) {
+    return isBuildDebuggable && getenv(name);
+}
+
 bool commandHasFd(int cmdId) {
     return (cmdId != FwmarkCommand::QUERY_USER_ACCESS) &&
         (cmdId != FwmarkCommand::SET_COUNTERSET) &&
@@ -41,10 +55,12 @@
 }  // namespace
 
 bool FwmarkClient::shouldSetFwmark(int family) {
+    if (isOverriddenBy(ANDROID_NO_USE_FWMARK_CLIENT)) return false;
     return FwmarkCommand::isSupportedFamily(family);
 }
 
 bool FwmarkClient::shouldReportConnectComplete(int family) {
+    if (isOverriddenBy(ANDROID_NO_USE_FWMARK_CLIENT)) return false;
     return shouldSetFwmark(family);
 }