It helps the admin to locate accounting packets.
framedipv6address, \
framedipv6prefix, \
framedinterfaceid, \
- delegatedipv6prefix \
+ delegatedipv6prefix, \
+ class
) VALUES ( \
'%{Acct-Unique-Session-Id}', \
'%{Acct-Session-Id}', \
'%{Framed-IPv6-Address}', \
'%{Framed-IPv6-Prefix}', \
'%{Framed-Interface-Id}', \
- '%{Delegated-IPv6-Prefix}' \
+ '%{Delegated-IPv6-Prefix}', \
+ '%{Class}'
);"
}
framedipv6address, \
framedipv6prefix, \
framedinterfaceid, \
- delegatedipv6prefix \
+ delegatedipv6prefix, \
+ class \
) VALUES ( \
'%{Acct-Unique-Session-Id}', \
'%{Acct-Session-Id}', \
'%{Framed-IPv6-Address}', \
'%{Framed-IPv6-Prefix}', \
'%{Framed-Interface-Id}', \
- '%{Delegated-IPv6-Prefix}' \
+ '%{Delegated-IPv6-Prefix}', \
+ '%{Class}' \
); \
APPLY BATCH;"
}
framedipv6prefix, \
framedinterfaceid, \
delegatedipv6prefix, \
- acctterminatecause \
+ acctterminatecause, \
+ class \
) VALUES ( \
'%{Acct-Unique-Session-Id}', \
'%{Acct-Session-Id}', \
'%{Framed-IPv6-Prefix}', \
'%{Framed-Interface-Id}', \
'%{Delegated-IPv6-Prefix}', \
- '%{Acct-Terminate-Cause}' \
+ '%{Acct-Terminate-Cause}', \
+ '%{Class}' \
); \
APPLY BATCH;"
}
framedipv6prefix text,
framedinterfaceid text,
delegatedipv6prefix text,
+ class text,
PRIMARY KEY (acctuniqueid)
);
FramedInterfaceId, \
DelegatedIPv6Prefix, \
AcctStartDelay, \
- AcctStopDelay) \
+ AcctStopDelay, \
+ Class) \
VALUES(\
'%{Acct-Session-Id}', \
'%{Acct-Unique-Session-Id}', \
'%{Framed-Interface-Id}', \
'%{Delegated-IPv6-Prefix}', \
'%{Acct-Delay-Time}', \
- '0')"
+ '0', \
+ '%{Class}')"
query = "\
UPDATE ${....acct_table1} \
FramedIPv6Address = '%{Framed-IPv6-Address}', \
FramedIPv6Prefix = '%{Framed-IPv6-Prefix}', \
FramedInterfaceId = '%{Framed-Interface-Id}', \
- DelegatedIPv6Prefix = '%{Delegated-IPv6-Prefix}' \
+ DelegatedIPv6Prefix = '%{Delegated-IPv6-Prefix}', \
+ Class = '%{Class}' \
WHERE AcctUniqueId = '%{Acct-Unique-Session-ID}' \
AND AcctStopTime = 0"
FramedIPv6Prefix, \
FramedInterfaceId, \
DelegatedIPv6Prefix, \
- AcctStartDelay) \
+ AcctStartDelay, \
+ Class) \
VALUES(\
'%{Acct-Session-Id}', \
'%{Acct-Unique-Session-Id}', \
'%{Framed-IPv6-Prefix}', \
'%{Framed-Interface-Id}', \
'%{Delegated-IPv6-Prefix}', \
- '0')"
+ '0' \
+ '%{Class}')"
}
stop {
AcctOutputOctets = convert(bigint, '%{%{Acct-Output-Gigawords}:-0}' * POWER(2.0, 32)) | '%{%{Acct-Output-Octets}:-0}', \
AcctTerminateCause = '%{Acct-Terminate-Cause}', \
AcctStopDelay = '%{%{Acct-Delay-Time}:-0}', \
- ConnectInfo_stop = '%{Connect-Info}' \
+ ConnectInfo_stop = '%{Connect-Info}', \
+ Class = '%{Class}' \
WHERE AcctUniqueId = '%{Acct-Unique-Session-ID}' \
AND AcctStopTime = 0"
FramedInterfaceId, \
DelegatedIPv6Prefix, \
AcctStartDelay, \
- AcctStopDelay) \
+ AcctStopDelay, \
+ Class) \
VALUES(\
'%{Acct-Session-Id}', \
'%{Acct-Unique-Session-Id}', \
'%{Framed-Interface-Id}', \
'%{Delegated-IPv6-Prefix}', \
'0', \
- '%{%{Acct-Delay-Time}:-0}')"
+ '%{%{Acct-Delay-Time}:-0}', \
+ '%{Class}')"
}
}
}
[FramedInterfaceId] [varchar] (44) NOT NULL,
[DelegatedIPv6Prefix] [varchar] (45) NOT NULL,
[AcctStartDelay] [int] NULL,
- [AcctStopDelay] [int] NULL
+ [AcctStopDelay] [int] NULL,
+ [Class] [varchar] (64) NULL
) ON [PRIMARY]
GO
CONSTRAINT [DF_radacct_DelegatedIPv6Prefix] DEFAULT ('') FOR [DelegatedIPv6Prefix],
CONSTRAINT [DF_radacct_AcctStartDelay] DEFAULT (null) FOR [AcctStartDelay],
CONSTRAINT [DF_radacct_AcctStopDelay] DEFAULT (null) FOR [AcctStopDelay],
+ CONSTRAINT [DF_radacct_Class] DEFAULT (null) FOR [Class],
CONSTRAINT [PK_radacct] PRIMARY KEY NONCLUSTERED
(
[RadAcctId]
CREATE INDEX [NASIPAddress] ON [radacct]([NASIPAddress]) ON [PRIMARY]
GO
+CREATE INDEX [Class] ON [radacct]([Class]) ON [PRIMARY]
+GO
+
-- For use by onoff
CREATE INDEX [RadacctBulkClose] ON [radacct]([NASIPAddress],[AcctStartTime]) WHERE [AcctStopTime] IS NULL ON [PRIMARY]
GO
acctoutputoctets, calledstationid, callingstationid, \
acctterminatecause, servicetype, framedprotocol, \
framedipaddress, framedipv6address, framedipv6prefix, \
- framedinterfaceid, delegatedipv6prefix"
+ framedinterfaceid, delegatedipv6prefix, class"
type {
accounting-on {
'%{Framed-IPv6-Address}', \
'%{Framed-IPv6-Prefix}', \
'%{Framed-Interface-Id}', \
- '%{Delegated-IPv6-Prefix}')"
+ '%{Delegated-IPv6-Prefix}', \
+ '%{Class}')"
#
# Key constraints prevented us from inserting a new session,
UPDATE ${....acct_table1} SET \
acctstarttime = ${....event_timestamp}, \
acctupdatetime = ${....event_timestamp}, \
- connectinfo_start = '%{Connect-Info}' \
+ connectinfo_start = '%{Connect-Info}', \
+ class = '%{Class}' \
WHERE acctuniqueid = '%{Acct-Unique-Session-Id}'"
}
acctinputoctets = '%{%{Acct-Input-Gigawords}:-0}' \
<< 32 | '%{%{Acct-Input-Octets}:-0}', \
acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' \
- << 32 | '%{%{Acct-Output-Octets}:-0}' \
+ << 32 | '%{%{Acct-Output-Octets}:-0}', \
+ class = '%{Class}' \
WHERE acctuniqueid = '%{Acct-Unique-Session-Id}'"
#
'%{Framed-IPv6-Address}', \
'%{Framed-IPv6-Prefix}', \
'%{Framed-Interface-Id}', \
- '%{Delegated-IPv6-Prefix}')"
+ '%{Delegated-IPv6-Prefix}', \
+ '%{Class}')"
}
stop {
acctoutputoctets = '%{%{Acct-Output-Gigawords}:-0}' \
<< 32 | '%{%{Acct-Output-Octets}:-0}', \
acctterminatecause = '%{Acct-Terminate-Cause}', \
- connectinfo_stop = '%{Connect-Info}' \
+ connectinfo_stop = '%{Connect-Info}', \
+ class = '%{Class}' \
WHERE acctuniqueid = '%{Acct-Unique-Session-Id}'"
#
'%{Framed-IPv6-Address}', \
'%{Framed-IPv6-Prefix}', \
'%{Framed-Interface-Id}', \
- '%{Delegated-IPv6-Prefix}')"
+ '%{Delegated-IPv6-Prefix}', \
+ '%{Class}')"
}
}
}
framedipv6prefix varchar(45) NOT NULL default '',
framedinterfaceid varchar(44) NOT NULL default '',
delegatedipv6prefix varchar(45) NOT NULL default '',
+ class varchar(64) default NULL,
PRIMARY KEY (radacctid),
UNIQUE KEY acctuniqueid (acctuniqueid),
KEY username (username),
framedipv6prefix varchar(45) NOT NULL default '',
framedinterfaceid varchar(44) NOT NULL default '',
delegatedipv6prefix varchar(45) NOT NULL default '',
+ class varchar(64) default NULL,
PRIMARY KEY (radacctid),
UNIQUE KEY acctuniqueid (acctuniqueid),
KEY username (username),
AcctSessionTime = ROUND((${....event_timestamp} - \
TO_DATE(TO_CHAR(acctstarttime, 'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*86400), \
AcctTerminateCause='%{%{Acct-Terminate-Cause}:-NAS-Reboot}', \
- AcctStopDelay = %{%{Acct-Delay-Time}:-0} \
+ AcctStopDelay = %{%{Acct-Delay-Time}:-0}, \
+ Class = '%{Class}' \
WHERE AcctStopTime IS NULL \
AND NASIPAddress = '%{NAS-IP-Address}' \
AND AcctStartTime <= ${....event_timestamp}"
FramedInterfaceId, \
DelegatedIPv6Prefix, \
AcctStartDelay, \
- AcctStopDelay) \
+ AcctStopDelay, \
+ Class) \
VALUES(\
'', \
'%{Acct-Session-Id}', \
'%{Framed-Interface-Id}', \
'%{Delegated-IPv6-Prefix}', \
'%{Acct-Delay-Time}', \
- '0')"
+ '0', \
+ '%{Class}')"
query = "\
UPDATE ${....acct_table1} \
AcctInputOctets = '%{Acct-Input-Octets}' + \
('%{%{Acct-Input-Gigawords}:-0}' * 4294967296), \
AcctOutputOctets = '%{Acct-Output-Octets}' + \
- ('%{%{Acct-Output-Gigawords}:-0}' * 4294967296) \
+ ('%{%{Acct-Output-Gigawords}:-0}' * 4294967296), \
+ Class = '%{Class}' \
WHERE AcctUniqueId = '%{Acct-Unique-Session-ID}' \
AND AcctStopTime IS NULL"
ServiceType, \
FramedProtocol, \
FramedIPAddress, \
- AcctStartDelay) \
+ AcctStartDelay, \
+ Class) \
VALUES(\
'', \
'%{Acct-Session-Id}', \
'%{Service-Type}', \
'%{Framed-Protocol}', \
'%{Framed-IP-Address}', \
- '0')"
+ '0', \
+ '%{Class}')"
}
stop {
('%{%{Acct-Output-Gigawords}:-0}' * 4294967296), \
AcctTerminateCause = '%{Acct-Terminate-Cause}', \
AcctStopDelay = '%{%{Acct-Delay-Time}:-0}', \
- ConnectInfo_stop = '%{Connect-Info}' \
+ ConnectInfo_stop = '%{Connect-Info}', \
+ Class = '%{Class}'
WHERE AcctUniqueId = '%{Acct-Unique-Session-ID}' \
AND AcctStopTime IS NULL"
FramedProtocol, \
FramedIPAddress, \
AcctStartDelay, \
- AcctStopDelay) \
+ AcctStopDelay, \
+ Class) \
VALUES(\
'', \
'%{Acct-Session-Id}', \
'%{Framed-Protocol}', \
'%{Framed-IP-Address}', \
'0', \
- '%{%{Acct-Delay-Time}:-0}')"
+ '%{%{Acct-Delay-Time}:-0}', \
+ '%{Class}')"
}
#
framedinterfaceid VARCHAR(44),
delegatedipv6prefix VARCHAR(45),
acctstartdelay NUMERIC(12),
- acctstopdelay NUMERIC(12)
+ acctstopdelay NUMERIC(12),
+ class VARCHAR(64)
);
CREATE UNIQUE INDEX radacct_idx0
FramedIpv6Address, \
FramedIpv6Prefix, \
FramedInterfaceId, \
- DelegatedIpv6Prefix"
+ DelegatedIpv6Prefix, \
+ Class"
type {
accounting-on {
AcctStopTime = ${....event_timestamp}, \
AcctUpdateTime = ${....event_timestamp}, \
AcctSessionTime = (${....event_timestamp_epoch} - EXTRACT(EPOCH FROM(AcctStartTime))), \
- AcctTerminateCause = '%{%{Acct-Terminate-Cause}:-NAS-Reboot}' \
+ AcctTerminateCause = '%{%{Acct-Terminate-Cause}:-NAS-Reboot}', \
+ Class = '%{Class}' \
WHERE AcctStopTime IS NULL \
AND NASIPAddress= '%{%{NAS-IPv6-Address}:-%{NAS-IP-Address}}' \
AND AcctStartTime <= ${....event_timestamp}"
NULLIF('%{Framed-IPv6-Address}', '')::inet, \
NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \
NULLIF('%{Framed-Interface-Id}', ''), \
- NULLIF('%{Delegated-IPv6-Prefix}', '')::inet) \
+ NULLIF('%{Delegated-IPv6-Prefix}', '')::inet, \
+ '%{Class}') \
ON CONFLICT (AcctUniqueId) \
DO UPDATE \
SET \
AcctStartTime = ${....event_timestamp}, \
AcctUpdateTime = ${....event_timestamp}, \
- ConnectInfo_start = '%{Connect-Info}' \
+ ConnectInfo_start = '%{Connect-Info}', \
+ Class = '%{Class}' \
WHERE ${....acct_table1}.AcctUniqueId = '%{Acct-Unique-Session-Id}' \
AND ${....acct_table1}.AcctStopTime IS NULL"
SET \
AcctStartTime = ${....event_timestamp}, \
AcctUpdateTime = ${....event_timestamp}, \
- ConnectInfo_start = '%{Connect-Info}' \
+ ConnectInfo_start = '%{Connect-Info}', \
+ Class = '%{Class}' \
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
}
AcctInputOctets = (('%{%{Acct-Input-Gigawords}:-0}'::bigint << 32) + \
'%{%{Acct-Input-Octets}:-0}'::bigint), \
AcctOutputOctets = (('%{%{Acct-Output-Gigawords}:-0}'::bigint << 32) + \
- '%{%{Acct-Output-Octets}:-0}'::bigint) \
+ '%{%{Acct-Output-Octets}:-0}'::bigint), \
+ Class = '%{Class}' \
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}' \
AND AcctStopTime IS NULL"
NULLIF('%{Framed-IPv6-Address}', '')::inet, \
NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \
NULLIF('%{Framed-Interface-Id}', ''), \
- NULLIF('%{Delegated-IPv6-Prefix}', '')::inet) \
+ NULLIF('%{Delegated-IPv6-Prefix}', '')::inet, \
+ '%{Class}') \
ON CONFLICT (AcctUniqueId) \
DO NOTHING"
}
FramedIPv6Prefix = NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \
FramedInterfaceId = NULLIF('%{Framed-Interface-Id}', ''), \
DelegatedIPv6Prefix = NULLIF('%{Delegated-IPv6-Prefix}', '')::inet, \
- ConnectInfo_stop = '%{Connect-Info}' \
+ ConnectInfo_stop = '%{Connect-Info}', \
+ Class = '%{Class}' \
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}' \
AND AcctStopTime IS NULL"
NULLIF('%{Framed-IPv6-Address}', '')::inet, \
NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \
NULLIF('%{Framed-Interface-Id}', ''), \
- NULLIF('%{Delegated-IPv6-Prefix}', '')::inet) \
+ NULLIF('%{Delegated-IPv6-Prefix}', '')::inet, \
+ '%{Class}') \
ON CONFLICT (AcctUniqueId) \
DO NOTHING"
FramedIPv6Prefix = NULLIF('%{Framed-IPv6-Prefix}', '')::inet, \
FramedInterfaceId = NULLIF('%{Framed-Interface-Id}', ''), \
DelegatedIPv6Prefix = NULLIF('%{Delegated-IPv6-Prefix}', '')::inet, \
- ConnectInfo_stop = '%{Connect-Info}' \
+ ConnectInfo_stop = '%{Connect-Info}', \
+ Class = '%{Class}' \
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
}
FramedIPv6Address inet,
FramedIPv6Prefix inet,
FramedInterfaceId text,
- DelegatedIPv6Prefix inet
+ DelegatedIPv6Prefix inet,
+ Class text
);
-- This index may be useful..
-- CREATE UNIQUE INDEX radacct_whoson on radacct (AcctStartTime, nasipaddress);
framedipv6address, \
framedipv6prefix, \
framedinterfaceid, \
- delegatedipv6prefix"
+ delegatedipv6prefix, \
+ class"
type {
accounting-on {
acctsessiontime = \
(${....event_timestamp_epoch} \
- acctstarttime), \
- acctterminatecause = '%{Acct-Terminate-Cause}' \
+ acctterminatecause = '%{Acct-Terminate-Cause}', \
+ class = '%{Class}' \
WHERE acctstoptime IS NULL \
AND nasipaddress = '%{NAS-IP-Address}' \
AND acctstarttime <= ${....event_timestamp}"
'%{Framed-IPv6-Address}', \
'%{Framed-IPv6-Prefix}', \
'%{Framed-Interface-Id}', \
- '%{Delegated-IPv6-Prefix}')"
+ '%{Delegated-IPv6-Prefix}', \
+ '%{Class}')"
#
# Key constraints prevented us from inserting a new session,
UPDATE ${....acct_table1} SET \
acctstarttime = ${....event_timestamp}, \
acctupdatetime = ${....event_timestamp}, \
- connectinfo_start = '%{Connect-Info}' \
+ connectinfo_start = '%{Connect-Info}', \
+ class = '%{Class}' \
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
}
acctinputoctets = %{%{Acct-Input-Gigawords}:-0} \
<< 32 | %{%{Acct-Input-Octets}:-0}, \
acctoutputoctets = %{%{Acct-Output-Gigawords}:-0} \
- << 32 | %{%{Acct-Output-Octets}:-0} \
+ << 32 | %{%{Acct-Output-Octets}:-0}, \
+ class = '%{Class}' \
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
#
'%{Framed-IPv6-Address}', \
'%{Framed-IPv6-Prefix}', \
'%{Framed-Interface-Id}', \
- '%{Delegated-IPv6-Prefix}')"
+ '%{Delegated-IPv6-Prefix}', \
+ '%{Class}')"
}
stop {
acctoutputoctets = %{%{Acct-Output-Gigawords}:-0} \
<< 32 | %{%{Acct-Output-Octets}:-0}, \
acctterminatecause = '%{Acct-Terminate-Cause}', \
- connectinfo_stop = '%{Connect-Info}' \
+ connectinfo_stop = '%{Connect-Info}', \
+ class = '%{Class}' \
WHERE AcctUniqueId = '%{Acct-Unique-Session-Id}'"
#
'%{Framed-IPv6-Address}', \
'%{Framed-IPv6-Prefix}', \
'%{Framed-Interface-Id}', \
- '%{Delegated-IPv6-Prefix}')"
+ '%{Delegated-IPv6-Prefix}', \
+ '%{Class}')"
}
}
}
framedipv6address varchar(45) NOT NULL default '',
framedipv6prefix varchar(45) NOT NULL default '',
framedinterfaceid varchar(44) NOT NULL default '',
- delegatedipv6prefix varchar(45) NOT NULL default ''
+ delegatedipv6prefix varchar(45) NOT NULL default '',
+ class varchar(64) default NULL
);
CREATE UNIQUE INDEX acctuniqueid ON radacct(acctuniqueid);