]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Added support for IPv6 RADIUS accounting in SQL 2279/head
authorMichael Ducharme <mducharme@gmail.com>
Fri, 17 Aug 2018 23:09:37 +0000 (16:09 -0700)
committerMichael Ducharme <mducharme@gmail.com>
Sat, 18 Aug 2018 01:46:53 +0000 (18:46 -0700)
13 files changed:
raddb/mods-config/sql/main/cassandra/queries.conf
raddb/mods-config/sql/main/cassandra/schema.sql
raddb/mods-config/sql/main/mssql/queries.conf
raddb/mods-config/sql/main/mssql/schema.sql
raddb/mods-config/sql/main/mysql/queries.conf
raddb/mods-config/sql/main/mysql/schema.sql
raddb/mods-config/sql/main/ndb/schema.sql
raddb/mods-config/sql/main/oracle/queries.conf
raddb/mods-config/sql/main/oracle/schema.sql
raddb/mods-config/sql/main/postgresql/queries.conf
raddb/mods-config/sql/main/postgresql/schema.sql
raddb/mods-config/sql/main/sqlite/queries.conf
raddb/mods-config/sql/main/sqlite/schema.sql

index ba5b3b69546b9db01590d20bc2d83f579eb3eccc..0fa5891977af9110c5af6271c1fbb7033d2baf0e 100644 (file)
@@ -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;"
index d0ae5d8ca05b42ccdeb2e436da5840744c90fc69..72e7e1d84993503877b51691b04b9521c78138cd 100644 (file)
@@ -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);
 
 --
index 56ece6e3db04d9254638253da49a7c2ef100eb5e..843fe50ff6c9337cb71b08cbd02dfef5fc55c638 100644 (file)
@@ -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}')"
                }
index 94030165f63c3a5d795d6419b6abeb401cf8442f..7a54f76dd1e4d770ff1700c442120c83cf145643 100644 (file)
@@ -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
 
index 66c679935ce9cd3fd10016a768516b0468adf5b1..c77ae193bfe5705443a2e14f9e38dd87acccc9ae 100644 (file)
@@ -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}')"
                }
        }
 }
index d1c5c6af5a88c480b96bb879118ea0b1203afe1b..d7f8b7d715573aa3a18e866c8ba31b6f6951e8c7 100644 (file)
@@ -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),
index e6abab52fac80b76a850137bff36259446dd02b2..089d7b54e109469756dd9e86c5ceab1a0ee35bdb 100644 (file)
@@ -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),
index ab777a26038fb51b1c2c218b05a4c726ceb6b628..7fd233ef3a6ce6ceb952b0bdd4a8843a564673cc 100644 (file)
@@ -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), \
index 0d738ba4d23f9ff9ab5f896c16eeab831e9a7805..e6b502d53fcde8129741dd114c08b02e3d14b0f1 100644 (file)
@@ -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);
 
index 15ec6ee88c87da890ff96e1c71ecacdb8312513a..830ccad707b9e639ce8be3a90e38b0efa6e6ab4d 100644 (file)
@@ -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}'"
                }
index d8c6b983e7c9601d201aa959097bf746dbb6afec..29ef0766c474fc207508119a46fd6fbe3164204e 100644 (file)
@@ -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);
index 1a8282e96990df442b48c332b5f76237bdc4a19f..006fcf627927fc7c5fdb567fb620301e1b289195 100644 (file)
@@ -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}')"
                }
        }
 }
index 89da8d13eafff25e622ac72558802cfcd11981dd..28916d266a5eb6c450e7211175ebdbb03df7d822 100644 (file)
@@ -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);