.gear/rules | 3 + .../tags/49a9a197b5d129e0570321c75a9b3ddf579d5a1d | 23 +++ .gear/tags/list | 2 + .gear/upstream/remotes | 3 + cgred.service | 11 ++ dist/cgconfig.service | 5 +- libcgroup.spec | 195 +++++++++++++++++++++ samples/cgconfig.conf | 46 ++--- samples/cgconfig.sysconfig | 8 +- scripts/init.d/cgconfig.in | 183 +++++++++---------- scripts/init.d/cgred.in | 153 +++++++--------- src/Makefile.am | 1 + src/tools/Makefile.am | 2 +- 13 files changed, 405 insertions(+), 230 deletions(-) diff --git a/.gear/rules b/.gear/rules new file mode 100644 index 0000000..7cfbf87 --- /dev/null +++ b/.gear/rules @@ -0,0 +1,3 @@ +tar: v@version@:. +diff: v@version@:. . +tar: upstream-tests:. name=tests base= \ No newline at end of file diff --git a/.gear/tags/49a9a197b5d129e0570321c75a9b3ddf579d5a1d b/.gear/tags/49a9a197b5d129e0570321c75a9b3ddf579d5a1d new file mode 100644 index 0000000..224a03d --- /dev/null +++ b/.gear/tags/49a9a197b5d129e0570321c75a9b3ddf579d5a1d @@ -0,0 +1,23 @@ +object 0f1c55b5f2fc8a914ebb044f528f61847226159c +type commit +tag v2.0.3 +tagger Tom Hromatka 1674238400 -0700 + +version 2.0.3 +-----BEGIN PGP SIGNATURE----- + +iQJMBAABCAA2FiEER6aPzjfH1wJP1l4RNWzmLCtSQJkFAmPK2cAYHHRvbS5ocm9t +YXRrYUBvcmFjbGUuY29tAAoJEDVs5iwrUkCZF44P/jd1PURa9P6JwBEdYy2DdZ0U +h4BO+Xr3T8SRZ2NC3byUsxvKYJM+nBNj6ac/CL4MFw2ZUtYKZpyR2wgGBZIYe6iZ +rFCIfLlZ/n0ErAS/QpNXpZu8opHiefbeE8qe35xhemABdHwJGYr+X8kt0dHKov7X +jj/0Z78CM+iBcx+rMyczmsRX1mqGsSbZ+vpxbizmg8pDHZSf7JVt46LhXb1Siktl +eMhUPYbmZVn3Oso67TjH+BoqDTMqP6NeZ36crsYNiSDoR3AhrN3pUCiKvVFYwQBD +ej5dRFCOWBpv/YIXGjHWjajBSZrx7ls0/PZHELVpYzuDYjIM6EVFeNZrmXh0rhB+ +0HDqG+gDVbuEnSxsgWEHTZf0A/9RIReXrlRk4tIzdEHNtou37pTaT+x8xayR/7f/ +RGhu7rPxGShujXmaADAQuMPLOq3OJ6a+r1Y79Fl+k86lEVHODrsVYRr8R4pVVuMN +D1tL5qFukT/1SV4CEaoypgmWo42S6XXtHb4K9t34/XMPatp7iGH9cVAZ9CEN7Q3e +i23+b4ucV2BE6CVXZGeAShQgYtIt75R9lRvqp958SqDIWx3ySyefujAQaTdgYDdD +0P5AfUAzQN1+XXIC0Td9ldXwDkbjFDL7UyZt05x7+EbB7J59tdZrxywxFfih7nKx +byD9XJKE2p9uoZGQlYcx +=mlji +-----END PGP SIGNATURE----- diff --git a/.gear/tags/list b/.gear/tags/list new file mode 100644 index 0000000..cd53969 --- /dev/null +++ b/.gear/tags/list @@ -0,0 +1,2 @@ +127bc7ea59fd9f7d11dc9058d5ec6a4b8011927c upstream-tests +49a9a197b5d129e0570321c75a9b3ddf579d5a1d v2.0.3 diff --git a/.gear/upstream/remotes b/.gear/upstream/remotes new file mode 100644 index 0000000..802dcf7 --- /dev/null +++ b/.gear/upstream/remotes @@ -0,0 +1,3 @@ +[remote "upstream"] + url = https://github.com/libcgroup/libcgroup.git + fetch = +refs/heads/*:refs/remotes/upstream/* diff --git a/cgred.service b/cgred.service new file mode 100644 index 0000000..c1ecb51 --- /dev/null +++ b/cgred.service @@ -0,0 +1,11 @@ +[Unit] +Description=CGroups Rules Engine Daemon +After=syslog.target + +[Service] +Type=forking +EnvironmentFile=-/etc/sysconfig/cgred +ExecStart=/usr/sbin/cgrulesengd -s -g $SOCKET_GROUP + +[Install] +WantedBy=multi-user.target diff --git a/dist/cgconfig.service b/dist/cgconfig.service index e63f26d..cc6a19f 100644 --- a/dist/cgconfig.service +++ b/dist/cgconfig.service @@ -10,8 +10,9 @@ Before=basic.target shutdown.target [Service] Type=oneshot RemainAfterExit=yes -ExecStart=/sbin/cgconfigparser -l /etc/cgconfig.conf -s 1664 -ExecStop=/sbin/cgclear -l /etc/cgconfig.conf -e +Delegate=yes +ExecStart=/usr/sbin/cgconfigparser -l /etc/cgconfig.conf -L /etc/cgconfig.d -s 1664 +ExecStop=/usr/sbin/cgclear -l /etc/cgconfig.conf -L /etc/cgconfig.d -e [Install] WantedBy=sysinit.target diff --git a/libcgroup.spec b/libcgroup.spec new file mode 100644 index 0000000..3c6cdf4 --- /dev/null +++ b/libcgroup.spec @@ -0,0 +1,195 @@ + +Name: libcgroup +Summary: Libraries for allow to control and monitor control groups +Group: System/Libraries +Version: 2.0.3 +Release: alt1 +License: LGPLv2+ +Url: http://libcg.sourceforge.net/ +# VCS: https://github.com/libcgroup/libcgroup.git +Source: %name-%version.tar +Source2: tests.tar +Patch: %name-%version-%release.patch + +BuildRequires: flex gcc-c++ libpam-devel + +%description +Control groups infrastructure. + +This library allows applications to manipulate, control, administrate and +monitor control groups and the associated controllers. + +%package -n pam_cgroup +Summary: A Pluggable Authentication Module for libcgroup +Group: System/Base +Requires: libcgroup = %version-%release + +%description -n pam_cgroup +Linux-PAM module, which allows administrators to classify the user's login +processes to pre-configured control group. + +%package -n cgroup +Summary: Tools to control and monitor control groups +Group: System/Configuration/Other +Requires: libcgroup = %version-%release + +%description -n cgroup +Control groups infrastructure. + +These tools help manipulate, control, administrate and monitor control groups +and the associated controllers. + +%package devel +Summary: Development libraries to develop applications that utilize control groups +Group: Development/C +Requires: libcgroup = %version-%release + +%description devel +It provides API to create/delete and modify cgroup nodes. It will also in the +future allow creation of persistent configuration for control groups and +provide scripts to manage that configuration. + +%prep +%setup +%patch -p1 +tar -xf %SOURCE2 -C tests + +%build +%autoreconf +%configure \ + --disable-static \ + --enable-initscript-install \ + --enable-pam-module-dir=/%_lib/security \ + --enable-opaque-hierarchy=name=systemd + +%make_build + +%install +%make DESTDIR=%buildroot install + +# install config files +mkdir -p %buildroot%_sysconfdir/sysconfig +cp samples/cgred.conf %buildroot%_sysconfdir/sysconfig/cgred +cp samples/cgconfig.sysconfig %buildroot%_sysconfdir/sysconfig/cgconfig +cp samples/cgconfig.conf %buildroot%_sysconfdir/cgconfig.conf +cp samples/cgrules.conf %buildroot%_sysconfdir/cgrules.conf +cp samples/cgsnapshot_blacklist.conf %buildroot%_sysconfdir/cgsnapshot_blacklist.conf + +rm -f %buildroot/%_lib/security/pam_cgroup.la +rm -f %buildroot%_libdir/*.la +rm -f %buildroot%_libdir/libcgroupfortesting.* + +mkdir -p %buildroot%_sysconfdir/cgconfig.d +# install unit and sysconfig files +install -d %buildroot%_unitdir +install -m 644 dist/cgconfig.service %buildroot%_unitdir/ +install -m 644 cgred.service %buildroot%_unitdir/ + +%pre -n cgroup +%_sbindir/groupadd -r -f cgred 2> /dev/null ||: + +%post -n cgroup +%post_service cgred +%post_service cgconfig + +%preun -n cgroup +%preun_service cgred +%preun_service cgconfig + +%files +%_libdir/*.so.* + +%files -n cgroup +%doc COPYING INSTALL README README_daemon README_systemd +%config(noreplace) %_sysconfdir/sysconfig/cgred +%config(noreplace) %_sysconfdir/sysconfig/cgconfig +%config(noreplace) %_sysconfdir/cgconfig.conf +%config(noreplace) %_sysconfdir/cgrules.conf +%config(noreplace) %_sysconfdir/cgsnapshot_blacklist.conf +%dir %_sysconfdir/cgconfig.d +%attr(2711, root, cgred) %_bindir/cgexec +%attr(2711, root, cgred) %_bindir/cgclassify +%_bindir/* +%_sbindir/* +%_man1dir/* +%_man5dir/* +%_man8dir/* +%config %_initdir/cgconfig +%config %_initdir/cgred +%_unitdir/cgconfig.service +%_unitdir/cgred.service + +%files -n pam_cgroup +%_pam_modules_dir/pam_cgroup.so + +%files devel +%doc COPYING INSTALL +%_includedir/libcgroup.h +%_includedir/libcgroup +%_libdir/*.so +%_pkgconfigdir/libcgroup.pc + +%changelog +* Sun Jan 22 2023 Alexey Shabalin 2.0.3-alt1 +- 2.0.3 +- Add cgconfig.d support to systemd unit (ALT #44890) + +* Fri Jun 03 2022 Alexey Shabalin 2.0.2-alt1 +- new version 2.0.2 + +* Sat May 29 2021 Alexey Shabalin 2.0-alt1 +- new version 2.0 + +* Tue Feb 25 2020 Alexey Shabalin 0.42.2-alt2 +- fixed start service (package %%_sysconfdir/cgconfig.d dir) + +* Thu Feb 20 2020 Alexey Shabalin 0.42.2-alt1 +- 0.42.2 + +* Wed Aug 28 2019 Alexey Shabalin 0.41-alt3 +- backport several upstream fixes (Fixes: CVE-2018-14348) +- set Delegate property for cgconfig service to make sure complete + cgroup hierarchy is always created by systemd + +* Sat Feb 10 2018 Mikhail Efremov 0.41-alt2 +- Fix parallel build. + +* Fri Mar 21 2014 Alexey Shabalin 0.41-alt1 +- 0.41 + +* Mon Mar 12 2012 Alexey Shabalin 0.38.0-alt1 +- 0.38 release + +* Mon Mar 12 2012 Alexey Shabalin 0.38.0-alt0.rc1 +- 0.38.rc1 +- add systemd unit files + +* Thu Aug 18 2011 Alexey Shabalin 0.37.1-alt3.7f564 +- upstream git snapshot 7f5641d9b2e8d073466f0511a17e669438dbaea7 + +* Thu May 19 2011 Alexey Shabalin 0.37.1-alt2 +- fix pid file of cgred service +- ignore systemd hierarchy +- use -avoid-version instead of messing with pam module renaming +- backported from upstream snapshot: + + Fixed parsing of mount options + + Fix cgclear to continue unmounting on error + +* Thu Mar 03 2011 Alexey Shabalin 0.37.1-alt1 +- 0.37.1 +- Fix buffer overflow when processing list of controllers from command line (CVE-2011-1006) + +* Thu Dec 16 2010 Alexey Shabalin 0.37-alt1 +- 0.37 +- defined startup_failure in cgconfig init script (ALT #24596) + +* Sun Sep 19 2010 Alexey Shabalin 0.36.2-alt3.git20100906 +- git snapshot af53a11e8e5f27593f31a34739756d41a08b5416 +- fix init scripts +- mount tmpfs to /sys/fs/cgroup from init cgconfig (/sys/fs/cgroup exist in kernel 2.6.35-un-def-alt4.2) + +* Thu Aug 26 2010 Alexey Shabalin 0.36.2-alt2 +- change default mount point from /var/run/cgroup/system to /sys/fs/cgroup/system + +* Wed Jul 07 2010 Alexey Shabalin 0.36.2-alt1 +- initial build for ALTLinux diff --git a/samples/cgconfig.conf b/samples/cgconfig.conf index de77e4b..b7fdd75 100644 --- a/samples/cgconfig.conf +++ b/samples/cgconfig.conf @@ -10,39 +10,19 @@ # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # -#group daemons/www { -# perm { -# task { -# uid = root; -# gid = webmaster; -# } -# admin { -# uid = root; -# gid = root; -# } -# } -# cpu { -# cpu.shares = 1000; -# } -#} -# -#group daemons/ftp { -# perm { -# task { -# uid = root; -# gid = ftpmaster; -# } -# admin { -# uid = root; -# gid = root; -# } -# } -# cpu { -# cpu.shares = 500; -# } -#} # +# By default, mount all controllers to /sys/fs/cgroup/ #mount { -# cpu = /mnt/cgroups/cpu; -# cpuacct = /mnt/cgroups/cpuacct; +# cpuset = /sys/fs/cgroup/cpuset; +# cpu = /sys/fs/cgroup/cpu; +# cpuacct = /sys/fs/cgroup/cpuacct; +# memory = /sys/fs/cgroup/memory; +# devices = /sys/fs/cgroup/devices; +# freezer = /sys/fs/cgroup/freezer; +# net_cls = /sys/fs/cgroup/net_cls; #} + +# By default, we expect systemd mounts everything on boot, +# so there is not much to do. +# See man cgconfig.conf for further details, how to create groups +# on system boot using this file. diff --git a/samples/cgconfig.sysconfig b/samples/cgconfig.sysconfig index 5a61bf6..0f4f6d1 100644 --- a/samples/cgconfig.sysconfig +++ b/samples/cgconfig.sysconfig @@ -5,8 +5,6 @@ # controller to limit cpu.shares of this default group and allowing some more # important group take most of the CPU. # -# By default, create these groups: -CREATE_DEFAULT=yes - -# Uncomment following line to disable creation of the default group on startup: -# CREATE_DEFAULT=no +# By default, do not create these groups: +# CREATE_DEFAULT=yes +CREATE_DEFAULT=no diff --git a/scripts/init.d/cgconfig.in b/scripts/init.d/cgconfig.in index f299d0f..ed56b22 100644 --- a/scripts/init.d/cgconfig.in +++ b/scripts/init.d/cgconfig.in @@ -18,6 +18,8 @@ # description: This script runs the cgconfigparser utility to parse and setup # the control group filesystem. It uses /etc/cgconfig.conf # and parses the configuration specified in there. +# config: /etc/cgconfig.conf +# ### BEGIN INIT INFO # Provides: cgconfig @@ -29,23 +31,22 @@ # Description: Create and setup control group filesystem(s) ### END INIT INFO -# get correct location of binaries from configure -prefix=@prefix@;exec_prefix=@exec_prefix@;sbindir=@sbindir@ -CGCONFIGPARSER_BIN=$sbindir/cgconfigparser +WITHOUT_RC_COMPAT=1 + +# Source function library. +. /etc/init.d/functions + + +CGCONFIGPARSER_BIN=cgconfigparser +SERVICENAME=cgconfig CONFIG_FILE=/etc/cgconfig.conf -servicename=cgconfig -lockfile=/var/lock/subsys/$servicename -# -# Source LSB routines -# -. /lib/lsb/init-functions +LOCKFILE=/var/lock/subsys/$SERVICENAME +RETVAL=0 # read the config CREATE_DEFAULT=yes -if [ -e /etc/sysconfig/cgconfig ]; then - . /etc/sysconfig/cgconfig -fi +SourceIfNotEmpty /etc/sysconfig/$SERVICENAME create_default_groups() { defaultcgroup= @@ -54,8 +55,8 @@ create_default_groups() { read user ctrl defaultcgroup <<< \ $(grep -m1 '^\*[[:space:]]\+' /etc/cgrules.conf) if [ -n "$defaultcgroup" -a "$defaultcgroup" = "*" ]; then - log_warning_msg "/etc/cgrules.conf incorrect" - log_warning_msg "Overriding it" + passed "/etc/cgrules.conf incorrect" + passed "Overriding it" defaultcgroup= fi fi @@ -95,112 +96,100 @@ create_default_groups() { 2>/dev/null || : } -start() { - echo -n "Starting cgconfig service: " - if [ -f "$lockfile" ]; then - log_warning_msg "lock file already exists" - return 0 - fi - - if [ $? -eq 0 ]; then - if [ ! -s $CONFIG_FILE ]; then - log_failure_msg $CONFIG_FILE "is not configured" - return 6 - fi - - $CGCONFIGPARSER_BIN -l $CONFIG_FILE - retval=$? - if [ $retval -ne 0 ]; then - log_failure_msg "Failed to parse " $CONFIG_FILE - return 1 - fi - fi - - if [ $CREATE_DEFAULT = "yes" ]; then - create_default_groups - fi - - touch "$lockfile" - retval=$? - if [ $retval -ne 0 ]; then - log_failure_msg "Failed to touch $lockfile" - return 1 - fi - log_success_msg - return 0 +startup_failure() +{ + msg_starting "cgconfig" + printf "%s" "$1" + failure "cgconfig startup" + echo } -stop() { - echo -n "Stopping cgconfig service: " - cgclear - rm -f "$lockfile" - log_success_msg - return 0 +check() +{ + # Check system before trying to start + [ -d /sys/fs/cgroup ] || { + startup_failure "kernel too old - no /sys/fs/cgroup" + return 1 + } + # Prepare tmpfs for /sys/fs/cgroup + if ! grep -q "[[:space:]]/sys/fs/cgroup[[:space:]]" /proc/mounts; then + mount -t tmpfs -o noexec,nodev,nosuid tmpfs /sys/fs/cgroup + fi + echo -n "Checking cgconfig configuration: " + if "$CGCONFIGPARSER_BIN" -l "$CONFIG_FILE"; then + success "cgconfig check" + RETVAL=0 + else + failure "cgconfig check" + RETVAL=1 + fi + echo + return $RETVAL } -trapped() { - # - # Do nothing - # - true -} - -usage() { - echo "$0 " - exit 2 +start() { + check || return + is_yes "$CREATE_DEFAULT" && create_default_groups + touch "$LOCKFILE" + return $RETVAL } -common() { - # - # main script work done here - # - trap "trapped ABRT" ABRT - trap "trapped QUIT" QUIT - trap "trapped TERM" TERM - trap "trapped INT" INT +stop() { + action "Stopping cgconfig service: " cgclear + RETVAL=$? + [ $RETVAL -eq 0 ] && rm -f "$LOCKFILE" + return $RETVAL } -restart() { - common +restart() +{ stop start } -RETVAL=0 -case $1 in - 'stop') - common - stop - RETVAL=$? +case "$1" in + stop) + stop; + ;; + start) + start; ;; - 'start') - common - start - RETVAL=$? + restart) + restart ;; - 'restart'|'reload') - restart - RETVAL=$? + reload) + restart + ;; + condstop) + if [ -e "$LOCKFILE" ]; then + stop + fi ;; - 'condrestart') - if [ -f "$lockfile" ]; then - restart - RETVAL=$? + condreload) + if [ -e "$LOCKFILE" ]; then + restart fi ;; - 'status') - if [ -f "$lockfile" ]; then + condrestart) + if [ -e "$LOCKFILE" ]; then + restart + fi + ;; + status) + if [ -f "$LOCKFILE" ]; then echo "Running" - exit 0 else echo "Stopped" - exit 3 fi - ;; - *) - usage ;; + check) + check + ;; + *) + msg_usage "${0##*/} {start|stop|restart|reload|status|condrestart|check}" + RETVAL=1 + ;; esac exit $RETVAL diff --git a/scripts/init.d/cgred.in b/scripts/init.d/cgred.in index 247ec61..6572473 100644 --- a/scripts/init.d/cgred.in +++ b/scripts/init.d/cgred.in @@ -22,139 +22,108 @@ # pidfile: /var/run/cgred.pid # ### BEGIN INIT INFO -# Provides: cgrulesengd -# Required-Start: $local_fs $syslog $cgconfig +# Provides: cgred +# Required-Start: $local_fs $syslog cgconfig # Required-Stop: $local_fs $syslog -# Should-Start: -# Should-Stop: +# Should-Start: 2 3 4 5 +# Should-Stop: 0 1 6 # Short-Description: start and stop the cgroups rules engine daemon # Description: CGroup Rules Engine is a tool for automatically using \ # cgroups to classify processes ### END INIT INFO -prefix=@prefix@;exec_prefix=@exec_prefix@;sbindir=@sbindir@ -CGRED_BIN=$sbindir/cgrulesengd -CGRED_CONF=/etc/cgrules.conf +WITHOUT_RC_COMPAT=1 -# Sanity checks -[ -x $CGRED_BIN ] || exit 1 +# Source function library. +. /etc/init.d/functions -# Source function library & LSB routines -. /etc/rc.d/init.d/functions -. /lib/lsb/init-functions +# For convenience +PROCESSNAME=cgrulesengd +SERVICENAME=cgred +PIDFILE=/var/run/cgred.pid +LOCKFILE=/var/lock/subsys/$SERVICENAME +RETVAL=0 + +SourceIfNotEmpty /etc/sysconfig/$SERVICENAME -# Read in configuration options. -if [ -f "/etc/sysconfig/cgred.conf" ] ; then - . /etc/sysconfig/cgred.conf - OPTIONS="$NODAEMON $LOG" - if [ -n "$LOG_FILE" ]; then - OPTIONS="$OPTIONS --logfile=$LOG_FILE" - fi - if [ -n "$SOCKET_USER" ]; then +OPTIONS="$NODAEMON $LOG" +if [ -n "$LOG_FILE" ]; then + OPTIONS="$OPTIONS --logfile=$LOG_FILE" +fi +if [ -n "$SOCKET_USER" ]; then OPTIONS="$OPTIONS -u $SOCKET_USER" - fi - if [ -n "$SOCKET_GROUP" ]; then +fi +if [ -n "$SOCKET_GROUP" ]; then OPTIONS="$OPTIONS -g $SOCKET_GROUP" - fi -else - OPTIONS="" fi -# For convenience -processname=cgrulesengd -servicename=cgred -lockfile="/var/lock/subsys/$servicename" -pidfile=/var/run/cgred.pid - start() { - echo -n $"Starting CGroup Rules Engine Daemon: " - if [ -f "$lockfile" ]; then - log_failure_msg "$servicename is already running with PID `cat ${pidfile}`" - return 0 - fi - num=`grep "cgroup" /proc/mounts | awk '$3=="cgroup"' | wc -l` - if [ $num -eq 0 ]; then - echo - log_failure_msg $"Cannot find cgroups, is cgconfig service running?" - return 1 - fi - daemon --check $servicename --pidfile $pidfile $CGRED_BIN $OPTIONS - retval=$? - echo - if [ $retval -ne 0 ]; then - return 7 - fi - touch "$lockfile" - if [ $? -ne 0 ]; then - return 1 - fi - echo "`pidof $processname`" > $pidfile - return 0 + start_daemon --make-pidfile --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --displayname "$SERVICENAME" --name "$SERVICENAME" --expect-user root -- $PROCESSNAME $OPTIONS + RETVAL=$? + # fix pid + pidof cgrulesengd > "$PIDFILE" + return $RETVAL } stop() { - echo -n $"Stopping CGroup Rules Engine Daemon..." - if [ ! -f $pidfile ]; then - log_success_msg - return 0 - fi - killproc -p $pidfile -TERM "$processname" - retval=$? - echo - if [ $retval -ne 0 ]; then - return 1 - fi - rm -f "$lockfile" "$pidfile" - return 0 + stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --displayname "$SERVICENAME" --expect-user root -- $PROCESSNAME + RETVAL=$? + return $RETVAL +} + +reload() +{ + msg_reloading $SERVICENAME + stop_daemon --pidfile "$PIDFILE" --displayname "$SERVICENAME" --expect-user root -HUP -- $PROCESSNAME + RETVAL=$? + return $RETVAL +} + +restart() +{ + stop + start } -RETVAL=0 # See how we are called case "$1" in start) start - RETVAL=$? ;; stop) stop - RETVAL=$? ;; status) - status -p $pidfile $servicename + status --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --displayname "$SERVICENAME" --expect-user root -- $PROCESSNAME RETVAL=$? ;; restart) - stop - start - RETVAL=$? + restart ;; - condrestart) - if [ -f "$lockfile" ]; then + reload) + reload + ;; + condstop) + if [ -e "$LOCKFILE" ]; then stop - start - RETVAL=$? fi ;; - reload|flash) - if [ -f "$lockfile" ]; then - echo $"Reloading rules configuration..." - kill -s 12 `cat ${pidfile}` - RETVAL=$? - if [ $RETVAL -eq 0 ] ; then - log_success_msg - else - log_failure_msg - fi - else - log_failure_msg "$servicename is not running." + condreload) + if [ -e "$LOCKFILE" ]; then + reload + fi + ;; + condrestart) + if [ -e "$LOCKFILE" ]; then + restart fi ;; *) - echo $"Usage: $0 {start|stop|status|restart|condrestart|reload}" - RETVAL=2 + msg_usage "${0##*/} {start|stop|restart|reload|status|condrestart}" + RETVAL=1 ;; esac diff --git a/src/Makefile.am b/src/Makefile.am index 26e3223..f35c9a3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -16,6 +16,7 @@ CLEANFILES = lex.c parse.c parse.h AM_CPPFLAGS = -I$(top_srcdir)/include lib_LTLIBRARIES = libcgroup.la +lex.c: parse.h libcgroup_la_SOURCES = parse.h parse.y lex.l api.c config.c libcgroup-internal.h libcgroup.map wrapper.c log.c libcgroup_la_LIBADD = -lpthread $(CODE_COVERAGE_LIBS) libcgroup_la_CFLAGS = $(CODE_COVERAGE_CFLAGS) -DSTATIC=static diff --git a/src/tools/Makefile.am b/src/tools/Makefile.am index 4060887..23cac99 100644 --- a/src/tools/Makefile.am +++ b/src/tools/Makefile.am @@ -1,7 +1,7 @@ @CODE_COVERAGE_RULES@ AM_CPPFLAGS = -I$(top_srcdir)/src -I$(top_srcdir)/include -LDADD = $(top_builddir)/src/libcgroup.la -lpthread +LIBS = $(top_builddir)/src/libcgroup.la -lpthread if WITH_TOOLS