event_timestamp = "TO_DATE('1970-01-01','YYYY-MM-DD') + NUMTODSINTERVAL(${event_timestamp_epoch},'SECOND')"
+#######################################################################
+# Query config: Class attribute
+#######################################################################
+#
+# 3.0.22 and later have a "class" column in the accounting table.
+#
+# However, we do NOT want to break existing configurations by adding
+# the Class attribute to the default queries. If we did that, then
+# systems using newer versions of the server would fail, because
+# there is no "class" column in their accounting tables.
+#
+# The solution to that is the following "class" subsection. If your
+# database has a "class" column for the various tables, then you can
+# uncomment the configuration items here. The queries below will
+# then automatically insert the Class attribute into radacct,
+# radpostauth, etc.
+#
+class {
+ #
+ # Delete the '#' character from each of the configuration
+ # items in this section. This change puts the Class
+ # attribute into the various tables. Leave the double-quoted
+ # string there, as the value for the configuration item.
+ #
+ # See also policy.d/accounting, and the "insert_acct_class"
+ # policy. You will need to list (or uncomment)
+ # "insert_acct_class" in the "post-auth" section in order to
+ # create a Class attribute.
+ #
+ column_name = # ", class"
+ packet_xlat = # ", '%{Class}'"
+ reply_xlat = # ", '%{Reply:Class}'"
+}
+
#######################################################################
# Default profile
#######################################################################
DelegatedIPv6Prefix, \
AcctStartDelay, \
AcctStopDelay, \
- XAscendSessionSvrKey) \
+ XAscendSessionSvrKey \
+ ${..class.column_name}) \
VALUES(\
'', \
'%{Acct-Session-Id}', \
'%{Delegated-IPv6-Prefix}', \
'%{Acct-Delay-Time}', \
'0', \
- '%{X-Ascend-Session-Svr-Key}')"
+ '%{X-Ascend-Session-Svr-Key}' \
+ ${....class.packet_xlat})"
#
# When using "sql_session_start", you should comment out
FramedInterfaceId, \
DelegatedIPv6Prefix, \
AcctStartDelay, \
- XAscendSessionSvrKey) \
+ XAscendSessionSvrKey \
+ ${..class.column_name}) \
VALUES(\
'', \
'%{Acct-Session-Id}', \
'%{Framed-Interface-Id}', \
'%{Delegated-IPv6-Prefix}', \
'0', \
- '%{X-Ascend-Session-Svr-Key}')"
+ '%{X-Ascend-Session-Svr-Key}' \
+ ${....class.packet_xlat})"
#
# When using "sql_session_start", you should comment out
FramedInterfaceId, \
DelegatedIPv6Prefix, \
AcctStartDelay, \
- AcctStopDelay) \
+ AcctStopDelay \
+ ${..class.column_name}) \
VALUES(\
'', \
'%{Acct-Session-Id}', \
'%{Framed-Interface-Id}', \
'%{Delegated-IPv6-Prefix}', \
'0', \
- '%{%{Acct-Delay-Time}:-0}')"
+ '%{%{Acct-Delay-Time}:-0}' \
+ ${....class.packet_xlat})"
#
# When using "sql_session_start", you should comment out
# logfile = ${logdir}/post-auth.sql
query = "\
INSERT INTO ${..postauth_table} \
- (username, pass, reply, authdate) \
+ (username, pass, reply, authdate ${..class.column_name}) \
VALUES (\
'%{User-Name}', \
'%{%{User-Password}:-%{Chap-Password}}', \
'%{reply:Packet-Type}', \
- TO_TIMESTAMP('%S.%M','YYYY-MM-DDHH24:MI:SS.FF'))"
+ TO_TIMESTAMP('%S.%M','YYYY-MM-DDHH24:MI:SS.FF') \
+ ${..class.reply_xlat})"
}
CREATE UNIQUE INDEX radacct_idx1
ON radacct(acctsessionid,username,acctstarttime,
acctstoptime,nasipaddress,framedipaddress,framedipv6address,framedipv6prefix,framedinterfaceid,delegatedipv6prefix);
+CREATE INDEX radacct_idx2
+ ON radacct(class);
CREATE SEQUENCE radacct_seq START WITH 1 INCREMENT BY 1;
UserName VARCHAR(64) NOT NULL,
Pass VARCHAR(64),
Reply VARCHAR(64),
- AuthDate TIMESTAMP(6) WITH TIME ZONE
+ AuthDate TIMESTAMP(6) WITH TIME ZONE,
+ Class VARCHAR(64)
);
+CREATE INDEX radpostauth_idx0
+ ON radpostauth(UserName);
+CREATE INDEX radpostauth_idx1
+ ON radpostauth(class);
CREATE SEQUENCE radpostauth_seq START WITH 1 INCREMENT BY 1;