From: Alan T. DeKok Date: Fri, 13 Apr 2018 13:08:29 +0000 (-0400) Subject: add connection tracking to clients. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cfbcb07f08cc8ccd470507d9ff64b548117adc0a;p=thirdparty%2Ffreeradius-server.git add connection tracking to clients. --- diff --git a/share/dictionary.freeradius.internal b/share/dictionary.freeradius.internal index 3df96c68574..40f947774c0 100644 --- a/share/dictionary.freeradius.internal +++ b/share/dictionary.freeradius.internal @@ -259,6 +259,7 @@ ATTRIBUTE FreeRADIUS-Response-Delay 1152 integer ATTRIBUTE FreeRADIUS-Client-Src-IP-Address 1153 ipaddr ATTRIBUTE FreeRADIUS-Client-Src-IPv6-Address 1154 ipv6addr ATTRIBUTE FreeRADIUS-Response-Delay-USec 1155 integer +ATTRIBUTE FreeRADIUS-Client-Track-Connections 1156 bool ATTRIBUTE REST-HTTP-Header 1160 string ATTRIBUTE REST-HTTP-Body 1161 string diff --git a/src/include/clients.h b/src/include/clients.h index b06005da1a4..1320d744ab4 100644 --- a/src/include/clients.h +++ b/src/include/clients.h @@ -49,6 +49,7 @@ typedef struct radclient { bool dynamic; //!< Whether the client was dynamically defined. bool active; //!< for dynamic clients bool negative; //!< negative cache entry + bool use_connected; //!< do we use connected sockets for this client #ifdef WITH_TLS bool tls_required; //!< whether TLS encryption is required. diff --git a/src/main/client.c b/src/main/client.c index 544de25ef2d..ebde480d250 100644 --- a/src/main/client.c +++ b/src/main/client.c @@ -450,6 +450,8 @@ static const CONF_PARSER client_config[] = { { FR_CONF_OFFSET("virtual_server", FR_TYPE_STRING, RADCLIENT, server) }, { FR_CONF_OFFSET("response_window", FR_TYPE_TIMEVAL, RADCLIENT, response_window) }, + { FR_CONF_OFFSET("track_connections", FR_TYPE_BOOL, RADCLIENT, use_connected) }, + #ifdef WITH_TCP { FR_CONF_POINTER("proto", FR_TYPE_STRING, &hs_proto) }, { FR_CONF_POINTER("limit", FR_TYPE_SUBSECTION, NULL), .subcs = (void const *) limit_config }, @@ -968,6 +970,11 @@ RADCLIENT *client_afrom_request(TALLOC_CTX *ctx, REQUEST *request) value = vp->vp_strvalue; break; + case FR_FREERADIUS_CLIENT_TRACK_CONNECTIONS: + attr = "track_connections"; + value = vp->vp_strvalue; + break; + default: RERROR("Ignoring attribute %s", vp->da->name); continue;