Hello community,

here is the log from the commit of package corosync for openSUSE:Factory 
checked in at 2017-08-24 18:26:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/corosync (Old)
 and      /work/SRC/openSUSE:Factory/.corosync.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "corosync"

Thu Aug 24 18:26:45 2017 rev:41 rq:517168 version:2.4.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/corosync/corosync.changes        2017-07-21 
22:35:28.366599396 +0200
+++ /work/SRC/openSUSE:Factory/.corosync.new/corosync.changes   2017-08-24 
18:26:46.306006460 +0200
@@ -1,0 +2,31 @@
+Tue Aug  8 08:17:27 UTC 2017 - [email protected]
+
+- Fix RPM groups.
+
+-------------------------------------------------------------------
+Thu Aug  3 02:50:00 UTC 2017 - [email protected]
+
+- L3: corosync: assert(sender_node != NULL) fails after tearing down a network 
interface(bsc#1032634)
+    Added: 0010-fix-ifdown-udp.patch 
+
+- Fix rpmlint warnings
+    Added: 0011-fix-tmpfiles-create.patch
+
+-------------------------------------------------------------------
+Thu Aug  3 02:49:21 UTC 2017 - [email protected]
+
+- some errors in spec file(bsc#1047862)
+   Modified:corosync.spec
+   1) as in openSUSE:factory, there are %define, but bcond_with coudld be 
toggled by osc command , change %define to %bcond_with and %bcond_without
+   2) change service_del_postun to service_del_preun, since service_del_postun 
is not a right macro
+ 
+
+-------------------------------------------------------------------
+Mon Jul 31 02:54:49 UTC 2017 - [email protected]
+
+- make corosync.spec uniform (bsc#1051385)
+Modified: corosync.spec
+    1. there are some lines are commented in corosync.spec, will define new 
macro to make these lines uncommented
+    2. in former, xmlconf, rdma and snmp were disabled, these features are 
wrongly enabled, will disable them
+
+-------------------------------------------------------------------

New:
----
  0010-fix-ifdown-udp.patch
  0011-fix-tmpfiles-create.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ corosync.spec ++++++
--- /var/tmp/diff_new_pack.zBmctc/_old  2017-08-24 18:26:47.529834038 +0200
+++ /var/tmp/diff_new_pack.zBmctc/_new  2017-08-24 18:26:47.533833475 +0200
@@ -16,22 +16,26 @@
 #
 
 
-#%global dirty dirty
-
 # Conditionals
 # Invoke "rpmbuild --without <feature>" or "rpmbuild --with <feature>"
 # to disable or enable specific features
-%define with_testagents 1
-%define with_watchdog 1
-#%define with_monitoring 0
-%define with_snmp 1
-#%define with_dbus 1
-%define with_rdma 1
-%define with_systemd 1
-%define with_xmlconf 1
-%define with_runautogen 1
-%define with_qdevices 1
-%define with_qnetd 1
+%bcond_without testagents
+%bcond_with watchdog
+%bcond_with monitoring
+%bcond_with snmp
+%bcond_with rdma
+%bcond_with dbus
+%bcond_with upstart
+%bcond_with xmlconf
+%bcond_without runautogen
+%bcond_without systemd
+%bcond_without qdevices
+%bcond_without qnetd
+
+%if !%{defined tmpfiles_create}
+%define tmpfiles_create systemd-tmpfiles --create ||:
+%endif
+
 %if 0%{?sles_version} == 12
 %ifnarch s390 s390x
 %define buildib 1
@@ -47,7 +51,6 @@
 Group:          Productivity/Clustering/HA
 Version:        2.4.2
 Release:        0
-#Release: 1%{?gitver}%{?dist}
 Url:            http://corosync.github.io/corosync/
 Source0:        %{name}-%{version}.tar.gz
 Source2:        baselibs.conf
@@ -70,6 +73,8 @@
 Patch17:        0007-Make-corosync-work-when-FIPS-mode-is-enabled.patch
 Patch18:        0008-main.c-add-option-to-set-priority.patch
 Patch19:        0009-totem-Propagate-totem-initialization-failure.patch
+Patch20:        0010-fix-ifdown-udp.patch
+Patch21:        0011-fix-tmpfiles-create.patch
 
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 # openais is indeed gone and should be uninstalled. Yes, we do not
@@ -81,7 +86,6 @@
 Requires:       libcorosync4 = %{version}-%{release}
 Requires(pre): /usr/sbin/useradd
 Requires(post): /sbin/chkconfig
-Requires(post): %insserv_prereq  %fillup_prereq
 Requires(preun): /sbin/chkconfig
 Conflicts:      openais <= 0.89, openais-devel <= 0.89
 
@@ -91,37 +95,37 @@
 BuildRequires:  libqb-devel
 BuildRequires:  mozilla-nss-devel
 BuildRequires:  zlib-devel
-%if %{with_runautogen}
+%if %{with runautogen}
 BuildRequires:  autoconf
 BuildRequires:  automake
 BuildRequires:  libtool
 %endif
-#%if %{with monitoring}
-#BuildRequires:  libstatgrab-devel
-#%endif
-%if %{with_rdma}
+%if %{with monitoring}
+BuildRequires:  libstatgrab-devel
+%endif
+%if %{with rdma}
 BuildRequires:  libibverbs-devel
 BuildRequires:  librdmacm-devel
 %endif
-%if %{with_snmp}
+%if %{with snmp}
 BuildRequires:  net-snmp-devel
 %endif
-#%if %{with dbus}
-#BuildRequires:  dbus-1-devel
-#%endif
-%if %{with_systemd}
+%if %{with dbus}
+BuildRequires:  dbus-1-devel
+%endif
+%if %{with systemd}
 BuildRequires:  pkgconfig(systemd)
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
 %endif
-%if %{with_xmlconf}
+%if %{with xmlconf}
 Requires:       libxslt
 %endif
-%if %{with_qdevices} || %{with_qnetd}
+%if %{with qdevices} || %{with qnetd}
 Requires:       mozilla-nss-tools
 %endif
-%if %{with_qnetd}
+%if %{with qnetd}
 BuildRequires:  sed
 %endif
 
@@ -148,41 +152,52 @@
 %patch17 -p1
 %patch18 -p1
 %patch19 -p1
+%patch20 -p1
+%patch21 -p1
 
 %build
-%if %{with_runautogen}
+%if %{with runautogen}
 ./autogen.sh
 %endif
 
-%if %{with_rdma}
+%if %{with rdma}
 export ibverbs_CFLAGS=-I/usr/include/infiniband \
 export ibverbs_LIBS=-libverbs \
 export rdmacm_CFLAGS=-I/usr/include/rdma \
 export rdmacm_LIBS=-lrdmacm \
 %endif
 %{configure} \
-%if %{with_testagents}
+%if %{with testagents}
        --enable-testagents \
 %endif
-%if %{with_watchdog}
+%if %{with watchdog}
        --enable-watchdog \
 %endif
-%if %{with_snmp}
+%if %{with monitoring}
+       --enable-monitoring \
+%endif
+%if %{with snmp}
        --enable-snmp \
 %endif
-%if %{with_rdma}
+%if %{with dbus}
+       --enable-dbus \
+%endif
+%if %{with rdma}
        --enable-rdma \
 %endif
-%if %{with_systemd}
+%if %{with systemd}
        --enable-systemd \
 %endif
-%if %{with_xmlconf}
+%if %{with upstart}
+       --enable-upstart \
+%endif
+%if %{with xmlconf}
        --enable-xmlconf \
 %endif
-%if %{with_qdevices}
+%if %{with qdevices}
        --enable-qdevices \
 %endif
-%if %{with_qnetd}
+%if %{with qnetd}
        --enable-qnetd \
 %endif
        --with-initddir=%{_initrddir} \
@@ -197,12 +212,15 @@
 
 make install DESTDIR=%{buildroot}
 
-#%if %{with dbus}
-#mkdir -p -m 0700 %{buildroot}/%{_sysconfdir}/dbus-1/system.d
-#install -m 644 %{_builddir}/%{name}-%{version}/conf/corosync-signals.conf 
%{buildroot}/%{_sysconfdir}/dbus-1/system.d/corosync-signals.conf
-#%endif
-%if %{with_systemd}
+%if %{with dbus}
+mkdir -p -m 0700 %{buildroot}/%{_sysconfdir}/dbus-1/system.d
+install -m 644 %{_builddir}/%{name}-%{version}/conf/corosync-signals.conf 
%{buildroot}/%{_sysconfdir}/dbus-1/system.d/corosync-signals.conf
+%endif
+%if %{with systemd}
 ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rccorosync
+ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rccorosync-qnetd
+ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rccorosync-qdevice
+ln -s /usr/sbin/service %{buildroot}%{_sbindir}/rccorosync-notifyd
 %endif
 
 ## tree fixup
@@ -211,6 +229,8 @@
 rm -f %{buildroot}%{_libdir}/*.la
 # drop docs and html docs for now
 rm -rf %{buildroot}%{_docdir}/*
+#remove init scripts for corosync, corosync-qdevice, corosync-qnetd
+rm -rf init/corosync init/corosync-qnetd init/corosync-qdevice
 mkdir -p  %{buildroot}/usr/lib/tmpfiles.d/
 mkdir -p  %{buildroot}/usr/share/doc/packages/corosync/
 mkdir -p  %{buildroot}/var/adm/fillup-templates/
@@ -219,35 +239,21 @@
 install -m 0644 conf/corosync.conf.example* 
%{buildroot}/usr/share/doc/packages/corosync/
 rm -rf %{buildroot}/etc/corosync/corosync.conf.example*
 rm -rf %{buildroot}/etc/logrotate.d/
-# /etc/sysconfig/corosync-notifyd
 mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
-install -m 644 tools/corosync-notifyd.sysconfig.example \
-   %{buildroot}/usr/lib/tmpfiles.d/corosync-notifyd
-#   %{buildroot}%{_sysconfdir}/sysconfig/corosync-notifyd
-# /etc/sysconfig/corosync
 install -m 644 init/corosync.sysconfig.example \
    %{buildroot}/var/adm/fillup-templates/sysconfig.corosync
-#   %{buildroot}%{_sysconfdir}/sysconfig/corosync
-#add init scripts for corosync, corosync-qdevice, corosync-qnetd
-install -m 755 init/corosync %{buildroot}%{_sysconfdir}/init.d/corosync
-install -m 755 init/corosync-qdevice 
%{buildroot}%{_sysconfdir}/init.d/corosync-qdevice
-install -m 755 init/corosync-qnetd 
%{buildroot}%{_sysconfdir}/init.d/corosync-qnetd
 rm -rf %{buildroot}%{localstatedir}/run/
-%if %{with_qdevices}
-# /etc/sysconfig/corosync-qdevice
+%if %{with qdevices}
 install -m 644 init/corosync-qdevice.sysconfig.example \
    %{buildroot}/var/adm/fillup-templates/sysconfig.corosync-qdevice
-#   %{buildroot}%{_sysconfdir}/sysconfig/corosync-qdevice
 install -m 770 -d %{buildroot}/run/corosync-qdevice
 %endif
 
-%if %{with_qnetd}
-# /etc/sysconfig/corosync-qnetd
+%if %{with qnetd}
 install -m 644 init/corosync-qnetd.sysconfig.example \
    %{buildroot}/var/adm/fillup-templates/sysconfig.corosync-qnetd
-#   %{buildroot}%{_sysconfdir}/sysconfig/corosync-qnetd
 install -m 770 -d %{buildroot}/run/corosync-qnetd
-%if %{with_systemd}
+%if %{with systemd}
 sed -i -e 's/^#User=/User=/' \
    %{buildroot}%{_unitdir}/corosync-qnetd.service
 sed -i -e 's/root/coroqnetd/g' \
@@ -266,41 +272,25 @@
 APIs and libraries, default configuration files, and an init script.
 
 %pre
-%if %{with_systemd}
-#%service_add_pre corosync.service corosync-notifyd.service
-#we do not use corosync-notifyd.service
-%service_add_pre corosync.service
-%endif
+%service_add_pre corosync.service corosync-notifyd.service
 
 %post
+%tmpfiles_create /usr/lib/tmpfiles.d/corosync-notifyd
 %{fillup_and_insserv -n corosync}
-%if %{with_systemd}
-#%service_add_post corosync.service corosync-notifyd.service
-#we do not use corosync-notifyd.service
-%service_add_post corosync.service
-%endif
+%service_add_post corosync.service corosync-notifyd.service
+
 rm -rf  %{_sysconfdir}/corosync/corosync.conf.example 
%{_sysconfdir}/corosync/corosync.conf.example.unicast
 ln -s /usr/share/doc/packages/corosync/corosync.conf.example 
%{_sysconfdir}/corosync/
 ln -s /usr/share/doc/packages/corosync/corosync.conf.example.udpu 
%{_sysconfdir}/corosync/corosync.conf.example.unicast
 
 %preun
-
-%if %{with_systemd}
-%service_del_preun corosync.service
-%else
-if [ $1 -eq 0 ]; then
-    /sbin/service corosync stop &>/dev/null || :
-    /sbin/chkconfig --del corosync || :
-fi
-%endif
+%service_del_preun corosync.service corosync-notifyd.service
 
 %postun
 if [ -f /etc/sysconfig/corosync ]; then
     rm /etc/sysconfig/corosync
 fi
-%if %{with_systemd} && 0%{?systemd_postun:1}
-%systemd_postun
-%endif
+%service_del_postun corosync.service corosync-notifyd.service
 
 %files
 %defattr(-,root,root,-)
@@ -312,12 +302,12 @@
 %{_sbindir}/corosync-cpgtool
 %{_sbindir}/corosync-quorumtool
 %{_sbindir}/corosync-notifyd
-%{_sysconfdir}/init.d/corosync
-%if %{with_systemd}
+%if %{with systemd}
 %{_sbindir}/rccorosync
+%{_sbindir}/rccorosync-notifyd
 %endif
 %{_bindir}/corosync-blackbox
-%if %{with_xmlconf}
+%if %{with xmlconf}
 %{_bindir}/corosync-xmlproc
 %config(noreplace) %{_sysconfdir}/corosync/corosync.xml.example
 %dir %{_datadir}/corosync
@@ -331,30 +321,25 @@
 %config(noreplace) /usr/share/doc/packages/corosync/corosync.conf.example
 %config(noreplace) /usr/share/doc/packages/corosync/corosync.conf.example.udpu
 %config(noreplace) /usr/lib/tmpfiles.d/corosync-notifyd
-#%config(noreplace) %{_sysconfdir}/sysconfig/corosync
 %config(noreplace) /var/adm/fillup-templates/sysconfig.corosync
-#%config(noreplace) %{_sysconfdir}/logrotate.d/corosync
 
-#%if %{with dbus}
-#%{_sysconfdir}/dbus-1/system.d/corosync-signals.conf
-#%endif
-%if %{with_snmp}
+%if %{with dbus}
+%{_sysconfdir}/dbus-1/system.d/corosync-signals.conf
+%endif
+%if %{with snmp}
 %{_datadir}/snmp/mibs/COROSYNC-MIB.txt
 %endif
-%if %{with_systemd}
+%if %{with systemd}
 %{_unitdir}/corosync.service
 %{_unitdir}/corosync-notifyd.service
 %dir %{_datadir}/corosync
 %{_datadir}/corosync/corosync
 %{_datadir}/corosync/corosync-notifyd
-%else
-%{_initrddir}/corosync
-%{_initrddir}/corosync-notifyd
 %endif
-#%if %{with_upstart}
-#%{_sysconfdir}/init/corosync.conf
-#%{_sysconfdir}/init/corosync-notifyd.conf
-#%endif
+%if %{with upstart}
+%{_sysconfdir}/init/corosync.conf
+%{_sysconfdir}/init/corosync-notifyd.conf
+%endif
 %dir %{_localstatedir}/lib/corosync
 %dir %{_localstatedir}/log/cluster
 %{_mandir}/man8/corosync_overview.8*
@@ -372,12 +357,12 @@
 %{_datadir}/doc/corosync/*
 # optional testagent rpm
 #
-%if %{with_testagents}
+%if %{with testagents}
 
 %package -n corosync-testagents
 Summary:        The Corosync Cluster Engine Test Agents
-Group:          Development/Libraries
-Requires:       %{name} = %{version}-%{release}
+Group:          Development/Tools/Other
+Requires:       %{name} = %{version}
 
 %description -n corosync-testagents
 This package contains corosync test agents.
@@ -402,10 +387,9 @@
 Summary:        The Corosync Cluster Engine Libraries
 # openais is indeed gone and should be uninstalled. Yes, we do not
 # provide libopenais on purpose, the package has been deleted.
-Group:          Productivity/Clustering/HA
+Group:          System/Libraries
 Obsoletes:      libopenais3 < 1.2
 Conflicts:      libopenais3 < 1.2
-#Requires:       %{name} = %{version}-%{release}
 
 %description -n libcorosync4
 This package contains corosync libraries.
@@ -428,7 +412,7 @@
 
 %package -n libcorosync-devel
 Summary:        The Corosync Cluster Engine Development Kit
-Group:          Productivity/Clustering/HA
+Group:          Development/Libraries/C and C++
 Requires:       libcorosync4 = %{version}-%{release}
 Requires:       libqb-devel
 Requires:       pkgconfig
@@ -478,46 +462,37 @@
 %post -n libcorosync-devel -p /sbin/ldconfig
 %postun -n libcorosync-devel -p /sbin/ldconfig
 
-# optional qdevices
-#
-%if %{with_qdevices}
+%if %{with qdevices}
 
 %package -n corosync-qdevice
 Summary:        The Corosync Cluster Engine Qdevice
-Group:          System Environment/Base
+Group:          System/Base
 Requires:       corosync
 Requires:       mozilla-nss-tools
 
-%if %{with_systemd}
+%if %{with systemd}
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
-Requires(post): %insserv_prereq  %fillup_prereq
 %endif
 
 %description -n corosync-qdevice
 This package contains the Corosync Cluster Engine Qdevice, script for creating
 NSS certificates and an init script.
 
+%pre -n corosync-qdevice
+%service_add_pre corosync-qdevice.service
+
 %post -n corosync-qdevice
 %{fillup_and_insserv -n corosync-qdevice}
-#mkdir /run/corosync-qdevice
 %if %{sles_version} > 0
 ln -s /run/corosync-qdevice /var/run/
 %endif
-%if %{with_systemd}
 %service_add_post corosync-qdevice.service
-%endif
 
 %preun -n corosync-qdevice
-%if %{with_systemd}
 %service_del_preun corosync-qdevice.service
-%else
-if [ $1 -eq 0 ]; then
-       /sbin/service corosync-qdevice stop &>/dev/null || :
-       /sbin/chkconfig --del corosync-qdevice || :
-fi
-%endif
+
 %if %{sles_version}
 unlink /var/run/corosync-qdevice
 %endif
@@ -526,9 +501,7 @@
 if [ -f /etc/sysconfig/corosync-qdevice ]; then
     rm /etc/sysconfig/corosync-qdevice
 fi
-%if %{with_systemd} && 0%{?systemd_postun:1}
-%systemd_postun
-%endif
+%service_del_postun corosync-qdevice.service
 
 %files -n corosync-qdevice
 %defattr(-,root,root,-)
@@ -536,40 +509,33 @@
 %dir %config(noreplace) %{_sysconfdir}/corosync/qdevice/net
 #change corosync-qdevice to /run as /var/run is symlink nowdays
 %ghost /run/corosync-qdevice
-#%dir %{_localstatedir}/run/corosync-qdevice
 %{_sbindir}/corosync-qdevice
 %{_sbindir}/corosync-qdevice-net-certutil
 %{_sbindir}/corosync-qdevice-tool
-%{_sysconfdir}/init.d/corosync-qdevice
 %config(noreplace) /var/adm/fillup-templates/sysconfig.corosync-qdevice
-#%config(noreplace) %{_sysconfdir}/sysconfig/corosync-qdevice
-%if %{with_systemd}
+%if %{with systemd}
 %{_unitdir}/corosync-qdevice.service
+%{_sbindir}/rccorosync-qdevice
 %dir %{_datadir}/corosync
 %{_datadir}/corosync/corosync-qdevice
-%else
-%{_initrddir}/corosync-qdevice
 %endif
 %{_mandir}/man8/corosync-qdevice-tool.8*
 %{_mandir}/man8/corosync-qdevice-net-certutil.8*
 %{_mandir}/man8/corosync-qdevice.8*
 %endif
 
-# optional qnetd
-#
-%if %{with_qnetd}
+%if %{with qnetd}
 
 %package -n corosync-qnetd
 Summary:        The Corosync Cluster Engine Qdevice Network Daemon
-Group:          System Environment/Base
+Group:          System/Base
 Requires:       mozilla-nss-tools
 Requires(pre): shadow
 
-%if %{with_systemd}
+%if %{with systemd}
 Requires(post): systemd
 Requires(preun): systemd
 Requires(postun): systemd
-Requires(post): %insserv_prereq  %fillup_prereq
 %endif
 
 %description -n corosync-qnetd
@@ -577,31 +543,25 @@
 NSS certificates and an init script.
 
 %pre -n corosync-qnetd
-getent group coroqnetd >/dev/null || groupadd -r coroqnetd
-getent passwd coroqnetd >/dev/null || \
-    useradd -r -g coroqnetd -d / -s /sbin/nologin -c "User for corosync-qnetd" 
coroqnetd
+getent group coroqnetd >/dev/null || groupadd -r coroqnetd -g 701
+getent passwd coroqnetd >/dev/null || useradd -r -g coroqnetd -u 701 -s 
/sbin/nologin -c "User for corosync-qnetd" coroqnetd
+
+%service_add_pre corosync-qnetd.service
+
 exit 0
 
 %post -n corosync-qnetd
-#mkdir -m 770 /run/corosync-qnetd
-#chown coroqnetd:coroqnetd /run/corosync-qnetd
+%tmpfiles_create /usr/lib/tmpfiles.d/corosync-qnetd.conf
 %if %{sles_version} > 0
 ln -s /run/corosync-qnetd /var/run/
 %endif
 %{fillup_and_insserv -n corosync-qnetd}
-%if %{with_systemd}
+
 %service_add_post corosync-qnetd.service
-%endif
 
 %preun -n corosync-qnetd
-%if %{with_systemd}
 %service_del_preun corosync-qnetd.service
-%else
-if [ $1 -eq 0 ]; then
-       /sbin/service corosync-qnetd stop &>/dev/null || :
-       /sbin/chkconfig --del corosync-qnetd || :
-fi
-%endif
+
 %if %{sles_version} > 0
 unlink /var/run/corosync-qnetd
 %endif
@@ -610,29 +570,23 @@
 if [ -f /etc/sysconfig/corosync-qnetd ];then
     rm /etc/sysconfig/corosync-qnetd
 fi
-%if %{with_systemd} && 0%{?systemd_postun:1}
-%systemd_postun
-%endif
+%service_del_postun corosync-qnetd.service
 
 %files -n corosync-qnetd
 %defattr(-,root,root,-)
-%dir %config(noreplace) %attr(770, coroqnetd, coroqnetd) 
%{_sysconfdir}/corosync/qnetd
+%dir %config(noreplace) %attr(750, coroqnetd, coroqnetd) 
%{_sysconfdir}/corosync/qnetd
 #change corosync-qnetd to /run as /var/run is just symlink nowadays
-%ghost %attr(770, coroqnetd, coroqnetd) /run/corosync-qnetd
-#%dir %attr(770, coroqnetd, coroqnetd) %{_localstatedir}/run/corosync-qnetd
+%ghost %attr (750, coroqnetd, coroqnetd) /run/corosync-qnetd
 %{_bindir}/corosync-qnetd
 %{_bindir}/corosync-qnetd-certutil
 %{_bindir}/corosync-qnetd-tool
-%{_sysconfdir}/init.d/corosync-qnetd
 %config(noreplace) /var/adm/fillup-templates/sysconfig.corosync-qnetd
-#%config(noreplace) %{_sysconfdir}/sysconfig/corosync-qnetd
-%if %{with_systemd}
+%if %{with systemd}
 %{_unitdir}/corosync-qnetd.service
+%{_sbindir}/rccorosync-qnetd
 %dir %{_datadir}/corosync
 %{_datadir}/corosync/corosync-qnetd
 %{_tmpfilesdir}/corosync-qnetd.conf
-%else
-%{_initrddir}/corosync-qnetd
 %endif
 %{_mandir}/man8/corosync-qnetd-tool.8*
 %{_mandir}/man8/corosync-qnetd-certutil.8*

++++++ 0010-fix-ifdown-udp.patch ++++++
>From 790794bc1f654fd1b4c8c2904c8d5c60374b99c1 Mon Sep 17 00:00:00 2001
From: Jan Friesse <[email protected]>
Date: Mon, 31 Jul 2017 18:05:18 +0200
Subject: [PATCH] totemudp: Add local loop support for unicast msgs

This patch intends to solve long time ifdown corosync problem. Idea is
to use multicast local socket also for sending unicast messages.
Together with testing what is current bind state it's possible to keep
pretending existence of old IP address instead of rebinding to localhost
what breaks a lot things badly.

Heavilly based on Yu, Zou <[email protected]> work. Also big thanks
to Bin Liu <[email protected]> for testing and bringing some ideas.

Signed-off-by: Jan Friesse <[email protected]>
---
 exec/totemudp.c | 215 +++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 128 insertions(+), 87 deletions(-)

diff --git a/exec/totemudp.c b/exec/totemudp.c
index 31d05704..47830e4b 100644
--- a/exec/totemudp.c
+++ b/exec/totemudp.c
@@ -207,8 +207,6 @@ static int totemudp_build_sockets (
        struct totemudp_socket *sockets,
        struct totem_ip_address *bound_to);
 
-static struct totem_ip_address localhost;
-
 static void totemudp_instance_initialize (struct totemudp_instance *instance)
 {
        memset (instance, 0, sizeof (struct totemudp_instance));
@@ -269,6 +267,7 @@ static inline void ucast_sendmsg (
        struct sockaddr_storage sockaddr;
        struct iovec iovec;
        int addrlen;
+       int send_sock;
 
        /*
         * Encrypt and digest the message
@@ -313,11 +312,19 @@ static inline void ucast_sendmsg (
 #endif
 
 
+       if (instance->netif_bind_state == BIND_STATE_REGULAR) {
+               send_sock = instance->totemudp_sockets.mcast_send;
+       } else {
+               send_sock = instance->totemudp_sockets.local_mcast_loop[1];
+               msg_ucast.msg_name = NULL;
+               msg_ucast.msg_namelen = 0;
+       }
+
        /*
         * Transmit unicast message
         * An error here is recovered by totemsrp
         */
-       res = sendmsg (instance->totemudp_sockets.mcast_send, &msg_ucast,
+       res = sendmsg (send_sock, &msg_ucast,
                MSG_NOSIGNAL);
        if (res < 0) {
                LOGSYS_PERROR (errno, instance->totemudp_log_level_debug,
@@ -380,18 +387,20 @@ static inline void mcast_sendmsg (
        msg_mcast.msg_accrightslen = 0;
 #endif
 
-       /*
-        * Transmit multicast message
-        * An error here is recovered by totemsrp
-        */
-       res = sendmsg (instance->totemudp_sockets.mcast_send, &msg_mcast,
-               MSG_NOSIGNAL);
-       if (res < 0) {
-               LOGSYS_PERROR (errno, instance->totemudp_log_level_debug,
-                       "sendmsg(mcast) failed (non-critical)");
-               instance->stats->continuous_sendmsg_failures++;
-       } else {
-               instance->stats->continuous_sendmsg_failures = 0;
+       if (instance->netif_bind_state == BIND_STATE_REGULAR) {
+               /*
+                * Transmit multicast message
+                * An error here is recovered by totemsrp
+                */
+               res = sendmsg (instance->totemudp_sockets.mcast_send, 
&msg_mcast,
+                       MSG_NOSIGNAL);
+               if (res < 0) {
+                       LOGSYS_PERROR (errno, 
instance->totemudp_log_level_debug,
+                               "sendmsg(mcast) failed (non-critical)");
+                       instance->stats->continuous_sendmsg_failures++;
+               } else {
+                       instance->stats->continuous_sendmsg_failures = 0;
+               }
        }
 
        /*
@@ -556,7 +565,6 @@ static void timer_function_netif_check_timeout (
        struct totemudp_instance *instance = (struct totemudp_instance *)data;
        int interface_up;
        int interface_num;
-       struct totem_ip_address *bind_address;
 
        /*
         * Build sockets for every interface
@@ -593,28 +601,31 @@ static void timer_function_netif_check_timeout (
                qb_loop_poll_del (instance->totemudp_poll_handle,
                        instance->totemudp_sockets.mcast_recv);
                close (instance->totemudp_sockets.mcast_recv);
+               instance->totemudp_sockets.mcast_recv = -1;
        }
        if (instance->totemudp_sockets.mcast_send > 0) {
                close (instance->totemudp_sockets.mcast_send);
-       }
-       if (instance->totemudp_sockets.local_mcast_loop[0] > 0) {
-               qb_loop_poll_del (instance->totemudp_poll_handle,
-                       instance->totemudp_sockets.local_mcast_loop[0]);
-               close (instance->totemudp_sockets.local_mcast_loop[0]);
-               close (instance->totemudp_sockets.local_mcast_loop[1]);
+               instance->totemudp_sockets.mcast_send = -1;
        }
        if (instance->totemudp_sockets.token > 0) {
                qb_loop_poll_del (instance->totemudp_poll_handle,
                        instance->totemudp_sockets.token);
                close (instance->totemudp_sockets.token);
+               instance->totemudp_sockets.token = -1;
        }
 
        if (interface_up == 0) {
+               if (instance->netif_bind_state == BIND_STATE_UNBOUND) {
+                       log_printf (instance->totemudp_log_level_error,
+                               "One of your ip addresses are now bound to 
localhost. "
+                               "Corosync would not work correctly.");
+                       exit(COROSYNC_DONE_FATAL_ERR);
+               }
+
                /*
                 * Interface is not up
                 */
                instance->netif_bind_state = BIND_STATE_LOOPBACK;
-               bind_address = &localhost;
 
                /*
                 * Add a timer to retry building interfaces and request 
memb_gather_enter
@@ -630,34 +641,29 @@ static void timer_function_netif_check_timeout (
                 * Interface is up
                 */
                instance->netif_bind_state = BIND_STATE_REGULAR;
-               bind_address = &instance->totem_interface->bindnet;
        }
        /*
         * Create and bind the multicast and unicast sockets
         */
        (void)totemudp_build_sockets (instance,
                &instance->mcast_address,
-               bind_address,
+               &instance->totem_interface->bindnet,
                &instance->totemudp_sockets,
                &instance->totem_interface->boundto);
 
-       qb_loop_poll_add (
-               instance->totemudp_poll_handle,
-               QB_LOOP_MED,
-               instance->totemudp_sockets.mcast_recv,
-               POLLIN, instance, net_deliver_fn);
-
-       qb_loop_poll_add (
-               instance->totemudp_poll_handle,
-               QB_LOOP_MED,
-               instance->totemudp_sockets.local_mcast_loop[0],
-               POLLIN, instance, net_deliver_fn);
+       if (instance->netif_bind_state == BIND_STATE_REGULAR) {
+               qb_loop_poll_add (
+                       instance->totemudp_poll_handle,
+                       QB_LOOP_MED,
+                       instance->totemudp_sockets.mcast_recv,
+                       POLLIN, instance, net_deliver_fn);
 
-       qb_loop_poll_add (
-               instance->totemudp_poll_handle,
-               QB_LOOP_MED,
-               instance->totemudp_sockets.token,
-               POLLIN, instance, net_deliver_fn);
+               qb_loop_poll_add (
+                       instance->totemudp_poll_handle,
+                       QB_LOOP_MED,
+                       instance->totemudp_sockets.token,
+                       POLLIN, instance, net_deliver_fn);
+       }
 
        totemip_copy (&instance->my_id, &instance->totem_interface->boundto);
 
@@ -708,6 +714,66 @@ static void totemudp_traffic_control_set(struct 
totemudp_instance *instance, int
 #endif
 }
 
+static int totemudp_build_local_sockets(
+       struct totemudp_instance *instance,
+       struct totemudp_socket *sockets)
+{
+       int i;
+       unsigned int sendbuf_size;
+       unsigned int recvbuf_size;
+       unsigned int optlen = sizeof (sendbuf_size);
+       int res;
+
+       /*
+        * Create local multicast loop socket
+        */
+       if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sockets->local_mcast_loop) == 
-1) {
+               LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
+                       "socket() failed");
+               return (-1);
+       }
+
+       for (i = 0; i < 2; i++) {
+               totemip_nosigpipe (sockets->local_mcast_loop[i]);
+               res = fcntl (sockets->local_mcast_loop[i], F_SETFL, O_NONBLOCK);
+               if (res == -1) {
+                       LOGSYS_PERROR (errno, 
instance->totemudp_log_level_warning,
+                               "Could not set non-blocking operation on 
multicast socket");
+                       return (-1);
+               }
+       }
+
+       recvbuf_size = MCAST_SOCKET_BUFFER_SIZE;
+       sendbuf_size = MCAST_SOCKET_BUFFER_SIZE;
+
+       res = setsockopt (sockets->local_mcast_loop[0], SOL_SOCKET, SO_RCVBUF, 
&recvbuf_size, optlen);
+       if (res == -1) {
+               LOGSYS_PERROR (errno, instance->totemudp_log_level_debug,
+                       "Unable to set SO_RCVBUF size on UDP local mcast loop 
socket");
+               return (-1);
+       }
+       res = setsockopt (sockets->local_mcast_loop[1], SOL_SOCKET, SO_SNDBUF, 
&sendbuf_size, optlen);
+       if (res == -1) {
+               LOGSYS_PERROR (errno, instance->totemudp_log_level_debug,
+                       "Unable to set SO_SNDBUF size on UDP local mcast loop 
socket");
+               return (-1);
+       }
+
+       res = getsockopt (sockets->local_mcast_loop[0], SOL_SOCKET, SO_RCVBUF, 
&recvbuf_size, &optlen);
+       if (res == 0) {
+               log_printf (instance->totemudp_log_level_debug,
+                       "Local receive multicast loop socket recv buffer size 
(%d bytes).", recvbuf_size);
+       }
+
+       res = getsockopt (sockets->local_mcast_loop[1], SOL_SOCKET, SO_SNDBUF, 
&sendbuf_size, &optlen);
+       if (res == 0) {
+               log_printf (instance->totemudp_log_level_debug,
+                       "Local transmit multicast loop socket send buffer size 
(%d bytes).", sendbuf_size);
+       }
+
+       return (0);
+}
+
 static int totemudp_build_sockets_ip (
        struct totemudp_instance *instance,
        struct totem_ip_address *mcast_address,
@@ -730,7 +796,8 @@ static int totemudp_build_sockets_ip (
        int res;
        int flag;
        uint8_t sflag;
-       int i;
+
+
 
        /*
         * Create multicast recv socket
@@ -760,24 +827,6 @@ static int totemudp_build_sockets_ip (
                return (-1);
        }
 
-       /*
-        * Create local multicast loop socket
-        */
-       if (socketpair(AF_UNIX, SOCK_DGRAM, 0, sockets->local_mcast_loop) == 
-1) {
-               LOGSYS_PERROR (errno, instance->totemudp_log_level_warning,
-                       "socket() failed");
-               return (-1);
-       }
-
-       for (i = 0; i < 2; i++) {
-               totemip_nosigpipe (sockets->local_mcast_loop[i]);
-               res = fcntl (sockets->local_mcast_loop[i], F_SETFL, O_NONBLOCK);
-               if (res == -1) {
-                       LOGSYS_PERROR (errno, 
instance->totemudp_log_level_warning,
-                               "Could not set non-blocking operation on 
multicast socket");
-                       return (-1);
-               }
-       }
 
 
 
@@ -875,18 +924,6 @@ static int totemudp_build_sockets_ip (
                        "Unable to set SO_SNDBUF size on UDP mcast socket");
                return (-1);
        }
-       res = setsockopt (sockets->local_mcast_loop[0], SOL_SOCKET, SO_RCVBUF, 
&recvbuf_size, optlen);
-       if (res == -1) {
-               LOGSYS_PERROR (errno, instance->totemudp_log_level_debug,
-                       "Unable to set SO_RCVBUF size on UDP local mcast loop 
socket");
-               return (-1);
-       }
-       res = setsockopt (sockets->local_mcast_loop[1], SOL_SOCKET, SO_SNDBUF, 
&sendbuf_size, optlen);
-       if (res == -1) {
-               LOGSYS_PERROR (errno, instance->totemudp_log_level_debug,
-                       "Unable to set SO_SNDBUF size on UDP local mcast loop 
socket");
-               return (-1);
-       }
 
        res = getsockopt (sockets->mcast_recv, SOL_SOCKET, SO_RCVBUF, 
&recvbuf_size, &optlen);
        if (res == 0) {
@@ -900,17 +937,6 @@ static int totemudp_build_sockets_ip (
                        "Transmit multicast socket send buffer size (%d 
bytes).", sendbuf_size);
        }
 
-       res = getsockopt (sockets->local_mcast_loop[0], SOL_SOCKET, SO_RCVBUF, 
&recvbuf_size, &optlen);
-       if (res == 0) {
-               log_printf (instance->totemudp_log_level_debug,
-                       "Local receive multicast loop socket recv buffer size 
(%d bytes).", recvbuf_size);
-       }
-
-       res = getsockopt (sockets->local_mcast_loop[1], SOL_SOCKET, SO_SNDBUF, 
&sendbuf_size, &optlen);
-       if (res == 0) {
-               log_printf (instance->totemudp_log_level_debug,
-                       "Local transmit multicast loop socket send buffer size 
(%d bytes).", sendbuf_size);
-       }
 
 
        /*
@@ -1178,8 +1204,19 @@ int totemudp_initialize (
 
        instance->totemudp_target_set_completed = target_set_completed;
 
-       totemip_localhost (instance->mcast_address.family, &localhost);
-       localhost.nodeid = instance->totem_config->node_id;
+       /*
+        * Create static local mcast sockets
+        */
+       if (totemudp_build_local_sockets(instance, &instance->totemudp_sockets) 
== -1) {
+               free(instance);
+               return (-1);
+       }
+
+       qb_loop_poll_add (
+               instance->totemudp_poll_handle,
+               QB_LOOP_MED,
+               instance->totemudp_sockets.local_mcast_loop[0],
+               POLLIN, instance, net_deliver_fn);
 
        /*
         * RRP layer isn't ready to receive message because it hasn't
@@ -1242,10 +1279,14 @@ int totemudp_recv_flush (void *udp_context)
        for (i = 0; i < 2; i++) {
                sock = -1;
                if (i == 0) {
-                   sock = instance->totemudp_sockets.mcast_recv;
+                       if (instance->netif_bind_state == BIND_STATE_REGULAR) {
+                               sock = instance->totemudp_sockets.mcast_recv;
+                       } else {
+                               continue ;
+                       }
                }
                if (i == 1) {
-                   sock = instance->totemudp_sockets.local_mcast_loop[0];
+                       sock = instance->totemudp_sockets.local_mcast_loop[0];
                }
                assert(sock != -1);
 
-- 
2.12.3

++++++ 0011-fix-tmpfiles-create.patch ++++++
--- corosync-2.4.2.orig/tools/corosync-notifyd.sysconfig.example    2016-11-08 
00:39:12.000000000 +0800
+++ corosync-2.4.2/tools/corosync-notifyd.sysconfig.example 2017-08-16 
11:41:00.485913615 +0800
@@ -6,5 +6,4 @@
 #
 
 # Send DBUS signals on all events (for SNMP traps, use -s)
-OPTIONS="-d"
-
+# OPTIONS="-d"

Reply via email to