BPF: Create rust bpfloader

In preparation for adding libbpf support via libbpf-rs, replace the
existing cpp bpfloader with a rust application calling into the
libbpf_android bindings to the legacy code.

Test: treehugger
Change-Id: I79eff1fece3372727c700308ff9a35029d0e34d3
Signed-off-by: Neill Kapron <nkapron@google.com>
diff --git a/loader/bpfloader.rs b/loader/bpfloader.rs
new file mode 100644
index 0000000..0cd5e0e
--- /dev/null
+++ b/loader/bpfloader.rs
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//! BPF loader for system and vendor applications
+
+fn main() {
+    // SAFETY: Linking in the existing legacy bpfloader functionality.
+    // Any of the three following bindgen functions can abort() or exit()
+    // on failure and execNetBpfLoadDone() execve()'s.
+    unsafe {
+        bpf_android_bindgen::initLogging();
+        bpf_android_bindgen::legacyBpfLoader();
+        bpf_android_bindgen::execNetBpfLoadDone();
+    }
+}