Skip to content

Commit

Permalink
webos-backports-4.2: ulogd2: backport 2.0.8 from meta-networking
Browse files Browse the repository at this point in the history
: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: e00d7fe
Cherry-picked-from-branch:
  • Loading branch information
shr-project authored and ywbyun0815 committed Jun 5, 2024
1 parent 9fd6ce8 commit c4303b4
Show file tree
Hide file tree
Showing 3 changed files with 271 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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

Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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"

0 comments on commit c4303b4

Please sign in to comment.