From: Alan T. DeKok Date: Tue, 24 Oct 2017 19:09:15 +0000 (-0400) Subject: Allow NAS to be IPv4 or IPv6. Helps with #2094 X-Git-Tag: release_3_0_16~88 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ad56cd768eb0b2a4cbdd73ea836b1fbf41f5078;p=thirdparty%2Ffreeradius-server.git Allow NAS to be IPv4 or IPv6. Helps with #2094 --- diff --git a/raddb/mods-config/sql/ippool/mysql/queries.conf b/raddb/mods-config/sql/ippool/mysql/queries.conf index 278c701f3ba..bc51b1b2e24 100644 --- a/raddb/mods-config/sql/ippool/mysql/queries.conf +++ b/raddb/mods-config/sql/ippool/mysql/queries.conf @@ -20,7 +20,7 @@ # # This series of queries allocates an IP address # (Note: If your pool_key is set to Calling-Station-Id and not NAS-Port -# then you may wish to delete the "AND nasipaddress = '%{Nas-IP-Address}' +# then you may wish to delete the "AND nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' # from the WHERE clause) # allocate_clear = "\ @@ -32,7 +32,7 @@ allocate_clear = "\ username = '', \ expiry_time = NULL \ WHERE expiry_time <= NOW() - INTERVAL 1 SECOND \ - AND nasipaddress = '%{Nas-IP-Address}'" + AND nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}'" # # The ORDER BY clause of this query tries to allocate the same IP-address @@ -109,7 +109,7 @@ stop_clear = "\ callingstationid = '', \ username = '', \ expiry_time = NULL \ - WHERE nasipaddress = '%{Nas-IP-Address}' \ + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' \ AND pool_key = '${pool_key}' \ AND username = '%{User-Name}' \ AND callingstationid = '%{Calling-Station-Id}' \ @@ -122,7 +122,7 @@ alive_update = "\ UPDATE ${ippool_table} \ SET \ expiry_time = NOW() + INTERVAL ${lease_duration} SECOND \ - WHERE nasipaddress = '%{Nas-IP-Address}' \ + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' \ AND pool_key = '${pool_key}' \ AND username = '%{User-Name}' \ AND callingstationid = '%{Calling-Station-Id}' \ @@ -140,7 +140,7 @@ on_clear = "\ callingstationid = '', \ username = '', \ expiry_time = NULL \ - WHERE nasipaddress = '%{Nas-IP-Address}'" + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}'" # # This series of queries frees the IP numbers allocate to a @@ -154,4 +154,4 @@ off_clear = "\ callingstationid = '', \ username = '', \ expiry_time = NULL \ - WHERE nasipaddress = '%{Nas-IP-Address}'" + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}'" diff --git a/raddb/mods-config/sql/ippool/oracle/queries.conf b/raddb/mods-config/sql/ippool/oracle/queries.conf index ad74651578d..03b7f0ed281 100644 --- a/raddb/mods-config/sql/ippool/oracle/queries.conf +++ b/raddb/mods-config/sql/ippool/oracle/queries.conf @@ -83,7 +83,7 @@ allocate_update = "\ # as your "pool_key" and your users are able to reconnect before your NAS # has timed out their previous session. (Generally on wireless networks) # (Note: If your pool_key is set to Calling-Station-Id and not NAS-Port -# then you may wish to delete the "AND nasipaddress = '%{Nas-IP-Address}' +# then you may wish to delete the "AND nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' # from the WHERE clause) # allocate_clear = "\ @@ -116,7 +116,7 @@ stop_clear = "\ pool_key = 0, \ callingstationid = '', \ expiry_time = current_timestamp - INTERVAL '1' second(1) \ - WHERE nasipaddress = '%{Nas-IP-Address}' \ + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' \ AND pool_key = '${pool_key}' \ AND username = '%{SQL-User-Name}' \ AND callingstationid = '%{Calling-Station-Id}'" @@ -129,7 +129,7 @@ alive_update = "\ UPDATE ${ippool_table} \ SET \ expiry_time = current_timestamp + INTERVAL '${lease_duration}' second(1) \ - WHERE nasipaddress = '%{Nas-IP-Address}' \ + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' \ AND pool_key = '${pool_key}' \ AND framedipaddress = '%{${attribute_name}}' \ AND username = '%{SQL-User-Name}' \ @@ -146,7 +146,7 @@ on_clear = "\ pool_key = 0, \ callingstationid = '', \ expiry_time = current_timestamp - INTERVAL '1' second(1) \ - WHERE nasipaddress = '%{Nas-IP-Address}'" + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}'" # # This query frees all IP addresses allocated to a NAS when an @@ -159,4 +159,4 @@ off_clear = "\ pool_key = 0, \ callingstationid = '', \ expiry_time = current_timestamp - INTERVAL '1' second(1) \ - WHERE nasipaddress = '%{Nas-IP-Address}'" + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}'" diff --git a/raddb/mods-config/sql/ippool/postgresql/queries.conf b/raddb/mods-config/sql/ippool/postgresql/queries.conf index b08bcd7af66..9ceb5148e40 100644 --- a/raddb/mods-config/sql/ippool/postgresql/queries.conf +++ b/raddb/mods-config/sql/ippool/postgresql/queries.conf @@ -64,7 +64,7 @@ allocate_update = "\ # as your "pool_key" and your users are able to reconnect before your NAS # has timed out their previous session. (Generally on wireless networks) # (Note: If your pool_key is set to Calling-Station-Id and not NAS-Port -# then you may wish to delete the "AND nasipaddress = '%{Nas-IP-Address}' +# then you may wish to delete the "AND nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' # from the WHERE clause) # allocate_clear = "\ @@ -99,7 +99,7 @@ stop_clear = "\ pool_key = 0, \ callingstationid = '', \ expiry_time = 'now'::timestamp(0) - '1 second'::interval \ - WHERE nasipaddress = '%{Nas-IP-Address}' \ + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' \ AND pool_key = '${pool_key}' \ AND username = '%{SQL-User-Name}' \ AND callingstationid = '%{Calling-Station-Id}' \ @@ -113,7 +113,7 @@ alive_update = "\ UPDATE ${ippool_table} \ SET \ expiry_time = 'now'::timestamp(0) + '${lease_duration} seconds'::interval \ - WHERE nasipaddress = '%{Nas-IP-Address}' \ + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' \ AND pool_key = '${pool_key}' \ AND framedipaddress = '%{${attribute_name}}' \ AND username = '%{SQL-User-Name}' \ @@ -130,7 +130,7 @@ on_clear = "\ pool_key = 0, \ callingstationid = '', \ expiry_time = 'now'::timestamp(0) - '1 second'::interval \ - WHERE nasipaddress = '%{Nas-IP-Address}'" + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}'" # # This query frees all IP addresses allocated to a NAS when an @@ -143,4 +143,4 @@ off_clear = "\ pool_key = 0, \ callingstationid = '', \ expiry_time = 'now'::timestamp(0) - '1 second'::interval \ - WHERE nasipaddress = '%{Nas-IP-Address}'" + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}'" diff --git a/raddb/mods-config/sql/ippool/sqlite/queries.conf b/raddb/mods-config/sql/ippool/sqlite/queries.conf index 86f801abe6d..76d07dfb43a 100644 --- a/raddb/mods-config/sql/ippool/sqlite/queries.conf +++ b/raddb/mods-config/sql/ippool/sqlite/queries.conf @@ -18,7 +18,7 @@ # # This series of queries allocates an IP address # (Note: If your pool_key is set to Calling-Station-Id and not NAS-Port -# then you may wish to delete the "AND nasipaddress = '%{Nas-IP-Address}' +# then you may wish to delete the "AND nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' # from the WHERE clause) # allocate_clear = "\ @@ -30,7 +30,7 @@ allocate_clear = "\ username = '', \ expiry_time = NULL \ WHERE expiry_time <= datetime(strftime('%%s', 'now') - 1, 'unixepoch') \ - AND nasipaddress = '%{Nas-IP-Address}'" + AND nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}'" # # The ORDER BY clause of this query tries to allocate the same IP-address @@ -112,7 +112,7 @@ stop_clear = "\ callingstationid = '', \ username = '', \ expiry_time = NULL \ - WHERE nasipaddress = '%{Nas-IP-Address}' \ + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' \ AND pool_key = '${pool_key}' \ AND username = '%{User-Name}' \ AND callingstationid = '%{Calling-Station-Id}' \ @@ -126,7 +126,7 @@ alive_update = "\ UPDATE ${ippool_table} \ SET \ expiry_time = datetime(strftime('%%s', 'now') + ${lease_duration}, 'unixepoch') \ - WHERE nasipaddress = '%{Nas-IP-Address}' \ + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}' \ AND pool_key = '${pool_key}' \ AND username = '%{User-Name}' \ AND callingstationid = '%{Calling-Station-Id}' \ @@ -144,7 +144,7 @@ on_clear = "\ callingstationid = '', \ username = '', \ expiry_time = NULL \ - WHERE nasipaddress = '%{Nas-IP-Address}'" + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}'" # # This series of queries frees the IP numbers allocate to a @@ -158,5 +158,5 @@ off_clear = "\ callingstationid = '', \ username = '', \ expiry_time = NULL \ - WHERE nasipaddress = '%{Nas-IP-Address}'" + WHERE nasipaddress = '%{%{Nas-IP-Address}:-%{Nas-IPv6-Address}}'"