DO NOT MERGE onConnectEvent does not report udp connects
Test: manual test + $ runtest -x system/netd/test/netd_integration_test.cpp
Bug: 32198976
Bug: 29748723
(cherry picked from commit 5e07140c33d0a050c640a917045f50917e83f1e1)
Change-Id: I5c73a4e2826eb762cafaf7d49ba63601d9759007
diff --git a/server/FwmarkServer.cpp b/server/FwmarkServer.cpp
index 000ffef..38a116d 100644
--- a/server/FwmarkServer.cpp
+++ b/server/FwmarkServer.cpp
@@ -22,6 +22,7 @@
#include "NetworkController.h"
#include "resolv_netid.h"
+#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
#include <utils/String16.h>
@@ -165,6 +166,15 @@
// Called after a socket connect() completes.
// This reports connect event including netId, destination IP address, destination port,
// uid, connect latency, and connect errno if any.
+
+ // Skip reporting if connect() happened on a UDP socket.
+ int socketProto;
+ socklen_t intSize = sizeof(socketProto);
+ const int ret = getsockopt(*socketFd, SOL_SOCKET, SO_PROTOCOL, &socketProto, &intSize);
+ if ((ret != 0) || (socketProto == IPPROTO_UDP)) {
+ break;
+ }
+
android::sp<android::net::metrics::INetdEventListener> netdEventListener =
mEventReporter->getNetdEventListener();