]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
add connection tracking to clients.
authorAlan T. DeKok <aland@freeradius.org>
Fri, 13 Apr 2018 13:08:29 +0000 (09:08 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 16 Apr 2018 18:41:31 +0000 (14:41 -0400)
share/dictionary.freeradius.internal
src/include/clients.h
src/main/client.c

index 3df96c685741b1fd27b3f834844646955aea420b..40f947774c07a51aa39d6977d6379ee525d6bab1 100644 (file)
@@ -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
index b06005da1a4bb705342cea7d4848cd9ab5a94a9d..1320d744ab4369d0f04dc01ee157233a36a0f05b 100644 (file)
@@ -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.
index 544de25ef2d0911b8d47efbae9c21160c73af856..ebde480d25035034eb96727e9cb62017b9a87bbc 100644 (file)
@@ -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;