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();