diff options
| author | Hazael Sanchez <hazael@google.com> | 2025-08-15 10:26:15 -0700 |
|---|---|---|
| committer | Pranav Kant <prka@google.com> | 2025-08-15 10:27:05 -0700 |
| commit | fdab32a92f9dfb35cd708c9842e96ae1b1a4efa8 (patch) | |
| tree | 232961041cab6b107c70fb3534f8ae5a093c7ea7 | |
| parent | a557210c765cba86655587d0f328907f5f0ba18b (diff) | |
Introduce socket tagging capabilities to the DNS resolvergoogle/grte/v5-2.27/master
Internal bug: b/419200756
| -rw-r--r-- | resolv/res_send.c | 9 |
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, |
