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) {