From c4303b4aad807c3e17f543b9fc8d4a8377be8100 Mon Sep 17 00:00:00 2001 From: Martin Jansa Date: Wed, 5 Jun 2024 18:43:58 +0900 Subject: [PATCH] webos-backports-4.2: ulogd2: backport 2.0.8 from meta-networking :Release Notes: ulogd2-2.0.7 was added to meta-networking in langdale with: https://git.openembedded.org/meta-openembedded/commit/?id=80a5a789fb66fb6345ff35901e369b0b711b1d68 upgraded to 2.0.8 in mickledore with: https://git.openembedded.org/meta-openembedded/commit/?id=ca25528ad3d30c0209cf692dd4755d731f7c624d :Detailed Notes: :Testing Performed: Local Build & Test : OK :QA Notes: N/A :Issues Addressed: [WRQ-17663] CCC: webos-backports-4.2: ulogd2 [WRQ-17395] ulogd 2.0.8 upgrade Cherry-picked-from-commit: e00d7fee4b125bac07043352f17e0b1c11a3a46d Cherry-picked-from-branch: --- .../recipes-filter/ulogd2/ulogd2/ulogd.init | 180 ++++++++++++++++++ .../ulogd2/ulogd2/ulogd.service | 11 ++ .../recipes-filter/ulogd2/ulogd2_2.0.8.bb | 80 ++++++++ 3 files changed, 271 insertions(+) create mode 100644 meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2/ulogd.init create mode 100644 meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2/ulogd.service create mode 100644 meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2_2.0.8.bb diff --git a/meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2/ulogd.init b/meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2/ulogd.init new file mode 100644 index 000000000..05d284e72 --- /dev/null +++ b/meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2/ulogd.init @@ -0,0 +1,180 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: ulogd2 ulogd +# Required-Start: $local_fs +# Should-Start: +# Required-Stop: $local_fs +# Should-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Userspace logging daemon for netfilter/iptables +### END INIT INFO + +# The definition of actions: (From LSB 3.1.0) +# start start the service +# stop stop the service +# restart stop and restart the service if the service is already running, +# otherwise start the service +# try-restart restart the service if the service is already running +# reload cause the configuration of the service to be reloaded without +# actually stopping and restarting the service +# force-reload cause the configuration to be reloaded if the service supports +# this, otherwise restart the service if it is running +# status print the current status of the service + +# The start, stop, restart, force-reload, and status actions shall be supported +# by all init scripts; the reload and the try-restart actions are optional + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin + +DESC="Userspace logging daemon for netfilter/iptables" +NAME="ulogd" +DAEMON=/usr/sbin/$NAME +DAEMON_ARGS="-d" +PIDFILE=/var/run/$NAME.pid + +. /etc/init.d/functions || exit 1 + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# +# Function that starts the daemon/service +# +do_start() { + local status pid + + status=0 + pid=`pidofproc $NAME` || status=$? + case $status in + 0) + echo "$DESC already running ($pid)." + exit 1 + ;; + *) + echo "Starting $DESC ..." + exec $DAEMON $DAEMON_ARGS >/dev/null 2>&1 || status=$? + echo "ERROR: Failed to start $DESC." + exit $status + ;; + esac + + # Add code here, if necessary, that waits for the process to be ready + # to handle requests from services started subsequently which depend + # on this one. As a last resort, sleep for some time. +} + +# +# Function that stops the daemon/service +# +do_stop() { + local pid status + + status=0 + pid=`pidofproc $NAME` || status=$? + case $status in + 0) + # Exit when fail to stop, the kill would complain when fail + kill -s 15 $pid >/dev/null && rm -f $PIDFILE && \ + echo "Stopped $DESC ($pid)." || exit $? + ;; + *) + echo "$DESC is not running; none killed." >&2 + ;; + esac + + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + # If the above conditions are not satisfied then add some other code + # that waits for the process to drop all resources that could be + # needed by services started subsequently. A last resort is to + # sleep for some time. + return $status +} + +# +# Function that sends a SIGHUP to the daemon/service +# +do_reload() { + local pid status + + status=0 + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + pid=`pidofproc $NAME` || status=$? + case $status in + 0) + echo "Reloading $DESC ..." + kill -s 1 $pid || exit $? + ;; + *) + echo "$DESC is not running; none reloaded." >&2 + ;; + esac + exit $status +} + + +# +# Function that shows the daemon/service status +# +status_of_proc () { + local pid status + + status=0 + # pidof output null when no program is running, so no "2>/dev/null". + pid=`pidofproc $NAME` || status=$? + case $status in + 0) + echo "$DESC is running ($pid)." + exit 0 + ;; + *) + echo "$DESC is not running." >&2 + exit $status + ;; + esac +} + +case "$1" in +start) + do_start + ;; +stop) + do_stop || exit $? + ;; +status) + status_of_proc + ;; +restart) + # Always start the service regardless the status of do_stop + do_stop + do_start + ;; +try-restart|force-reload) + # force-reload is the same as reload or try-restart according + # to its definition, the reload is not implemented here, so + # force-reload is the alias of try-restart here, but it should + # be the alias of reload if reload is implemented. + # + # Only start the service when do_stop succeeds + do_stop && do_start + ;; +reload) + # If the "reload" action is implemented properly, then let the + # force-reload be the alias of reload, and remove it from + # try-restart|force-reload) + # + do_reload + ;; +*) + echo "Usage: $0 {start|stop|status|restart|try-restart|force-reload}" >&2 + exit 3 + ;; +esac + diff --git a/meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2/ulogd.service b/meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2/ulogd.service new file mode 100644 index 000000000..cf62962a9 --- /dev/null +++ b/meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2/ulogd.service @@ -0,0 +1,11 @@ +[Unit] +Description=Netfilter Ulogd daemon +Before=network-pre.target +Wants=network-pre.target + +[Service] +ExecStart=@SBINDIR@/ulogd +ExecReload=kill -HUP ${MAINPID} + +[Install] +WantedBy=multi-user.target diff --git a/meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2_2.0.8.bb b/meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2_2.0.8.bb new file mode 100644 index 000000000..d075ec478 --- /dev/null +++ b/meta-webos-backports/meta-webos-backports-4.2/recipes-filter/ulogd2/ulogd2_2.0.8.bb @@ -0,0 +1,80 @@ +SUMMARY = "Userspace logging daemon for netfilter/iptables" +DESCRIPTION = "ulogd-2.x provides a flexible, almost universal logging daemon for \ +netfilter logging. This encompasses both packet-based logging (logging of \ +policy violations) and flow-based logging, e.g. for accounting purpose." +HOMEPAGE = "https://www.netfilter.org/projects/ulogd/index.html" +LICENSE = "GPL-2.0-only" +LIC_FILES_CHKSUM = "file://COPYING;md5=c93c0550bd3173f4504b2cbd8991e50b" + +DEPENDS = "libnfnetlink" +PROVIDES = "ulogd" + +PV .= "+git" + +SRC_URI = "git://git.netfilter.org/ulogd2;branch=master \ + file://ulogd.init \ + file://ulogd.service \ +" +SRCREV = "79aa980f2df9dda0c097e8f883a62f414b9e5138" + +S = "${WORKDIR}/git" + +inherit autotools manpages pkgconfig systemd update-rc.d + +PACKAGECONFIG ?= "dbi json nfacct nfct nflog pcap sqlite3 ulog" +PACKAGECONFIG[dbi] = "--enable-dbi,--disable-dbi,libdbi" +PACKAGECONFIG[json] = "--enable-json,--disable-json,jansson" +PACKAGECONFIG[manpages] = "" +PACKAGECONFIG[mysql] = "--enable-mysql,--disable-mysql,mysql5" +PACKAGECONFIG[nfacct] = "--enable-nfacct,--disable-nfacct,libnetfilter-acct" +PACKAGECONFIG[nfct] = "--enable-nfct,--disable-nfct,libnetfilter-conntrack" +PACKAGECONFIG[nflog] = "--enable-nflog,--disable-nflog,libnetfilter-log" +PACKAGECONFIG[pcap] = "--enable-pcap,--disable-pcap,libpcap" +PACKAGECONFIG[pgsql] = "--enable-pgsql,--disable-pgsql,postgresql" +PACKAGECONFIG[sqlite3] = "--enable-sqlite3,--disable-sqlite3,sqlite3" +PACKAGECONFIG[ulog] = "--enable-ulog,--disable-ulog" + +do_install:append () { + install -d ${D}${sysconfdir} + install -m 0644 ${B}/ulogd.conf ${D}${sysconfdir}/ulogd.conf + + install -d ${D}${mandir}/man8 + install -m 0644 ${S}/ulogd.8 ${D}${mandir}/man8/ulogd.8 + + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/ulogd.service ${D}${systemd_system_unitdir} + sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_system_unitdir}/ulogd.service + + install -d ${D}${sysconfdir}/init.d + install -m 755 ${WORKDIR}/ulogd.init ${D}${sysconfdir}/init.d/ulogd +} + +PACKAGES += "${PN}-plugins" +ALLOW_EMPTY:${PN}-plugins = "1" + +PACKAGES_DYNAMIC += "^${PN}-plugin-.*$" +NOAUTOPACKAGEDEBUG = "1" + +CONFFILES:${PN} = "${sysconfdir}/ulogd.conf" +RRECOMMENDS:${PN} += "${PN}-plugins" + +FILES:${PN}-dbg += "${sbindir}/.debug" + +python split_ulogd_libs () { + libdir = d.expand('${libdir}/ulogd') + dbglibdir = os.path.join(libdir, '.debug') + + split_packages = do_split_packages(d, libdir, r'^ulogd_.*\_([A-Z0-9]*).so', '${PN}-plugin-%s', 'ulogd2 %s plugin', prepend=True) + split_dbg_packages = do_split_packages(d, dbglibdir, r'^ulogd_.*\_([A-Z0-9]*).so', '${PN}-plugin-%s-dbg', 'ulogd2 %s plugin - Debugging files', prepend=True, extra_depends='${PN}-dbg') + + if split_packages: + pn = d.getVar('PN') + d.setVar('RRECOMMENDS:' + pn + '-plugins', ' '.join(split_packages)) + d.appendVar('RRECOMMENDS:' + pn + '-dbg', ' ' + ' '.join(split_dbg_packages)) +} +PACKAGESPLITFUNCS:prepend = "split_ulogd_libs " + +SYSTEMD_SERVICE:${PN} = "ulogd.service" + +INITSCRIPT_NAME = "ulogd" +INITSCRIPT_PARAMS = "defaults"