]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Parse FreeRADIUS-Client-Src-IP-Address when creating dynamic clients
authorNick Porter <nick@portercomputing.co.uk>
Tue, 12 Mar 2024 14:54:21 +0000 (14:54 +0000)
committerNick Porter <nick@portercomputing.co.uk>
Tue, 12 Mar 2024 14:54:21 +0000 (14:54 +0000)
And copy the resulting field back when the client is created.

Makes dynamic clients consistent with static clients.

src/lib/io/master.c
src/lib/server/client.c

index 422fa8793384407fc3f0fa179c3dc49e82098be5..df78db39dc9e6a28a002cf2e1d9754a8850e09dd 100644 (file)
@@ -2443,6 +2443,7 @@ static ssize_t mod_write(fr_listen_t *li, void *packet_ctx, fr_time_t request_ti
        DUP_FIELD(nas_type);
 
        COPY_FIELD(ipaddr);
+       COPY_FIELD(src_ipaddr);
        COPY_FIELD(message_authenticator);
        COPY_FIELD(use_connected);
 
index 5847700839817fdda395db98105c96afd669b5cd..bf08aa2d97356b6d0fa778602f595290948cb5fa 100644 (file)
@@ -978,6 +978,11 @@ fr_client_t *client_afrom_request(TALLOC_CTX *ctx, request_t *request)
                        value = vp->vp_strvalue;
                        break;
 
+               case FR_FREERADIUS_CLIENT_SRC_IP_ADDRESS:
+                       attr = "src_ipaddr";
+                       value = fr_inet_ntop(buffer, sizeof(buffer), &vp->vp_ip);
+                       break;
+
                case FR_FREERADIUS_CLIENT_REQUIRE_MA:
                        attr = "require_message_authenticator";
                        if (vp->vp_bool) {