Move BpfUtils -- move kernelVersion code to its own header
Move kernelVersion and isAtLeastKernelVersion to a local kernelversion.h,
since we cannot use bpf_headers' version of BpfUtils.
Bug: 202086915
Bug: 157552970
Test: builds
Change-Id: I83149b76cc5125991bdb52ce6160c497eb52b48b
diff --git a/staticlibs/native/tcutils/tcutils.cpp b/staticlibs/native/tcutils/tcutils.cpp
index ca1c63c..e30a500 100644
--- a/staticlibs/native/tcutils/tcutils.cpp
+++ b/staticlibs/native/tcutils/tcutils.cpp
@@ -18,12 +18,12 @@
#include "tcutils/tcutils.h"
+#include "kernelversion.h"
#include "scopeguard.h"
#include <android/log.h>
#include <arpa/inet.h>
#include <cerrno>
-#include <cstdio>
#include <cstring>
#include <libgen.h>
#include <linux/if_arp.h>
@@ -35,7 +35,6 @@
#include <net/if.h>
#include <stdarg.h>
#include <sys/socket.h>
-#include <sys/utsname.h>
#include <unistd.h>
#include <utility>
@@ -168,41 +167,6 @@
return ifr.ifr_hwaddr.sa_family;
}
-// -----------------------------------------------------------------------------
-// TODO - just use BpfUtils.h once that is available in sc-mainline-prod and has
-// kernelVersion()
-//
-// In the mean time copying verbatim from:
-// system/bpf/libbpf_android/include/bpf/BpfUtils.h
-// and
-// system/bpf/libbpf_android/BpfUtils.cpp
-
-#define KVER(a, b, c) (((a) << 24) + ((b) << 16) + (c))
-
-unsigned kernelVersion() {
- struct utsname buf;
- int ret = uname(&buf);
- if (ret)
- return 0;
-
- unsigned kver_major;
- unsigned kver_minor;
- unsigned kver_sub;
- char discard;
- ret = sscanf(buf.release, "%u.%u.%u%c", &kver_major, &kver_minor, &kver_sub,
- &discard);
- // Check the device kernel version
- if (ret < 3)
- return 0;
-
- return KVER(kver_major, kver_minor, kver_sub);
-}
-
-bool isAtLeastKernelVersion(unsigned major, unsigned minor, unsigned sub) {
- return kernelVersion() >= KVER(major, minor, sub);
-}
-// -----------------------------------------------------------------------------
-
} // namespace
int isEthernet(const char *iface, bool &isEthernet) {