summaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
author/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org>2008-04-05 15:00:50 +0000
committer/C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org </C=EU/ST=EU/CN=Pablo Neira Ayuso/emailAddress=pablo@netfilter.org>2008-04-05 15:00:50 +0000
commit0fff44e20c072ff0e7dd544ad2a05f921b6a9ad7 (patch)
treef8b095e5e27dd52019410717b1fba0da95068412 /doc
parentcb29382cc2fb585e689f35fa7deac4df88e89181 (diff)
This patch adds MAC address handling to the postgresql output plugin.
Signed-off-by: Eric Leblond <eric@inl.fr>
Diffstat (limited to 'doc')
-rw-r--r--doc/pgsql-ulogd2.sql23
1 files changed, 19 insertions, 4 deletions
diff --git a/doc/pgsql-ulogd2.sql b/doc/pgsql-ulogd2.sql
index f4359ed..fc4aa1b 100644
--- a/doc/pgsql-ulogd2.sql
+++ b/doc/pgsql-ulogd2.sql
@@ -68,12 +68,10 @@ CREATE INDEX ulog2_timestamp ON ulog2(timestamp);
CREATE TABLE mac (
_mac_id bigint PRIMARY KEY UNIQUE NOT NULL,
mac_saddr macaddr default NULL,
- mac_daddr macaddr default NULL,
mac_protocol smallint default NULL
) WITH (OIDS=FALSE);
CREATE INDEX mac_saddr ON mac(mac_saddr);
-CREATE INDEX mac_daddr ON mac(mac_daddr);
CREATE TABLE tcp (
_tcp_id bigint PRIMARY KEY UNIQUE NOT NULL,
@@ -191,7 +189,9 @@ CREATE OR REPLACE VIEW ulog AS
icmpv6_code,
icmpv6_echoid,
icmpv6_echoseq,
- icmpv6_csum
+ icmpv6_csum,
+ mac_saddr AS mac_saddr_str,
+ mac_protocol AS oob_protocol
FROM ulog2 LEFT JOIN tcp ON ulog2._id = tcp._tcp_id LEFT JOIN udp ON ulog2._id = udp._udp_id
LEFT JOIN icmp ON ulog2._id = icmp._icmp_id LEFT JOIN mac ON ulog2._id = mac._mac_id
LEFT JOIN icmpv6 ON ulog2._id = icmpv6._icmpv6_id;
@@ -433,6 +433,16 @@ RETURNS bigint AS $$
SELECT currval('ulog2__id_seq');
$$ LANGUAGE SQL SECURITY INVOKER;
+CREATE OR REPLACE FUNCTION INSERT_MAC(
+ IN mac_id bigint,
+ IN mac_saddr macaddr,
+ IN mac_protocol integer
+ )
+RETURNS bigint AS $$
+ INSERT INTO mac (_mac_id,mac_saddr,mac_protocol)
+ VALUES ($1,$2,$3);
+ SELECT currval('ulog2__id_seq');
+$$ LANGUAGE SQL SECURITY INVOKER;
-- this function requires plpgsql
-- su -c "createlang plpgsql ulog2" postgres
@@ -480,7 +490,9 @@ CREATE OR REPLACE FUNCTION INSERT_PACKET_FULL(
IN icmpv6_code integer,
IN icmpv6_echoid integer,
IN icmpv6_echoseq integer,
- IN icmpv6_csum integer
+ IN icmpv6_csum integer,
+ IN mac_saddr varchar(32),
+ IN mac_protocol integer
)
RETURNS bigint AS $$
DECLARE
@@ -496,6 +508,9 @@ BEGIN
ELSIF (ip_protocol = 58) THEN
PERFORM INSERT_ICMPV6(_id,$40,$41,$42,$43,$44);
END IF;
+ IF (mac_saddr IS NOT NULL) THEN
+ PERFORM INSERT_MAC(_id,$45::macaddr,$46);
+ END IF;
RETURN _id;
END
$$ LANGUAGE plpgsql SECURITY INVOKER;