From: Michael Ducharme Date: Fri, 17 Aug 2018 23:09:37 +0000 (-0700) Subject: Added support for IPv6 RADIUS accounting in SQL X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d3d557a4820b60338e309aac27b8bbfbde01a1fe;p=thirdparty%2Ffreeradius-server.git Added support for IPv6 RADIUS accounting in SQL --- diff --git a/raddb/mods-config/sql/main/cassandra/queries.conf b/raddb/mods-config/sql/main/cassandra/queries.conf index ba5b3b69546..0fa5891977a 100644 --- a/raddb/mods-config/sql/main/cassandra/queries.conf +++ b/raddb/mods-config/sql/main/cassandra/queries.conf @@ -170,7 +170,11 @@ accounting { callingstationid, \ servicetype, \ framedprotocol, \ - framedipaddress \ + framedipaddress, \ + framedipv6address, \ + framedipv6prefix, \ + framedinterfaceid, \ + delegatedipv6prefix \ ) VALUES ( \ '%{Acct-Unique-Session-Id}', \ '%{Acct-Session-Id}', \ @@ -190,7 +194,11 @@ accounting { '%{Calling-Station-Id}', \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - '%{Framed-IP-Address}' \ + '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}' \ );" } @@ -222,7 +230,11 @@ accounting { callingstationid, \ servicetype, \ framedprotocol, \ - framedipaddress \ + framedipaddress, \ + framedipv6address, \ + framedipv6prefix, \ + framedinterfaceid, \ + delegatedipv6prefix \ ) VALUES ( \ '%{Acct-Unique-Session-Id}', \ '%{Acct-Session-Id}', \ @@ -241,7 +253,11 @@ accounting { '%{Calling-Station-Id}', \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - '%{Framed-IP-Address}' \ + '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}' \ ); \ APPLY BATCH;" } @@ -275,6 +291,10 @@ accounting { servicetype, \ framedprotocol, \ framedipaddress, \ + framedipv6address, \ + framedipv6prefix, \ + framedinterfaceid, \ + delegatedipv6prefix, \ acctterminatecause \ ) VALUES ( \ '%{Acct-Unique-Session-Id}', \ @@ -295,6 +315,10 @@ accounting { '%{Service-Type}', \ '%{Framed-Protocol}', \ '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}', \ '%{Acct-Terminate-Cause}' \ ); \ APPLY BATCH;" diff --git a/raddb/mods-config/sql/main/cassandra/schema.sql b/raddb/mods-config/sql/main/cassandra/schema.sql index d0ae5d8ca05..72e7e1d8499 100644 --- a/raddb/mods-config/sql/main/cassandra/schema.sql +++ b/raddb/mods-config/sql/main/cassandra/schema.sql @@ -39,11 +39,19 @@ CREATE TABLE radacct ( acctterminatecause text, framedprotocol text, framedipaddress text, + framedipv6address text, + framedipv6prefix text, + framedinterfaceid text, + delegatedipv6prefix text, PRIMARY KEY (acctuniqueid) ); CREATE INDEX ON radacct(username); CREATE INDEX ON radacct(framedipaddress); +CREATE INDEX ON radacct(framedipv6address); +CREATE INDEX ON radacct(framedipv6prefix); +CREATE INDEX ON radacct(framedinterfaceid); +CREATE INDEX ON radacct(delegatedipv6prefix); CREATE INDEX ON radacct(nasipaddress); -- diff --git a/raddb/mods-config/sql/main/mssql/queries.conf b/raddb/mods-config/sql/main/mssql/queries.conf index 56ece6e3db0..843fe50ff6c 100644 --- a/raddb/mods-config/sql/main/mssql/queries.conf +++ b/raddb/mods-config/sql/main/mssql/queries.conf @@ -144,6 +144,10 @@ accounting { ServiceType, \ FramedProtocol, \ FramedIPAddress, \ + FramedIPv6Address, \ + FramedIPv6Prefix, \ + FramedInterfaceId, \ + DelegatedIPv6Prefix, \ AcctStartDelay, \ AcctStopDelay, \ XAscendSessionSvrKey) \ @@ -168,6 +172,10 @@ accounting { '%{Service-Type}', \ '%{Framed-Protocol}', \ '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}', \ '%{Acct-Delay-Time}', \ '0', \ '%{X-Ascend-Session-Svr-Key}')" @@ -186,7 +194,11 @@ accounting { query = "\ UPDATE ${....acct_table1} \ SET \ - FramedIPAddress = '%{Framed-IP-Address}' \ + FramedIPAddress = '%{Framed-IP-Address}', \ + FramedIPv6Address = '%{Framed-IPv6-Address}', \ + FramedIPv6Prefix = '%{Framed-IPv6-Prefix}', \ + FramedInterfaceId = '%{Framed-Interface-Id}', \ + DelegatedIPv6Prefix = '%{Delegated-IPv6-Prefix}' \ WHERE AcctUniqueId = '%{Acct-Unique-Session-ID}' \ AND AcctStopTime = 0" @@ -209,6 +221,10 @@ accounting { ServiceType, \ FramedProtocol, \ FramedIPAddress, \ + FramedIPv6Address, \ + FramedIPv6Prefix, \ + FramedInterfaceId, \ + DelegatedIPv6Prefix, \ AcctStartDelay, \ XAscendSessionSvrKey) \ VALUES(\ @@ -229,6 +245,10 @@ accounting { '%{Service-Type}', \ '%{Framed-Protocol}', \ '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}', \ '0', \ '%{X-Ascend-Session-Svr-Key}')" } @@ -269,6 +289,10 @@ accounting { ServiceType, \ FramedProtocol, \ FramedIPAddress, \ + FramedIPv6Address, \ + FramedIPv6Prefix, \ + FramedInterfaceId, \ + DelegatedIPv6Prefix, \ AcctStartDelay, \ AcctStopDelay) \ VALUES(\ @@ -293,6 +317,10 @@ accounting { '%{Service-Type}', \ '%{Framed-Protocol}', \ '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}', \ '0', \ '%{%{Acct-Delay-Time}:-0}')" } diff --git a/raddb/mods-config/sql/main/mssql/schema.sql b/raddb/mods-config/sql/main/mssql/schema.sql index 94030165f63..7a54f76dd1e 100644 --- a/raddb/mods-config/sql/main/mssql/schema.sql +++ b/raddb/mods-config/sql/main/mssql/schema.sql @@ -38,6 +38,10 @@ CREATE TABLE [radacct] ( [ServiceType] [varchar] (32) NULL , [FramedProtocol] [varchar] (32) NULL , [FramedIPAddress] [varchar] (15) DEFAULT ('') FOR [FramedIPAddress], + [FramedIPv6Address] [varchar] (44) DEFAULT ('') FOR [FramedIPv6Address], + [FramedIPv6Prefix] [varchar] (44) DEFAULT ('') FOR [FramedIPv6Prefix], + [FramedInterfaceId] [varchar] (44) DEFAULT ('') FOR [FramedInterfaceId], + [DelegatedIPv6Prefix] [varchar] (44) DEFAULT ('') FOR [DelegatedIPv6Prefix], [XAscendSessionSvrKey] [varchar] (10) DEFAULT (null) FOR [XAscendSessionSvrKey], [AcctStartDelay] [int] NULL , [AcctStopDelay] [int] NULL @@ -127,6 +131,10 @@ ALTER TABLE [radacct] WITH NOCHECK ADD CONSTRAINT [DF_radacct_ServiceType] DEFAULT (null) FOR [ServiceType], CONSTRAINT [DF_radacct_FramedProtocol] DEFAULT (null) FOR [FramedProtocol], CONSTRAINT [DF_radacct_FramedIPAddress] DEFAULT ('') FOR [FramedIPAddress], + CONSTRAINT [DF_radacct_FramedIPv6Address] DEFAULT ('') FOR [FramedIPv6Address], + CONSTRAINT [DF_radacct_FramedIPv6Prefix] DEFAULT ('') FOR [FramedIPv6Prefix], + CONSTRAINT [DF_radacct_FramedInterfaceId] DEFAULT ('') FOR [FramedInterfaceId], + CONSTRAINT [DF_radacct_DelegatedIPv6Prefix] DEFAULT ('') FOR [DelegatedIPv6Prefix], CONSTRAINT [DF_radacct_AcctStartDelay] DEFAULT (null) FOR [AcctStartDelay], CONSTRAINT [DF_radacct_AcctStopDelay] DEFAULT (null) FOR [AcctStopDelay], CONSTRAINT [PK_radacct] PRIMARY KEY NONCLUSTERED @@ -206,6 +214,18 @@ GO CREATE INDEX [FramedIPAddress] ON [radacct]([FramedIPAddress]) ON [PRIMARY] GO + CREATE INDEX [FramedIPv6Address] ON [radacct]([FramedIPv6Address]) ON [PRIMARY] +GO + + CREATE INDEX [FramedIPv6Prefix] ON [radacct]([FramedIPv6Prefix]) ON [PRIMARY] +GO + + CREATE INDEX [FramedInterfaceId] ON [radacct]([FramedInterfaceId]) ON [PRIMARY] +GO + + CREATE INDEX [DelegatedIPv6Prefix] ON [radacct]([DelegatedIPv6Prefix]) ON [PRIMARY] +GO + CREATE INDEX [AcctSessionId] ON [radacct]([AcctSessionId]) ON [PRIMARY] GO diff --git a/raddb/mods-config/sql/main/mysql/queries.conf b/raddb/mods-config/sql/main/mysql/queries.conf index 66c679935ce..c77ae193bfe 100644 --- a/raddb/mods-config/sql/main/mysql/queries.conf +++ b/raddb/mods-config/sql/main/mysql/queries.conf @@ -162,7 +162,8 @@ accounting { connectinfo_start, connectinfo_stop, acctinputoctets, \ acctoutputoctets, calledstationid, callingstationid, \ acctterminatecause, servicetype, framedprotocol, \ - framedipaddress" + framedipaddress, framedipv6address, framedipv6prefix, \ + framedinterfaceid, delegatedipv6prefix" type { accounting-on { @@ -216,7 +217,11 @@ accounting { '', \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - '%{Framed-IP-Address}')" + '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}')" # # Key constraints prevented us from inserting a new session, @@ -245,6 +250,10 @@ accounting { acctinterval = %{integer:Event-Timestamp} - \ UNIX_TIMESTAMP(@acctupdatetime_old), \ framedipaddress = '%{Framed-IP-Address}', \ + framedipv6address = '%{Framed-IPv6-Address}', \ + framedipv6prefix = '%{Framed-IPv6-Prefix}', \ + framedinterfaceid = '%{Framed-Interface-Id}', \ + delegatedipv6prefix = '%{Delegated-IPv6-Prefix}', \ acctsessiontime = %{%{Acct-Session-Time}:-NULL}, \ acctinputoctets = '%{%{Acct-Input-Gigawords}:-0}' \ << 32 | '%{%{Acct-Input-Octets}:-0}', \ @@ -281,7 +290,11 @@ accounting { '', \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - '%{Framed-IP-Address}')" + '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}')" } stop { @@ -330,7 +343,11 @@ accounting { '%{Acct-Terminate-Cause}', \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - '%{Framed-IP-Address}')" + '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}')" } } } diff --git a/raddb/mods-config/sql/main/mysql/schema.sql b/raddb/mods-config/sql/main/mysql/schema.sql index d1c5c6af5a8..d7f8b7d7155 100644 --- a/raddb/mods-config/sql/main/mysql/schema.sql +++ b/raddb/mods-config/sql/main/mysql/schema.sql @@ -40,10 +40,18 @@ CREATE TABLE radacct ( servicetype varchar(32) default NULL, framedprotocol varchar(32) default NULL, framedipaddress varchar(15) NOT NULL default '', + framedipv6address varchar(44) NOT NULL default '', + framedipv6prefix varchar(44) NOT NULL default '', + framedinterfaceid varchar(44) NOT NULL default '', + delegatedipv6prefix varchar(44) NOT NULL default '', PRIMARY KEY (radacctid), UNIQUE KEY acctuniqueid (acctuniqueid), KEY username (username), KEY framedipaddress (framedipaddress), + KEY framedipv6address (framedipv6address), + KEY framedipv6prefix (framedipv6prefix), + KEY framedinterfaceid (framedinterfaceid), + KEY delegatedipv6prefix (delegatedipv6prefix), KEY acctsessionid (acctsessionid), KEY acctsessiontime (acctsessiontime), KEY acctstarttime (acctstarttime), diff --git a/raddb/mods-config/sql/main/ndb/schema.sql b/raddb/mods-config/sql/main/ndb/schema.sql index e6abab52fac..089d7b54e10 100644 --- a/raddb/mods-config/sql/main/ndb/schema.sql +++ b/raddb/mods-config/sql/main/ndb/schema.sql @@ -41,11 +41,19 @@ CREATE TABLE radacct ( acctterminatecause varchar(32) NOT NULL default '', servicetype varchar(32) default NULL, framedprotocol varchar(32) default NULL, - framedipaddress varchar(15) NOT NULL default '' + framedipaddress varchar(15) NOT NULL default '', + framedipv6address varchar(44) NOT NULL default '', + framedipv6prefix varchar(44) NOT NULL default '', + framedinterfaceid varchar(44) NOT NULL default '', + delegatedipv6prefix varchar(44) NOT NULL default '', PRIMARY KEY (radacctid), UNIQUE KEY acctuniqueid (acctuniqueid), KEY username (username), KEY framedipaddress (framedipaddress), + KEY framedipv6address (framedipv6address), + KEY framedipv6prefix (framedipv6prefix), + KEY framedinterfaceid (framedinterfaceid), + KEY delegatedipv6prefix (delegatedipv6prefix), KEY acctsessionid (acctsessionid), KEY acctsessiontime (acctsessiontime), KEY acctstarttime (acctstarttime), diff --git a/raddb/mods-config/sql/main/oracle/queries.conf b/raddb/mods-config/sql/main/oracle/queries.conf index ab777a26038..7fd233ef3a6 100644 --- a/raddb/mods-config/sql/main/oracle/queries.conf +++ b/raddb/mods-config/sql/main/oracle/queries.conf @@ -179,6 +179,10 @@ accounting { ServiceType, \ FramedProtocol, \ FramedIPAddress, \ + FramedIPv6Address, \ + FramedIPv6Prefix, \ + FramedInterfaceId, \ + DelegatedIPv6Prefix, \ AcctStartDelay, \ AcctStopDelay, \ XAscendSessionSvrKey) \ @@ -205,6 +209,10 @@ accounting { '%{Service-Type}', \ '%{Framed-Protocol}', \ '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}', \ '%{Acct-Delay-Time}', \ '0', \ '%{X-Ascend-Session-Svr-Key}')" @@ -224,6 +232,10 @@ accounting { UPDATE ${....acct_table1} \ SET \ FramedIPAddress = NULLIF('%{Framed-IP-Address}', ''), \ + FramedIPv6Address = NULLIF('%{Framed-IPv6-Address}', ''), \ + FramedIPv6Prefix = NULLIF('%{Framed-IPv6-Prefix}', ''), \ + FramedInterfaceId = NULLIF('%{Framed-Interface-Id}', ''), \ + DelegatedIPv6Prefix = NULLIF('%{Delegated-IPv6-Prefix}', ''), \ AcctSessionTime = '%{Acct-Session-Time}', \ AcctInputOctets = '%{Acct-Input-Octets}' + \ ('%{%{Acct-Input-Gigawords}:-0}' * 4294967296), \ diff --git a/raddb/mods-config/sql/main/oracle/schema.sql b/raddb/mods-config/sql/main/oracle/schema.sql index 0d738ba4d23..e6b502d53fc 100644 --- a/raddb/mods-config/sql/main/oracle/schema.sql +++ b/raddb/mods-config/sql/main/oracle/schema.sql @@ -34,6 +34,10 @@ CREATE TABLE radacct ( servicetype VARCHAR(32), framedprotocol VARCHAR(32), framedipaddress VARCHAR(15), + framedipv6address VARCHAR(44), + framedipv6prefix VARCHAR(44), + framedinterfaceid VARCHAR(44), + delegatedipv6prefix VARCHAR(44), acctstartdelay NUMERIC(12), acctstopdelay NUMERIC(12), XAscendSessionSvrKey VARCHAR(10) @@ -43,7 +47,7 @@ CREATE UNIQUE INDEX radacct_idx0 ON radacct(acctuniqueid); CREATE UNIQUE INDEX radacct_idx1 ON radacct(acctsessionid,username,acctstarttime, - acctstoptime,nasipaddress,framedipaddress); + acctstoptime,nasipaddress,framedipaddress,framedipv6address,framedipv6prefix,framedinterfaceid,delegatedipv6prefix); CREATE INDEX radacct_idx2 ON radacct(acctstoptime,nasipaddress,acctstarttime); diff --git a/raddb/mods-config/sql/main/postgresql/queries.conf b/raddb/mods-config/sql/main/postgresql/queries.conf index 15ec6ee88c8..830ccad707b 100644 --- a/raddb/mods-config/sql/main/postgresql/queries.conf +++ b/raddb/mods-config/sql/main/postgresql/queries.conf @@ -200,7 +200,11 @@ accounting { AcctTerminateCause, \ ServiceType, \ FramedProtocol, \ - FramedIpAddress" + FramedIpAddress, \ + FramedIpv6Address, \ + FramedIpv6Prefix, \ + FramedInterfaceId, \ + DelegatedIpv6Prefix" type { accounting-on { @@ -246,7 +250,11 @@ accounting { NULL, \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - NULLIF('%{Framed-IP-Address}', '')::inet)" + NULLIF('%{Framed-IP-Address}', '')::inet, \ + NULLIF('%{Framed-IPv6-Address}', '')::inet, \ + NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \ + NULLIF('%{Framed-Interface-Id}', '')::inet, \ + NULLIF('%{Delegated-IPv6-Prefix}', '')::inet)" query = "\ UPDATE ${....acct_table1} \ @@ -272,6 +280,10 @@ accounting { UPDATE ${....acct_table1} \ SET \ FramedIPAddress = NULLIF('%{Framed-IP-Address}', '')::inet, \ + FramedIPv6Address = NULLIF('%{Framed-IPv6-Address}', '')::inet, \ + FramedIPv6Prefix = NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \ + FramedInterfaceId = NULLIF('%{Framed-Interface-Id}', '')::inet, \ + DelegatedIPv6Prefix = NULLIF('%{Delegated-IPv6-Prefix}', '')::inet, \ AcctSessionTime = %{%{Acct-Session-Time}:-NULL}, \ AcctInterval = (%{integer:Event-Timestamp} - EXTRACT(EPOCH FROM (COALESCE(AcctUpdateTime, AcctStartTime)))), \ AcctUpdateTime = TO_TIMESTAMP(%{integer:Event-Timestamp}), \ @@ -309,7 +321,11 @@ accounting { NULL, \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - NULLIF('%{Framed-IP-Address}', '')::inet)" + NULLIF('%{Framed-IP-Address}', '')::inet, \ + NULLIF('%{Framed-IPv6-Address}', '')::inet, \ + NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \ + NULLIF('%{Framed-Interface-Id}', '')::inet, \ + NULLIF('%{Delegated-IPv6-Prefix}', '')::inet)" } stop { @@ -326,6 +342,10 @@ accounting { '%{%{Acct-Output-Octets}:-0}'::bigint), \ AcctTerminateCause = '%{Acct-Terminate-Cause}', \ FramedIPAddress = NULLIF('%{Framed-IP-Address}', '')::inet, \ + FramedIPv6Address = NULLIF('%{Framed-IPv6-Address}', '')::inet, \ + FramedIPv6Prefix = NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \ + FramedInterfaceId = NULLIF('%{Framed-Interface-Id}', '')::inet, \ + DelegatedIPv6Prefix = NULLIF('%{Delegated-IPv6-Prefix}', '')::inet, \ ConnectInfo_stop = '%{Connect-Info}' \ WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}' \ AND AcctStopTime IS NULL" @@ -357,7 +377,11 @@ accounting { '%{Acct-Terminate-Cause}', \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - NULLIF('%{Framed-IP-Address}', '')::inet)" + NULLIF('%{Framed-IP-Address}', '')::inet, \ + NULLIF('%{Framed-IPv6-Address}', '')::inet, \ + NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \ + NULLIF('%{Framed-Interface-Id}', '')::inet, \ + NULLIF('%{Delegated-IPv6-Prefix}', '')::inet)" # and again where we don't have "AND AcctStopTime IS NULL" query = "\ @@ -373,6 +397,10 @@ accounting { '%{%{Acct-Output-Octets}:-0}'::bigint), \ AcctTerminateCause = '%{Acct-Terminate-Cause}', \ FramedIPAddress = NULLIF('%{Framed-IP-Address}', '')::inet, \ + FramedIPv6Address = NULLIF('%{Framed-IPv6-Address}', '')::inet, \ + FramedIPv6Prefix = NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \ + FramedInterfaceId = NULLIF('%{Framed-Interface-Id}', '')::inet, \ + DelegatedIPv6Prefix = NULLIF('%{Delegated-IPv6-Prefix}', '')::inet, \ ConnectInfo_stop = '%{Connect-Info}' \ WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'" } diff --git a/raddb/mods-config/sql/main/postgresql/schema.sql b/raddb/mods-config/sql/main/postgresql/schema.sql index d8c6b983e7c..29ef0766c47 100644 --- a/raddb/mods-config/sql/main/postgresql/schema.sql +++ b/raddb/mods-config/sql/main/postgresql/schema.sql @@ -38,7 +38,11 @@ CREATE TABLE radacct ( AcctTerminateCause text, ServiceType text, FramedProtocol text, - FramedIPAddress inet + FramedIPAddress inet, + FramedIPv6Address inet, + FramedIPv6Prefix inet, + FramedInterfaceId inet, + DelegatedIPv6Prefix inet ); -- This index may be useful.. -- CREATE UNIQUE INDEX radacct_whoson on radacct (AcctStartTime, nasipaddress); diff --git a/raddb/mods-config/sql/main/sqlite/queries.conf b/raddb/mods-config/sql/main/sqlite/queries.conf index 1a8282e9699..006fcf62792 100644 --- a/raddb/mods-config/sql/main/sqlite/queries.conf +++ b/raddb/mods-config/sql/main/sqlite/queries.conf @@ -166,7 +166,11 @@ accounting { acctterminatecause, \ servicetype, \ framedprotocol, \ - framedipaddress" + framedipaddress, \ + framedipv6address, \ + framedipv6prefix, \ + framedinterfaceid, \ + delegatedipv6prefix" type { accounting-on { @@ -219,7 +223,11 @@ accounting { '', \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - '%{Framed-IP-Address}')" + '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}')" # # Key constraints prevented us from inserting a new session, @@ -245,6 +253,10 @@ accounting { acctupdatetime = %{%{integer:Event-Timestamp}:-date('now')}, \ acctinterval = 0, \ framedipaddress = '%{Framed-IP-Address}', \ + framedipv6address = '%{Framed-IPv6-Address}', \ + framedipv6prefix = '%{Framed-IPv6-Prefix}', \ + framedinterfaceid = '%{Framed-Interface-Id}', \ + delegatedipv6prefix = '%{Delegated-IPv6-Prefix}', \ acctsessiontime = %{%{Acct-Session-Time}:-NULL}, \ acctinputoctets = %{%{Acct-Input-Gigawords}:-0} \ << 32 | %{%{Acct-Input-Octets}:-0}, \ @@ -283,7 +295,11 @@ accounting { '', \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - '%{Framed-IP-Address}')" + '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}')" } stop { @@ -333,7 +349,11 @@ accounting { '%{Acct-Terminate-Cause}', \ '%{Service-Type}', \ '%{Framed-Protocol}', \ - '%{Framed-IP-Address}')" + '%{Framed-IP-Address}', \ + '%{Framed-IPv6-Address}', \ + '%{Framed-IPv6-Prefix}', \ + '%{Framed-Interface-Id}', \ + '%{Delegated-IPv6-Prefix}')" } } } diff --git a/raddb/mods-config/sql/main/sqlite/schema.sql b/raddb/mods-config/sql/main/sqlite/schema.sql index 89da8d13eaf..28916d266a5 100644 --- a/raddb/mods-config/sql/main/sqlite/schema.sql +++ b/raddb/mods-config/sql/main/sqlite/schema.sql @@ -35,12 +35,20 @@ CREATE TABLE radacct ( acctterminatecause varchar(32) NOT NULL default '', servicetype varchar(32) default NULL, framedprotocol varchar(32) default NULL, - framedipaddress varchar(15) NOT NULL default '' + framedipaddress varchar(15) NOT NULL default '', + framedipv6address varchar(44) NOT NULL default '', + framedipv6prefix varchar(44) NOT NULL default '', + framedinterfaceid varchar(44) NOT NULL default '', + delegatedipv6prefix varchar(44) NOT NULL default '' ); CREATE UNIQUE INDEX acctuniqueid ON radacct(acctuniqueid); CREATE INDEX username ON radacct(username); CREATE INDEX framedipaddress ON radacct (framedipaddress); +CREATE INDEX framedipv6address ON radacct (framedipv6address); +CREATE INDEX framedipv6prefix ON radacct (framedipv6prefix); +CREATE INDEX framedinterfaceid ON radacct (framedinterfaceid); +CREATE INDEX delegatedipv6prefix ON radacct (delegatedipv6prefix); CREATE INDEX acctsessionid ON radacct(acctsessionid); CREATE INDEX acctsessiontime ON radacct(acctsessiontime); CREATE INDEX acctstarttime ON radacct(acctstarttime);