git: ce7dc5c30bde - main - net-mgmt/ipfixcol2: New port: High-performance NetFlow v5/v9 and IPFIX collector (RFC7011)

From: Eugene Grosbein <eugen_at_FreeBSD.org>
Date: Wed, 14 Aug 2024 05:27:08 UTC
The branch main has been updated by eugen:

URL: https://cgit.FreeBSD.org/ports/commit/?id=ce7dc5c30bde171cb3aa9c17d19c0a330e9a9909

commit ce7dc5c30bde171cb3aa9c17d19c0a330e9a9909
Author:     Marek Zarychta <zarychtam@plan-b.pwste.edu.pl>
AuthorDate: 2024-08-08 07:15:24 +0000
Commit:     Eugene Grosbein <eugen@FreeBSD.org>
CommitDate: 2024-08-14 05:26:15 +0000

    net-mgmt/ipfixcol2: New port: High-performance NetFlow v5/v9 and IPFIX collector (RFC7011)
    
    PR: 280682
    Sponsored by: CESNET, z.s.p.o.
    Sponsored by: PANS Jarosław
    
    Signed-off-by: Eugene Grosbein <eugen@FreeBSD.org>
---
 GIDs                                  |  2 +-
 UIDs                                  |  2 +-
 net-mgmt/Makefile                     |  1 +
 net-mgmt/ipfixcol2/Makefile           | 39 +++++++++++++++++++++++++++++++
 net-mgmt/ipfixcol2/distinfo           |  3 +++
 net-mgmt/ipfixcol2/files/ipfixcol2.in | 30 ++++++++++++++++++++++++
 net-mgmt/ipfixcol2/pkg-descr          |  2 ++
 net-mgmt/ipfixcol2/pkg-plist          | 44 +++++++++++++++++++++++++++++++++++
 8 files changed, 121 insertions(+), 2 deletions(-)

diff --git a/GIDs b/GIDs
index 80afa5565441..eaf5b1588e14 100644
--- a/GIDs
+++ b/GIDs
@@ -481,7 +481,7 @@ valkey:*:537:
 # free: 538
 # free: 539
 # free: 540
-# free: 541
+ipfixcol2:*:541:
 _flowd:*:542:
 ejabberd:*:543:
 # free: 544
diff --git a/UIDs b/UIDs
index 91822b11dd63..dda814603f01 100644
--- a/UIDs
+++ b/UIDs
@@ -486,7 +486,7 @@ valkey:*:537:537::0:0:Valkey Daemon:/nonexistent:/usr/sbin/nologin
 # free: 538
 # free: 539
 # free: 540
-# free: 541
+ipfixcol2:*:541:541::0:0:IPFIXcol2 User:/var/empty:/usr/sbin/nologin
 _flowd:*:542:542::0:0:flowd privilege separation user:/var/empty:/usr/sbin/nologin
 ejabberd:*:543:543::0:0:ejabberd pseudo user:/var/spool/ejabberd:/bin/sh
 # free: 544
diff --git a/net-mgmt/Makefile b/net-mgmt/Makefile
index 800a44212552..d0036adf6f00 100644
--- a/net-mgmt/Makefile
+++ b/net-mgmt/Makefile
@@ -116,6 +116,7 @@
     SUBDIR += ipaudit
     SUBDIR += ipcad
     SUBDIR += ipcalc
+    SUBDIR += ipfixcol2
     SUBDIR += iprange
     SUBDIR += ipv6calc
     SUBDIR += ipv6gen
diff --git a/net-mgmt/ipfixcol2/Makefile b/net-mgmt/ipfixcol2/Makefile
new file mode 100644
index 000000000000..f2bb7613e465
--- /dev/null
+++ b/net-mgmt/ipfixcol2/Makefile
@@ -0,0 +1,39 @@
+PORTNAME=		ipfixcol2
+DISTVERSIONPREFIX=	v
+DISTVERSION=	2.6.0
+CATEGORIES=		net-mgmt
+
+MAINTAINER=	zarychtam@plan-b.pwste.edu.pl
+COMMENT=	NetFlow v5/v9 and IPFIX flow (RFC 7011) data collector
+WWW=		https://github.com/CESNET/ipfixcol2
+
+LICENSE=		GPLv2
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS= 	librdkafka.so:net/librdkafka \
+			 libepoll-shim.so:devel/libepoll-shim \
+			 libfds.so:net-mgmt/libfds
+
+BUILD_DEPENDS=	rst2man:textproc/py-docutils
+USES=			cmake localbase:ldflags pkgconfig
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	CESNET
+USE_RC_SUBR=${PORTNAME}
+USERS=	${PORTNAME}
+GROUPS=	${PORTNAME}
+PORTEXAMPLES=	*
+
+LDFLAGS+=	 -rdynamic
+CXXFLAGS+=	 -D_GNU_SOURCE
+
+OPTIONS_DEFINE= EXAMPLES
+
+post-install:
+	${MKDIR} ${STAGEDIR}${ETCDIR} ${STAGEDIR}/var/run/${PORTNAME}
+	${INSTALL_DATA} ${WRKSRC}/doc/data/configs/udp2json.xml ${STAGEDIR}${ETCDIR}/startup.xml.sample
+
+post-install-EXAMPLES-on:
+	cd ${WRKSRC}/doc/data && ${COPYTREE_SHARE} "configs" ${STAGEDIR}${EXAMPLESDIR}
+
+.include <bsd.port.mk>
diff --git a/net-mgmt/ipfixcol2/distinfo b/net-mgmt/ipfixcol2/distinfo
new file mode 100644
index 000000000000..21e6c7926aac
--- /dev/null
+++ b/net-mgmt/ipfixcol2/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1723058329
+SHA256 (CESNET-ipfixcol2-v2.6.0_GH0.tar.gz) = 6eb9660a40638b557e3e8ffecebc356667e7678917579b33ddcb713849cf219e
+SIZE (CESNET-ipfixcol2-v2.6.0_GH0.tar.gz) = 667376
diff --git a/net-mgmt/ipfixcol2/files/ipfixcol2.in b/net-mgmt/ipfixcol2/files/ipfixcol2.in
new file mode 100644
index 000000000000..56e21238f8e6
--- /dev/null
+++ b/net-mgmt/ipfixcol2/files/ipfixcol2.in
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# PROVIDE: ipfixcol2
+# REQUIRE: NETWORKING SERVERS LOGIN
+# BEFORE:  securelevel
+# KEYWORD: shutdown
+
+# Add the following line to /etc/rc.conf to enable 'ipfixcol2':
+#
+# ipfixcol2_enable="YES"
+#
+
+. /etc/rc.subr
+
+name=ipfixcol2
+desc="ipfixcol2 startup script"
+rcvar=ipfixcol2_enable
+
+load_rc_config "$name"
+
+: ${ipfixcol2_enable:=NO}
+: ${ipfixcol2_conf:=%%PREFIX%%/etc/$name.conf}
+: ${ipfixcol2_flags:=""}
+: ${ipfixcol2_user:=ipfixcol2}
+
+command=%%PREFIX%%/bin/ipfixcol2
+command_args="-d -P /var/run/$name/$name.pid ${ipfixcol2_flags}"
+pidfile=/var/run/$name/$name.pid
+
+run_rc_command "$1"
diff --git a/net-mgmt/ipfixcol2/pkg-descr b/net-mgmt/ipfixcol2/pkg-descr
new file mode 100644
index 000000000000..3536a598bd05
--- /dev/null
+++ b/net-mgmt/ipfixcol2/pkg-descr
@@ -0,0 +1,2 @@
+IPFIXcol2 is a flexible, high-performance NetFlow v5/v9 and IPFIX flow data
+collector designed to be extensible by plugins.
diff --git a/net-mgmt/ipfixcol2/pkg-plist b/net-mgmt/ipfixcol2/pkg-plist
new file mode 100644
index 000000000000..b4bcb5707de9
--- /dev/null
+++ b/net-mgmt/ipfixcol2/pkg-plist
@@ -0,0 +1,44 @@
+@dir etc/ipfixcol2
+bin/fdsdump
+bin/ipfixcol2
+bin/ipfixsend2
+include/ipfixcol2.h
+include/ipfixcol2/api.h
+include/ipfixcol2/message.h
+include/ipfixcol2/message_garbage.h
+include/ipfixcol2/message_ipfix.h
+include/ipfixcol2/message_session.h
+include/ipfixcol2/plugins.h
+include/ipfixcol2/session.h
+include/ipfixcol2/utils.h
+include/ipfixcol2/verbose.h
+lib/ipfixcol2/libanonymization-intermediate.so
+lib/ipfixcol2/libdummy-input.so
+lib/ipfixcol2/libdummy-output.so
+lib/ipfixcol2/libfds-input.so
+lib/ipfixcol2/libfds-output.so
+lib/ipfixcol2/libforwarder-output.so
+lib/ipfixcol2/libipfix-input.so
+lib/ipfixcol2/libipfix-output.so
+lib/ipfixcol2/libjson-kafka-output.so
+lib/ipfixcol2/libjson-output.so
+lib/ipfixcol2/libtcp-input.so
+lib/ipfixcol2/libtimecheck-output.so
+lib/ipfixcol2/libudp-input.so
+lib/ipfixcol2/libviewer-output.so
+libdata/pkgconfig/ipfixcol2.pc
+share/man/man7/ipfixcol2-anonymization-inter.7.gz
+share/man/man7/ipfixcol2-dummy-output.7.gz
+share/man/man7/ipfixcol2-fds-input.7.gz
+share/man/man7/ipfixcol2-fds-output.7.gz
+share/man/man7/ipfixcol2-forwarder-output.7.gz
+share/man/man7/ipfixcol2-ipfix-input.7.gz
+share/man/man7/ipfixcol2-ipfix-output.7.gz
+share/man/man7/ipfixcol2-json-kafka-output.7.gz
+share/man/man7/ipfixcol2-json-output.7.gz
+share/man/man7/ipfixcol2-tcp-input.7.gz
+share/man/man7/ipfixcol2-timecheck-output.7.gz
+share/man/man7/ipfixcol2-udp-input.7.gz
+share/man/man7/ipfixcol2-viewer-output.7.gz
+@sample etc/ipfixcol2/startup.xml.sample
+@dir(ipfixcol2,ipfixcol2) /var/run/ipfixcol2