BpfLoader: exec mainline netbpfload for finalization

Move setting 'bpf.progs_loaded' property to 1 into mainline.

This doesn't terribly matter, but it gives mainline bpf loading
code a chance to run after platform and perform any required
finalization.

While at it also use distinctive error return values,
as these are often the only thing that init reports about
a bpfloader failure.

Test: TreeHugger
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: If502cf07c8ceed306c18821075a92f99437da4dd
diff --git a/loader/BpfLoader.cpp b/loader/BpfLoader.cpp
index 9f61ba1..db86854 100644
--- a/loader/BpfLoader.cpp
+++ b/loader/BpfLoader.cpp
@@ -40,7 +40,6 @@
 
 #include <android-base/logging.h>
 #include <android-base/macros.h>
-#include <android-base/properties.h>
 #include <android-base/stringprintf.h>
 #include <android-base/strings.h>
 #include <android-base/unique_fd.h>
@@ -147,8 +146,7 @@
     return 0;
 }
 
-int main(int argc, char** argv) {
-    (void)argc;
+int main(int __unused argc, char** argv, char * const envp[]) {
     android::base::InitLogging(argv, &android::base::KernelLogger);
 
     // Load all ELF objects, create programs and maps, and pin them
@@ -160,14 +158,12 @@
                   "problems or startup script race.");
             ALOGE("--- DO NOT EXPECT SYSTEM TO BOOT SUCCESSFULLY ---");
             sleep(20);
-            return 2;
+            return 120;
         }
     }
 
-    if (!android::base::SetProperty("bpf.progs_loaded", "1")) {
-        ALOGE("Failed to set bpf.progs_loaded property");
-        return 1;
-    }
-
-    return 0;
+    const char * args[] = { "/apex/com.android.tethering/bin/netbpfload", "done", NULL, };
+    execve(args[0], (char**)args, envp);
+    ALOGE("FATAL: execve(): %d[%s]", errno, strerror(errno));
+    return 121;
 }
diff --git a/loader/Loader.cpp b/loader/Loader.cpp
index dd242e2..d3cfe81 100644
--- a/loader/Loader.cpp
+++ b/loader/Loader.cpp
@@ -46,7 +46,6 @@
 
 #include <android-base/cmsg.h>
 #include <android-base/file.h>
-#include <android-base/properties.h>
 #include <android-base/strings.h>
 #include <android-base/unique_fd.h>