str_printfa(dest, "\tlport=%u", fields->local_port);
if (fields->remote_port != 0)
str_printfa(dest, "\trport=%u", fields->remote_port);
+ if (fields->ssl_ja3_hash != NULL)
+ auth_str_add_keyvalue(dest, "ssl_j3_hash", fields->ssl_ja3_hash);
if (fields->real_local_ip.family != 0) {
auth_str_add_keyvalue(dest, "real_lip",
net_ip2addr(&fields->real_local_ip));
event_add_int(event, "remote_port", fields->remote_port);
if (fields->real_remote_port == 0)
auth_request_import_info(request, "real_rport", value);
+ } else if (strcmp(key, "ssl_ja3_hash") == 0) {
+ fields->ssl_ja3_hash = p_strdup(request->pool, value);
} else if (strcmp(key, "real_lip") == 0) {
if (net_addr2ip(value, &fields->real_local_ip) == 0)
event_add_str(event, "real_local_ip", value);
const char *service, *mech_name, *session_id, *local_name, *client_id;
struct ip_addr local_ip, remote_ip, real_local_ip, real_remote_ip;
in_port_t local_port, remote_port, real_local_port, real_remote_port;
+ const char *ssl_ja3_hash;
/* extra_fields are returned in authentication reply. Fields prefixed
with "userdb_" are automatically placed to userdb_reply instead. */