NetBpfLoad: gently enable mainline

Only the non-CRITICAL test@mainline.o is loaded from netbpfload
on T and U < QPR3, everything else is loaded by platform bpfloader

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ic07a57cf93851d3a1411b62c97d8ce057507360b
diff --git a/netd/BpfHandler.cpp b/netd/BpfHandler.cpp
index f08ac44..06873fa 100644
--- a/netd/BpfHandler.cpp
+++ b/netd/BpfHandler.cpp
@@ -170,19 +170,25 @@
         android::bpf::waitForProgsLoaded();
     }
 
-    if (false && !mainlineNetBpfLoadDone()) {
+    if (!mainlineNetBpfLoadDone()) {
+        const bool enforce_mainline = false; // TODO: flip to true
+
         // We're on < U QPR3 & it's the first time netd is starting up (unless crashlooping)
         //
         // On U QPR3+ netbpfload is guaranteed to run before the platform bpfloader,
         // so waitForProgsLoaded() implies mainlineNetBpfLoadDone().
         if (!base::SetProperty("ctl.start", "mdnsd_netbpfload")) {
             ALOGE("Failed to set property ctl.start=mdnsd_netbpfload, see dmesg for reason.");
-            abort();
+            if (enforce_mainline) abort();
         }
 
-        ALOGI("Waiting for Networking BPF programs");
-        waitForNetProgsLoaded();
-        ALOGI("Networking BPF programs are loaded");
+        if (enforce_mainline) {
+            ALOGI("Waiting for Networking BPF programs");
+            waitForNetProgsLoaded();
+            ALOGI("Networking BPF programs are loaded");
+        } else {
+            ALOGI("Started mdnsd_netbpfload asynchronously.");
+        }
     }
 
     ALOGI("BPF programs are loaded");