summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHazael Sanchez <hazael@google.com>2025-08-15 10:26:15 -0700
committerPranav Kant <prka@google.com>2025-08-15 10:27:05 -0700
commitfdab32a92f9dfb35cd708c9842e96ae1b1a4efa8 (patch)
tree232961041cab6b107c70fb3534f8ae5a093c7ea7
parenta557210c765cba86655587d0f328907f5f0ba18b (diff)
Introduce socket tagging capabilities to the DNS resolvergoogle/grte/v5-2.27/master
Internal bug: b/419200756
-rw-r--r--resolv/res_send.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/resolv/res_send.c b/resolv/res_send.c
index 9e9541789b..ce63ea8a91 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -117,6 +117,13 @@
#define MAXPACKET 65536
#endif
+static inline void tag_socket(int fd) {
+#if defined(SO_NET_PROTOCOL_ID) && defined(PROTOCOL_ID_DNS)
+ int id = PROTOCOL_ID_DNS;
+ setsockopt(fd, SOL_SOCKET, SO_NET_PROTOCOL_ID, &id, sizeof(id));
+#endif
+}
+
/* From ev_streams.c. */
static inline void
@@ -743,6 +750,7 @@ send_vc(res_state statp,
return (-1);
}
__set_errno (0);
+ tag_socket(statp->_vcsock);
if (connect(statp->_vcsock, nsap,
nsap->sa_family == AF_INET
? sizeof (struct sockaddr_in)
@@ -945,6 +953,7 @@ reopen (res_state statp, int *terrno, int ns)
*terrno = errno;
return (-1);
}
+ tag_socket(EXT(statp).nssocks[ns]);
/*
* On a 4.3BSD+ machine (client and server,