This is an automated email from the ASF dual-hosted git repository. cmcfarlen pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit 188f3f562fef6cd3d80c4c14906dbf8b0786b836 Author: Masakazu Kitajo <[email protected]> AuthorDate: Mon Mar 24 18:20:23 2025 -0600 Fix hii log field for UDS (#12107) * Fix hii log field for UDS * Use ats_unix_set instead of UnAddr * Check HAVE_STRUCT_SOCKADDR_UN_SUN_LEN (cherry picked from commit 41523d163d4285aaccd0dbcdab3bd8aabc2a2a10) --- include/tscore/ink_inet.h | 12 ++++++++++++ src/proxy/logging/LogAccess.cc | 8 ++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/include/tscore/ink_inet.h b/include/tscore/ink_inet.h index 22cd738bbf..2a4fbc363e 100644 --- a/include/tscore/ink_inet.h +++ b/include/tscore/ink_inet.h @@ -1100,6 +1100,18 @@ ats_ip6_set(IpEndpoint *dst, ///< Destination storage. return ats_ip6_set(&dst->sin6, addr, port); } +inline sockaddr * +ats_unix_set(IpEndpoint *dst, const char *path, int len) +{ + dst->sun.sun_family = AF_UNIX; + len = std::min(len, static_cast<int>(TS_UNIX_SIZE)); + memcpy(dst->sun.sun_path, path, len); +#if HAVE_STRUCT_SOCKADDR_UN_SUN_LEN + dst->sun.sun_len = len; +#endif + return ats_ip_sa_cast(&dst->sun); +} + /** Write a null terminated string for @a addr to @a dst. A buffer of size INET6_ADDRSTRLEN suffices, including a terminating nul. */ diff --git a/src/proxy/logging/LogAccess.cc b/src/proxy/logging/LogAccess.cc index 5f9fcdd3e2..c5eefe748e 100644 --- a/src/proxy/logging/LogAccess.cc +++ b/src/proxy/logging/LogAccess.cc @@ -1062,6 +1062,10 @@ LogAccess::unmarshal_ip(char **buf, IpEndpoint *dest) LogFieldIp6 *ip6 = static_cast<LogFieldIp6 *>(raw); ats_ip6_set(dest, ip6->_addr); len = sizeof(*ip6); + } else if (AF_UNIX == raw->_family) { + LogFieldUn *un = static_cast<LogFieldUn *>(raw); + ats_unix_set(dest, un->_path, TS_UNIX_SIZE); + len = sizeof(*un); } else { ats_ip_invalidate(dest); } @@ -1085,7 +1089,7 @@ LogAccess::unmarshal_ip_to_str(char **buf, char *dest, int len) if (len > 0) { unmarshal_ip(buf, &ip); - if (!ats_is_ip(&ip)) { + if (!ats_is_ip(&ip) && !ats_is_unix(ip)) { *dest = '0'; Dbg(dbg_ctl_log_unmarshal_data, "Invalid IP address"); return 1; @@ -1112,7 +1116,7 @@ LogAccess::unmarshal_ip_to_hex(char **buf, char *dest, int len) if (len > 0) { unmarshal_ip(buf, &ip); - if (!ats_is_ip(&ip)) { + if (!ats_is_ip(&ip) && !ats_is_unix(ip)) { *dest = '0'; Dbg(dbg_ctl_log_unmarshal_data, "Invalid IP address"); return 1;
