OffloadUtils - implement getTetherStatsMapFd()

Test: build, atest
Signed-off-by: Maciej Żenczykowski <maze@google.com>
Change-Id: Ibc2d96000a712eee6d64006b063dc50bfbab15c0
diff --git a/server/OffloadUtils.h b/server/OffloadUtils.h
index f2a4dc2..1fb482b 100644
--- a/server/OffloadUtils.h
+++ b/server/OffloadUtils.h
@@ -64,6 +64,11 @@
     return (fd == -1) ? -errno : fd;
 }
 
+inline int getTetherStatsMapFd(void) {
+    const int fd = bpf::bpfFdGet(TETHER_STATS_MAP_PATH, 0);
+    return (fd == -1) ? -errno : fd;
+}
+
 int openNetlinkSocket(void);
 
 int doTcQdiscClsact(int fd, int ifIndex, uint16_t nlMsgType, uint16_t nlMsgFlags);
diff --git a/server/OffloadUtilsTest.cpp b/server/OffloadUtilsTest.cpp
index e4316a7..8179563 100644
--- a/server/OffloadUtilsTest.cpp
+++ b/server/OffloadUtilsTest.cpp
@@ -141,6 +141,14 @@
     close(fd);
 }
 
+TEST_F(OffloadUtilsTest, GetTetherStatsMapFd) {
+    SKIP_IF_BPF_NOT_SUPPORTED;
+
+    int fd = getTetherStatsMapFd();
+    ASSERT_LE(3, fd);  // 0,1,2 - stdin/out/err, thus 3 <= fd
+    close(fd);
+}
+
 TEST_F(OffloadUtilsTest, TryOpeningNetlinkSocket) {
     int fd = openNetlinkSocket();
     ASSERT_LE(3, fd);