Compare commits
No commits in common. "rawhide" and "f12" have entirely different histories.
10 changed files with 944 additions and 1259 deletions
|
|
@ -1 +0,0 @@
|
|||
1
|
||||
51
.gitignore
vendored
51
.gitignore
vendored
|
|
@ -1,54 +1,3 @@
|
|||
corosync-1.2.6.tar.gz
|
||||
corosync-1.2.7.tar.gz
|
||||
/corosync-1.2.8.tar.gz
|
||||
/corosync-1.3.0.tar.gz
|
||||
/corosync-1.3.1.tar.gz
|
||||
/corosync-1.3.2.tar.gz
|
||||
/corosync-1.4.0.tar.gz
|
||||
/corosync-1.4.1.tar.gz
|
||||
/corosync-1.4.2.tar.gz
|
||||
/corosync-1.99.1.tar.gz
|
||||
/corosync-1.99.2.tar.gz
|
||||
/corosync-1.99.3.tar.gz
|
||||
/corosync-1.99.4.tar.gz
|
||||
/corosync-1.99.5.tar.gz
|
||||
/corosync-1.99.6.tar.gz
|
||||
/corosync-1.99.7.tar.gz
|
||||
/corosync-1.99.8.tar.gz
|
||||
/corosync-1.99.9.tar.gz
|
||||
/corosync-2.0.0.tar.gz
|
||||
/corosync-2.0.1.tar.gz
|
||||
/corosync-2.1.0.tar.gz
|
||||
/corosync-2.2.0.tar.gz
|
||||
/corosync-2.3.0.tar.gz
|
||||
/corosync-2.3.1.tar.gz
|
||||
/corosync-2.3.2.tar.gz
|
||||
/corosync-2.3.3.tar.gz
|
||||
/corosync-2.3.4.tar.gz
|
||||
/corosync-2.3.5.tar.gz
|
||||
/corosync-2.3.6.tar.gz
|
||||
/corosync-2.4.0.tar.gz
|
||||
/corosync-2.4.1.tar.gz
|
||||
/corosync-2.4.2.tar.gz
|
||||
/corosync-2.4.3.tar.gz
|
||||
/corosync-2.99.1.tar.gz
|
||||
/corosync-2.99.2.tar.gz
|
||||
/corosync-2.99.3.tar.gz
|
||||
/corosync-2.99.4.tar.gz
|
||||
/corosync-2.99.5.tar.gz
|
||||
/corosync-3.0.0.tar.gz
|
||||
/corosync-3.0.1.tar.gz
|
||||
/corosync-3.0.2.tar.gz
|
||||
/corosync-3.0.3.tar.gz
|
||||
/corosync-3.0.4.tar.gz
|
||||
/corosync-3.1.0.tar.gz
|
||||
/corosync-3.1.1.tar.gz
|
||||
/corosync-3.1.2.tar.gz
|
||||
/corosync-3.1.3.tar.gz
|
||||
/corosync-3.1.4.tar.gz
|
||||
/corosync-3.1.5.tar.gz
|
||||
/corosync-3.1.6.tar.gz
|
||||
/corosync-3.1.7.tar.gz
|
||||
/corosync-3.1.8.tar.gz
|
||||
/corosync-3.1.9.tar.gz
|
||||
/corosync-3.1.10.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,29 +0,0 @@
|
|||
# Empty %postun
|
||||
addFilter(r'W: empty-%postun')
|
||||
|
||||
# Spelling error init
|
||||
addFilter(r'W: spelling-error %description -l en_US init')
|
||||
|
||||
# Spelling error corosync
|
||||
addFilter(r'W: spelling-error .* (C|c)orosync')
|
||||
|
||||
# Spelling error votequorum and subprocesses
|
||||
addFilter(r'corosync-vqsim\.[^:]+: W: spelling-error .* votequorum')
|
||||
addFilter(r'corosync-vqsim\.[^:]+: W: spelling-error .* subprocesses')
|
||||
|
||||
# Repeated Corosync
|
||||
addFilter(r'W: name-repeated-in-summary C Corosync')
|
||||
|
||||
# Explicit lib dependency - knet nss has been requested by QA,
|
||||
# libxslt may be replaced with xsltproc binary
|
||||
addFilter(r'corosync\.[^:]+: (E|W): explicit-lib-dependency libknet1-crypto-nss-plugin')
|
||||
addFilter(r'corosync\.[^:]+: (E|W): explicit-lib-dependency libxslt')
|
||||
|
||||
# Dbus is not config file
|
||||
addFilter(r'corosync\.[^:]+: (E|W): non-conffile-in-etc /etc/dbus-1/system\.d/corosync-signals\.conf')
|
||||
|
||||
# Logrotate is not requirement
|
||||
addFilter(r'corosync\.[^:]+: (E|W): missing-dependency-to-logrotate')
|
||||
|
||||
# libcorosync_common.so has no libc call
|
||||
addFilter(r'corosynclib\.[^:]+: (E|W): library-not-linked-against-libc /usr/lib(64)?/libcorosync_common\.so')
|
||||
657
corosync.spec
657
corosync.spec
|
|
@ -1,635 +1,242 @@
|
|||
# Conditionals
|
||||
# Invoke "rpmbuild --without <feature>" or "rpmbuild --with <feature>"
|
||||
# to disable or enable specific features
|
||||
%bcond_with watchdog
|
||||
%bcond_with monitoring
|
||||
%bcond_without snmp
|
||||
%bcond_without dbus
|
||||
%bcond_without systemd
|
||||
%bcond_without xmlconf
|
||||
%bcond_without nozzle
|
||||
%bcond_without vqsim
|
||||
%bcond_without runautogen
|
||||
%bcond_without userflags
|
||||
# global alphatag svn1211
|
||||
|
||||
Name: corosync
|
||||
Summary: The Corosync Cluster Engine and Application Programming Interfaces
|
||||
Version: 3.1.10
|
||||
Release: 1%{?dist}
|
||||
License: BSD-3-Clause
|
||||
URL: http://corosync.github.io/corosync/
|
||||
Source0: https://github.com/%{name}/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz
|
||||
Version: 1.2.8
|
||||
Release: 1%{?alphatag:.%{alphatag}}%{?dist}
|
||||
License: BSD
|
||||
Group: System Environment/Base
|
||||
URL: http://ftp.corosync.org
|
||||
Source0: ftp://ftp:user@ftp.corosync.org/downloads/%{name}-%{version}/%{name}-%{version}.tar.gz
|
||||
Patch0: revision-2770.patch
|
||||
|
||||
# Runtime bits
|
||||
# The automatic dependency overridden in favor of explicit version lock
|
||||
Requires: corosynclib%{?_isa} = %{version}-%{release}
|
||||
|
||||
# Support crypto reload
|
||||
Requires: libknet1 >= 1.18
|
||||
# NSS crypto plugin should be always installed
|
||||
Requires: libknet1-crypto-nss-plugin >= 1.18
|
||||
|
||||
# Build bits
|
||||
BuildRequires: gcc
|
||||
BuildRequires: groff
|
||||
BuildRequires: libqb-devel
|
||||
BuildRequires: libknet1-devel >= 1.18
|
||||
BuildRequires: zlib-devel
|
||||
%if %{with runautogen}
|
||||
BuildRequires: autoconf automake libtool
|
||||
%endif
|
||||
%if %{with monitoring}
|
||||
BuildRequires: libstatgrab-devel
|
||||
%endif
|
||||
%if %{with snmp}
|
||||
BuildRequires: net-snmp-devel
|
||||
%endif
|
||||
%if %{with dbus}
|
||||
BuildRequires: dbus-devel
|
||||
%endif
|
||||
%if %{with nozzle}
|
||||
BuildRequires: libnozzle1-devel
|
||||
%endif
|
||||
%if %{with systemd}
|
||||
%{?systemd_requires}
|
||||
BuildRequires: systemd
|
||||
BuildRequires: systemd-devel
|
||||
%else
|
||||
Requires: corosynclib = %{version}-%{release}
|
||||
Requires(pre): /usr/sbin/useradd
|
||||
Requires(post): /sbin/chkconfig
|
||||
Requires(preun): /sbin/chkconfig
|
||||
Conflicts: openais <= 0.89, openais-devel <= 0.89
|
||||
|
||||
# Build bits
|
||||
|
||||
# no InfiniBand stack on s390(x)
|
||||
%ifarch s390 s390x
|
||||
%define have_ib 0
|
||||
%else
|
||||
%define have_ib 1
|
||||
%endif
|
||||
%if %{with xmlconf}
|
||||
Requires: libxslt
|
||||
|
||||
%define buildtrunk 0
|
||||
%{?_with_buildtrunk: %define buildtrunk 1}
|
||||
|
||||
%if %{buildtrunk}
|
||||
BuildRequires: autoconf automake
|
||||
%endif
|
||||
%if %{with vqsim}
|
||||
BuildRequires: readline-devel
|
||||
BuildRequires: nss-devel
|
||||
%if %{have_ib}
|
||||
BuildRequires: libibverbs-devel librdmacm-devel
|
||||
%endif
|
||||
BuildRequires: make
|
||||
BuildRequires: git
|
||||
|
||||
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
||||
|
||||
%prep
|
||||
%autosetup -S git_am
|
||||
%setup -q -n %{name}-%{version}
|
||||
%patch0
|
||||
|
||||
%build
|
||||
%if %{with runautogen}
|
||||
%if %{buildtrunk}
|
||||
./autogen.sh
|
||||
%endif
|
||||
|
||||
%if %{have_ib}
|
||||
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 watchdog}
|
||||
--enable-watchdog \
|
||||
--enable-nss \
|
||||
%if %{have_ib}
|
||||
--enable-rdma \
|
||||
%endif
|
||||
%if %{with monitoring}
|
||||
--enable-monitoring \
|
||||
%endif
|
||||
%if %{with snmp}
|
||||
--enable-snmp \
|
||||
%endif
|
||||
%if %{with dbus}
|
||||
--enable-dbus \
|
||||
%endif
|
||||
%if %{with systemd}
|
||||
--enable-systemd \
|
||||
%endif
|
||||
%if %{with xmlconf}
|
||||
--enable-xmlconf \
|
||||
%endif
|
||||
%if %{with nozzle}
|
||||
--enable-nozzle \
|
||||
%endif
|
||||
%if %{with vqsim}
|
||||
--enable-vqsim \
|
||||
%endif
|
||||
%if %{with userflags}
|
||||
--enable-user-flags \
|
||||
%endif
|
||||
--with-initddir=%{_initrddir} \
|
||||
--with-systemddir=%{_unitdir} \
|
||||
--docdir=%{_docdir}
|
||||
--with-initddir=%{_initrddir}
|
||||
|
||||
%make_build
|
||||
make %{_smp_mflags}
|
||||
|
||||
%install
|
||||
%make_install
|
||||
rm -rf %{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}/%{_datadir}/dbus-1/system.d/corosync-signals.conf
|
||||
%endif
|
||||
make install DESTDIR=%{buildroot}
|
||||
|
||||
## tree fixup
|
||||
# drop static libs
|
||||
rm -f %{buildroot}%{_libdir}/*.a
|
||||
rm -f %{buildroot}%{_libdir}/*.la
|
||||
# drop docs and html docs for now
|
||||
rm -rf %{buildroot}%{_docdir}/*
|
||||
# /etc/sysconfig/corosync-notifyd
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/sysconfig
|
||||
install -m 644 tools/corosync-notifyd.sysconfig.example \
|
||||
%{buildroot}%{_sysconfdir}/sysconfig/corosync-notifyd
|
||||
# /etc/sysconfig/corosync
|
||||
install -m 644 init/corosync.sysconfig.example \
|
||||
%{buildroot}%{_sysconfdir}/sysconfig/corosync
|
||||
|
||||
%clean
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%description
|
||||
This package contains the Corosync Cluster Engine Executive, several default
|
||||
APIs and libraries, default configuration files, and an init script.
|
||||
|
||||
%post
|
||||
%if %{with systemd} && 0%{?systemd_post:1}
|
||||
%systemd_post corosync.service
|
||||
%else
|
||||
if [ $1 -eq 1 ]; then
|
||||
/sbin/chkconfig --add corosync || :
|
||||
fi
|
||||
%endif
|
||||
|
||||
%preun
|
||||
%if %{with systemd} && 0%{?systemd_preun:1}
|
||||
%systemd_preun corosync.service
|
||||
%else
|
||||
if [ $1 -eq 0 ]; then
|
||||
/sbin/service corosync stop &>/dev/null || :
|
||||
/sbin/chkconfig --del corosync || :
|
||||
fi
|
||||
%endif
|
||||
|
||||
%postun
|
||||
%if %{with systemd} && 0%{?systemd_postun:1}
|
||||
%systemd_postun corosync.service
|
||||
%endif
|
||||
|
||||
%files
|
||||
%doc LICENSE
|
||||
%defattr(-,root,root,-)
|
||||
%doc LICENSE SECURITY
|
||||
%{_sbindir}/corosync
|
||||
%{_sbindir}/corosync-keygen
|
||||
%{_sbindir}/corosync-cmapctl
|
||||
%{_sbindir}/corosync-objctl
|
||||
%{_sbindir}/corosync-cfgtool
|
||||
%{_sbindir}/corosync-fplay
|
||||
%{_sbindir}/corosync-pload
|
||||
%{_sbindir}/corosync-cpgtool
|
||||
%{_sbindir}/corosync-quorumtool
|
||||
%{_sbindir}/corosync-notifyd
|
||||
%{_bindir}/corosync-blackbox
|
||||
%if %{with xmlconf}
|
||||
%{_bindir}/corosync-xmlproc
|
||||
%dir %{_datadir}/corosync
|
||||
%{_datadir}/corosync/xml2conf.xsl
|
||||
%{_mandir}/man8/corosync-xmlproc.8*
|
||||
%{_mandir}/man5/corosync.xml.5*
|
||||
%endif
|
||||
%dir %{_sysconfdir}/corosync
|
||||
%dir %{_sysconfdir}/corosync/service.d
|
||||
%dir %{_sysconfdir}/corosync/uidgid.d
|
||||
%config(noreplace) %{_sysconfdir}/corosync/corosync.conf.example
|
||||
%config(noreplace) %{_sysconfdir}/sysconfig/corosync-notifyd
|
||||
%config(noreplace) %{_sysconfdir}/sysconfig/corosync
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/corosync
|
||||
%if %{with dbus}
|
||||
%{_datadir}/dbus-1/system.d/corosync-signals.conf
|
||||
%endif
|
||||
%if %{with snmp}
|
||||
%{_datadir}/snmp/mibs/COROSYNC-MIB.txt
|
||||
%endif
|
||||
%if %{with systemd}
|
||||
%{_unitdir}/corosync.service
|
||||
%{_unitdir}/corosync-notifyd.service
|
||||
%else
|
||||
%{_initrddir}/corosync
|
||||
%{_initrddir}/corosync-notifyd
|
||||
%endif
|
||||
%if %{without systemd}
|
||||
%dir %{_libexecdir}/lcrso
|
||||
%{_libexecdir}/lcrso/coroparse.lcrso
|
||||
%{_libexecdir}/lcrso/objdb.lcrso
|
||||
%{_libexecdir}/lcrso/service_cfg.lcrso
|
||||
%{_libexecdir}/lcrso/service_cpg.lcrso
|
||||
%{_libexecdir}/lcrso/service_evs.lcrso
|
||||
%{_libexecdir}/lcrso/service_confdb.lcrso
|
||||
%{_libexecdir}/lcrso/service_pload.lcrso
|
||||
%{_libexecdir}/lcrso/quorum_votequorum.lcrso
|
||||
%{_libexecdir}/lcrso/quorum_testquorum.lcrso
|
||||
%{_libexecdir}/lcrso/vsf_quorum.lcrso
|
||||
%{_libexecdir}/lcrso/vsf_ykd.lcrso
|
||||
%dir %{_localstatedir}/lib/corosync
|
||||
%dir %{_localstatedir}/log/cluster
|
||||
%endif
|
||||
%{_mandir}/man7/corosync_overview.7*
|
||||
%{_mandir}/man8/corosync_overview.8*
|
||||
%{_mandir}/man8/corosync.8*
|
||||
%{_mandir}/man8/corosync-blackbox.8*
|
||||
%{_mandir}/man8/corosync-cmapctl.8*
|
||||
%{_mandir}/man8/corosync-objctl.8*
|
||||
%{_mandir}/man8/corosync-keygen.8*
|
||||
%{_mandir}/man8/corosync-cfgtool.8*
|
||||
%{_mandir}/man8/corosync-cpgtool.8*
|
||||
%{_mandir}/man8/corosync-notifyd.8*
|
||||
%{_mandir}/man8/corosync-fplay.8*
|
||||
%{_mandir}/man8/corosync-pload.8*
|
||||
%{_mandir}/man8/corosync-quorumtool.8*
|
||||
%{_mandir}/man5/corosync.conf.5*
|
||||
%{_mandir}/man5/votequorum.5*
|
||||
%{_mandir}/man7/cmap_keys.7*
|
||||
|
||||
# library
|
||||
#
|
||||
%package -n corosynclib
|
||||
Summary: The Corosync Cluster Engine Libraries
|
||||
Group: System Environment/Libraries
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description -n corosynclib
|
||||
This package contains corosync libraries.
|
||||
|
||||
%files -n corosynclib
|
||||
%defattr(-,root,root,-)
|
||||
%doc LICENSE
|
||||
%{_libdir}/libcfg.so.*
|
||||
%{_libdir}/libcpg.so.*
|
||||
%{_libdir}/libcmap.so.*
|
||||
%{_libdir}/libconfdb.so.*
|
||||
%{_libdir}/libevs.so.*
|
||||
%{_libdir}/libtotem_pg.so.*
|
||||
%{_libdir}/liblogsys.so.*
|
||||
%{_libdir}/libcoroipcc.so.*
|
||||
%{_libdir}/libcoroipcs.so.*
|
||||
%{_libdir}/libquorum.so.*
|
||||
%{_libdir}/libvotequorum.so.*
|
||||
%{_libdir}/libpload.so.*
|
||||
%{_libdir}/libsam.so.*
|
||||
%{_libdir}/libcorosync_common.so.*
|
||||
|
||||
%ldconfig_scriptlets -n corosynclib
|
||||
%post -n corosynclib -p /sbin/ldconfig
|
||||
|
||||
%postun -n corosynclib -p /sbin/ldconfig
|
||||
|
||||
%package -n corosynclib-devel
|
||||
Summary: The Corosync Cluster Engine Development Kit
|
||||
Requires: corosynclib%{?_isa} = %{version}-%{release}
|
||||
Group: Development/Libraries
|
||||
Requires: corosynclib = %{version}-%{release}
|
||||
Requires: pkgconfig
|
||||
Provides: corosync-devel = %{version}-%{release}
|
||||
Provides: corosync-devel%{?_isa} = %{version}-%{release}
|
||||
Provides: corosync-devel = %{version}
|
||||
Obsoletes: corosync-devel < 0.92-7
|
||||
|
||||
%description -n corosynclib-devel
|
||||
This package contains include files and man pages used to develop using
|
||||
The Corosync Cluster Engine APIs.
|
||||
|
||||
%files -n corosynclib-devel
|
||||
%doc LICENSE
|
||||
%defattr(-,root,root,-)
|
||||
%doc LICENSE README.devmap
|
||||
%dir %{_includedir}/corosync/
|
||||
%{_includedir}/corosync/cs_config.h
|
||||
%{_includedir}/corosync/corodefs.h
|
||||
%{_includedir}/corosync/coroipc_types.h
|
||||
%{_includedir}/corosync/coroipcs.h
|
||||
%{_includedir}/corosync/coroipcc.h
|
||||
%{_includedir}/corosync/cfg.h
|
||||
%{_includedir}/corosync/cmap.h
|
||||
%{_includedir}/corosync/confdb.h
|
||||
%{_includedir}/corosync/corotypes.h
|
||||
%{_includedir}/corosync/cpg.h
|
||||
%{_includedir}/corosync/evs.h
|
||||
%{_includedir}/corosync/hdb.h
|
||||
%{_includedir}/corosync/list.h
|
||||
%{_includedir}/corosync/mar_gen.h
|
||||
%{_includedir}/corosync/sam.h
|
||||
%{_includedir}/corosync/swab.h
|
||||
%{_includedir}/corosync/quorum.h
|
||||
%{_includedir}/corosync/votequorum.h
|
||||
%dir %{_includedir}/corosync/totem/
|
||||
%{_includedir}/corosync/totem/coropoll.h
|
||||
%{_includedir}/corosync/totem/totem.h
|
||||
%{_includedir}/corosync/totem/totemip.h
|
||||
%{_includedir}/corosync/totem/totempg.h
|
||||
%dir %{_includedir}/corosync/lcr/
|
||||
%{_includedir}/corosync/lcr/lcr_ckpt.h
|
||||
%{_includedir}/corosync/lcr/lcr_comp.h
|
||||
%{_includedir}/corosync/lcr/lcr_ifact.h
|
||||
%dir %{_includedir}/corosync/engine
|
||||
%{_includedir}/corosync/engine/config.h
|
||||
%{_includedir}/corosync/engine/coroapi.h
|
||||
%{_includedir}/corosync/engine/logsys.h
|
||||
%{_includedir}/corosync/engine/objdb.h
|
||||
%{_includedir}/corosync/engine/quorum.h
|
||||
%{_libdir}/libcfg.so
|
||||
%{_libdir}/libcpg.so
|
||||
%{_libdir}/libcmap.so
|
||||
%{_libdir}/libconfdb.so
|
||||
%{_libdir}/libevs.so
|
||||
%{_libdir}/libtotem_pg.so
|
||||
%{_libdir}/liblogsys.so
|
||||
%{_libdir}/libcoroipcc.so
|
||||
%{_libdir}/libcoroipcs.so
|
||||
%{_libdir}/libquorum.so
|
||||
%{_libdir}/libvotequorum.so
|
||||
%{_libdir}/libpload.so
|
||||
%{_libdir}/libsam.so
|
||||
%{_libdir}/libcorosync_common.so
|
||||
%{_libdir}/pkgconfig/*.pc
|
||||
%{_mandir}/man3/cpg_*3*
|
||||
%{_mandir}/man3/quorum_*3*
|
||||
%{_mandir}/man3/evs_*3*
|
||||
%{_mandir}/man3/confdb_*3*
|
||||
%{_mandir}/man3/votequorum_*3*
|
||||
%{_mandir}/man3/sam_*3*
|
||||
%{_mandir}/man3/cmap_*3*
|
||||
|
||||
%if %{with vqsim}
|
||||
%package -n corosync-vqsim
|
||||
Summary: The Corosync Cluster Engine - Votequorum Simulator
|
||||
Requires: corosynclib%{?_isa} = %{version}-%{release}
|
||||
Requires: pkgconfig
|
||||
|
||||
%description -n corosync-vqsim
|
||||
A command-line simulator for the corosync votequorum subsystem.
|
||||
It uses the same code as the corosync quorum system but forks
|
||||
them into subprocesses to simulate nodes.
|
||||
Nodes can be added and removed as well as partitioned (to simulate
|
||||
network splits)
|
||||
|
||||
%files -n corosync-vqsim
|
||||
%doc LICENSE
|
||||
%{_bindir}/corosync-vqsim
|
||||
%{_mandir}/man8/corosync-vqsim.8*
|
||||
%endif
|
||||
%{_mandir}/man8/cpg_overview.8*
|
||||
%{_mandir}/man8/evs_overview.8*
|
||||
%{_mandir}/man8/confdb_overview.8*
|
||||
%{_mandir}/man8/logsys_overview.8*
|
||||
%{_mandir}/man8/votequorum_overview.8*
|
||||
%{_mandir}/man8/coroipc_overview.8*
|
||||
%{_mandir}/man8/sam_overview.8*
|
||||
|
||||
%changelog
|
||||
* Sat Nov 15 2025 Jan Friesse <jfriesse@redhat.com> - 3.1.10-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.9-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Mon Jun 16 2025 Jan Friesse <jfriesse@redhat.com> - 3.1.9-4
|
||||
- exec: Add support for env STATE_DIRECTORY
|
||||
- init: Use LogsDirectory in systemd unit file
|
||||
|
||||
* Wed Mar 26 2025 Jan Friesse <jfriesse@redhat.com> - 3.1.9-3
|
||||
- totemsrp: Check size of orf_token msg
|
||||
(fixes CVE-2025-30472)
|
||||
|
||||
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.9-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Fri Nov 15 2024 Jan Friesse <jfriesse@redhat.com> - 3.1.9-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Jul 17 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.8-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Wed Jan 24 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.8-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.8-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Wed Nov 15 2023 Jan Friesse <jfriesse@redhat.com> - 3.1.8-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.7-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Tue Jun 06 2023 Jan Friesse <jfriesse@redhat.com> - 3.1.7-3
|
||||
- migrated to SPDX license
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.7-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Tue Nov 15 2022 Jan Friesse <jfriesse@redhat.com> - 3.1.7-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Jul 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.6-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Wed Mar 30 2022 Jan Friesse <jfriesse@redhat.com> - 3.1.6-3
|
||||
- Use copytruncate method for logrotate
|
||||
|
||||
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.6-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Mon Nov 15 2021 Jan Friesse <jfriesse@redhat.com> - 3.1.6-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Aug 04 2021 Jan Friesse <jfriesse@redhat.com> - 3.1.5-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.4-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Thu Jun 03 2021 Jan Friesse <jfriesse@redhat.com> - 3.1.4-1
|
||||
- New upstream release
|
||||
|
||||
* Fri May 21 2021 Jan Friesse <jfriesse@redhat.com> - 3.1.3-1
|
||||
- New upstream release
|
||||
|
||||
* Tue Apr 06 2021 Jan Friesse <jfriesse@redhat.com> - 3.1.2-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Mar 31 2021 Jan Friesse <jfriesse@redhat.com> - 3.1.1-1
|
||||
- New upstream release
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Mon Nov 02 2020 Jan Friesse <jfriesse@redhat.com> - 3.1.0-2
|
||||
- Add isa version of corosync-devel
|
||||
- Add release to corosync-devel version to match autogenerated
|
||||
corosynclib-devel provides
|
||||
|
||||
* Tue Oct 20 2020 Jan Friesse <jfriesse@redhat.com> - 3.1.0-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Aug 27 2020 Josef Řídký <jridky@redhat.com> - 3.0.4-6
|
||||
- Rebuilt for new net-snmp release
|
||||
|
||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.4-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Mon Jul 13 2020 Tom Stellard <tstellar@redhat.com> - 3.0.4-4
|
||||
- Use make macros
|
||||
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
|
||||
|
||||
* Wed May 13 2020 Jan Friesse <jfriesse@redhat.com> - 3.0.4-3
|
||||
- Fix typo in the changelog
|
||||
|
||||
* Wed May 13 2020 Jan Friesse <jfriesse@redhat.com> - 3.0.4-2
|
||||
- Rebuild for new libqb
|
||||
|
||||
* Thu Apr 23 2020 Jan Friesse <jfriesse@redhat.com> - 3.0.4-1
|
||||
- New upstream release
|
||||
|
||||
* Fri Mar 27 2020 Jan Friesse <jfriesse@redhat.com> - 3.0.3-3
|
||||
- Add CI tests
|
||||
- Enable gating
|
||||
|
||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.3-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Mon Nov 25 2019 Jan Friesse <jfriesse@redhat.com> - 3.0.3-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Wed Jun 12 2019 Jan Friesse <jfriesse@redhat.com> - 3.0.2-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Tue Jan 15 2019 Jan Friesse <jfriesse@redhat.com> - 3.0.1-1
|
||||
- New upstream release
|
||||
|
||||
* Fri Dec 14 2018 Jan Friesse <jfriesse@redhat.com> - 3.0.0-1
|
||||
- New upstream release
|
||||
|
||||
* Fri Dec 7 2018 Jan Friesse <jfriesse@redhat.com> - 2.99.5-1
|
||||
- New upstream release
|
||||
|
||||
* Tue Dec 4 2018 Jan Friesse <jfriesse@redhat.com> - 2.99.4-2
|
||||
- Add libknet1-crypto-nss-plugin dependency
|
||||
|
||||
* Tue Nov 20 2018 Jan Friesse <jfriesse@redhat.com> - 2.99.4-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Aug 16 2018 Jan Pokorný <jpokorny+rpm-corosync@redhat.com> - 2.99.3-3
|
||||
- Rebuild again, since the previous one was so unfortunate it got affected
|
||||
with binutils (2.31.1-3.fc29) producing non-monotonically increasing
|
||||
section offsets causing unprepared eu-strip to damage the binary
|
||||
(related: rhbz#1609577)
|
||||
- Apply patch to prevent redundancy in systemd journal
|
||||
|
||||
* Tue Jul 24 2018 Adam Williamson <awilliam@redhat.com> - 2.99.3-2
|
||||
- Rebuild for new net-snmp
|
||||
|
||||
* Fri Jul 13 2018 Jan Friesse <jfriesse@redhat.com> - 2.99.3-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.99.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Mon Apr 30 2018 Jan Friesse <jfriesse@redhat.com> - 2.99.2-1
|
||||
- New upstream release
|
||||
|
||||
* Fri Mar 16 2018 Jan Friesse <jfriesse@redhat.com> - 2.99.1-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.3-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Fri Jan 19 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 2.4.3-2
|
||||
- Rebuild to fix upgradepath
|
||||
|
||||
* Fri Oct 20 2017 Jan Friesse <jfriesse@redhat.com> - 2.4.3-1
|
||||
- New upstream release
|
||||
|
||||
* Mon Oct 09 2017 Troy Dawson <tdawson@redhat.com> - 2.4.2-7
|
||||
- Cleanup spec file conditionals
|
||||
|
||||
* Mon Oct 02 2017 Troy Dawson <tdawson@redhat.com> - 2.4.2-6
|
||||
- Bump to rebuild on newer binutils
|
||||
|
||||
* Wed Aug 23 2017 Adam Williamson <awilliam@redhat.com> - 2.4.2-5
|
||||
- Disable RDMA on 32-bit ARM (#1484155)
|
||||
|
||||
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.2-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.2-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Mon Nov 7 2016 Jan Friesse <jfriesse@redhat.com> - 2.4.2-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Aug 4 2016 Jan Friesse <jfriesse@redhat.com> - 2.4.1-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Jun 30 2016 Jan Friesse <jfriesse@redhat.com> - 2.4.0-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Jun 16 2016 Jan Friesse <jfriesse@redhat.com> - 2.3.6-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2.3.5-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Wed Jul 01 2015 Jan Friesse <jfriesse@redhat.com> - 2.3.5-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.4-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Tue Aug 26 2014 Jan Friesse <jfriesse@redhat.com> - 2.3.4-1
|
||||
- New upstream release
|
||||
|
||||
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.3-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.3-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Tue Jan 14 2014 Jan Friesse <jfriesse@redhat.com> - 2.3.3-1
|
||||
- New upstream release
|
||||
|
||||
* Mon Sep 16 2013 Jan Friesse <jfriesse@redhat.com> - 2.3.2-1
|
||||
- New upstream release
|
||||
|
||||
* Mon Aug 19 2013 Jan Friesse <jfriesse@redhat.com> 2.3.1-3
|
||||
- Resolves: rhbz#998362
|
||||
|
||||
- Fix scheduler pause-detection timeout (rhbz#998362)
|
||||
- merge upstream commit 2740cfd1eac60714601c74df2137fe588b607866 (rhbz#998362)
|
||||
|
||||
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Wed Jul 10 2013 Jan Friesse <jfriesse@redhat.com> - 2.3.1-1
|
||||
- New upstream release
|
||||
- Fix incorrect dates in specfile changelog section
|
||||
|
||||
* Mon Mar 25 2013 Jan Friesse <jfriesse@redhat.com> - 2.3.0-3
|
||||
- Resolves: rhbz#925185
|
||||
|
||||
- Run autogen by default
|
||||
|
||||
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.3.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Fri Jan 18 2013 Jan Friesse <jfriesse@redhat.com> - 2.3.0-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Dec 12 2012 Jan Friesse <jfriesse@redhat.com> - 2.2.0-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Oct 11 2012 Jan Friesse <jfriesse@redhat.com> - 2.1.0-1
|
||||
- New upstream release
|
||||
|
||||
* Fri Aug 3 2012 Steven Dake <sdake@redhat.com> - 2.0.1-3
|
||||
- add groff as a BuildRequires as it is no longer installed in the buildroot
|
||||
|
||||
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.0.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Tue May 22 2012 Jan Friesse <jfriesse@redhat.com> - 2.0.1-1
|
||||
- New upstream release
|
||||
|
||||
* Tue Apr 17 2012 Fabio M. Di Nitto <fdinitto@redhat.com> - 2.0.0-2
|
||||
- Backport IPCS fix from master (ack by Steven)
|
||||
|
||||
* Tue Apr 10 2012 Jan Friesse <jfriesse@redhat.com> - 2.0.0-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Apr 05 2012 Karsten Hopp <karsten@redhat.com> 1.99.9-1.1
|
||||
- bump release and rebuild on PPC
|
||||
|
||||
* Tue Mar 27 2012 Jan Friesse <jfriesse@redhat.com> - 1.99.9-1
|
||||
- New upstream release
|
||||
|
||||
* Fri Mar 16 2012 Jan Friesse <jfriesse@redhat.com> - 1.99.8-1
|
||||
- New upstream release
|
||||
|
||||
* Tue Mar 6 2012 Jan Friesse <jfriesse@redhat.com> - 1.99.7-1
|
||||
- New upstream release
|
||||
|
||||
* Tue Feb 28 2012 Jan Friesse <jfriesse@redhat.com> - 1.99.6-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Feb 22 2012 Jan Friesse <jfriesse@redhat.com> - 1.99.5-1
|
||||
- New upstream release
|
||||
|
||||
* Tue Feb 14 2012 Jan Friesse <jfriesse@redhat.com> - 1.99.4-1
|
||||
- New upstream release
|
||||
|
||||
* Tue Feb 14 2012 Jan Friesse <jfriesse@redhat.com> - 1.99.3-1
|
||||
- New upstream release
|
||||
|
||||
* Tue Feb 7 2012 Fabio M. Di Nitto <fdinitto@redhat.com> - 1.99.2-1
|
||||
- New upstream release
|
||||
- Re-enable xmlconfig bits
|
||||
- Ship cmap man pages
|
||||
- Add workaround to usrmove breakage!!
|
||||
|
||||
* Thu Feb 2 2012 Fabio M. Di Nitto <fdinitto@redhat.com> - 1.99.1-2
|
||||
- Add proper Obsoltes on openais/cman/clusterlib
|
||||
|
||||
* Wed Feb 1 2012 Fabio M. Di Nitto <fdinitto@redhat.com> - 1.99.1-1
|
||||
- New upstream release
|
||||
- Temporary disable xml config (broken upstream tarball)
|
||||
|
||||
* Tue Jan 24 2012 Jan Friesse <jfriesse@redhat.com> - 1.99.0-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||
|
||||
* Thu Oct 06 2011 Jan Friesse <jfriesse@redhat.com> - 1.4.2-1
|
||||
- New upstream release
|
||||
|
||||
* Thu Sep 08 2011 Jan Friesse <jfriesse@redhat.com> - 1.4.1-2
|
||||
- Add upstream fixes
|
||||
|
||||
* Tue Jul 26 2011 Jan Friesse <jfriesse@redhat.com> - 1.4.1-1
|
||||
- New upstream release
|
||||
|
||||
* Wed Jul 20 2011 Jan Friesse <jfriesse@redhat.com> - 1.4.0-2
|
||||
- Change attributes of cluster log directory
|
||||
|
||||
* Tue Jul 19 2011 Jan Friesse <jfriesse@redhat.com> - 1.4.0-1
|
||||
- New upstream release
|
||||
- Resync spec file with upstream changes
|
||||
|
||||
* Fri Jul 08 2011 Jan Friesse <jfriesse@redhat.com> - 1.3.2-1
|
||||
- New upstream release
|
||||
|
||||
* Tue May 10 2011 Fabio M. Di Nitto <fdinitto@redhat.com> - 1.3.1-1
|
||||
- New upstream release
|
||||
|
||||
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3.0-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Thu Dec 2 2010 Fabio M. Di Nitto <fdinitto@redhat.com> - 1.3.0-1
|
||||
- New upstream release
|
||||
- drop upstream patch revision-2770.patch now included in release
|
||||
- update spec file to ship corosync-blackbox
|
||||
|
||||
* Thu Sep 2 2010 Fabio M. Di Nitto <fdinitto@redhat.com> - 1.2.8-1
|
||||
- New upstream release
|
||||
|
||||
|
|
@ -660,7 +267,7 @@ network splits)
|
|||
- New upstream release
|
||||
- Use global instead of define
|
||||
- Update Source0 url
|
||||
- Use more name macro around
|
||||
- Use more %name macro around
|
||||
- Cleanup install section. Init script is now installed by upstream
|
||||
- Cleanup whitespace
|
||||
- Don't deadlock between package upgrade and corosync condrestart
|
||||
|
|
@ -811,7 +418,7 @@ network splits)
|
|||
* Mon Oct 13 2008 Dennis Gilmore <dennis@ausil.us> - 0.92-3
|
||||
- remove ExclusiveArch line
|
||||
|
||||
* Wed Sep 24 2008 Steven Dake <sdake@redhat.com> - 0.92-2
|
||||
* Fri Sep 24 2008 Steven Dake <sdake@redhat.com> - 0.92-2
|
||||
- Add conflicts for openais and openais-devel packages older then 0.90.
|
||||
|
||||
* Wed Sep 24 2008 Steven Dake <sdake@redhat.com> - 0.92-1
|
||||
|
|
|
|||
15
gating.yaml
15
gating.yaml
|
|
@ -1,15 +0,0 @@
|
|||
--- !Policy
|
||||
product_versions:
|
||||
- fedora-*
|
||||
decision_context: bodhi_update_push_testing
|
||||
subject_type: koji_build
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
|
||||
|
||||
--- !Policy
|
||||
product_versions:
|
||||
- fedora-*
|
||||
decision_context: bodhi_update_push_stable
|
||||
subject_type: koji_build
|
||||
rules:
|
||||
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
|
||||
811
revision-2770.patch
Normal file
811
revision-2770.patch
Normal file
|
|
@ -0,0 +1,811 @@
|
|||
Index: include/corosync/ipc_cpg.h
|
||||
===================================================================
|
||||
--- include/corosync/ipc_cpg.h (revision 2769)
|
||||
+++ include/corosync/ipc_cpg.h (revision 2770)
|
||||
@@ -65,6 +65,7 @@
|
||||
MESSAGE_RES_CPG_ITERATIONNEXT = 10,
|
||||
MESSAGE_RES_CPG_ITERATIONFINALIZE = 11,
|
||||
MESSAGE_RES_CPG_FINALIZE = 12,
|
||||
+ MESSAGE_RES_CPG_TOTEM_CONFCHG_CALLBACK = 13,
|
||||
};
|
||||
|
||||
enum lib_cpg_confchg_reason {
|
||||
@@ -149,10 +150,24 @@
|
||||
marshall_from_mar_cpg_name_t (&dest->group, &src->group);
|
||||
};
|
||||
|
||||
+typedef struct {
|
||||
+ mar_uint32_t nodeid __attribute__((aligned(8)));
|
||||
+ mar_uint64_t seq __attribute__((aligned(8)));
|
||||
+} mar_cpg_ring_id_t;
|
||||
+
|
||||
+static inline void marshall_from_mar_cpg_ring_id_t (
|
||||
+ struct cpg_ring_id *dest,
|
||||
+ const mar_cpg_ring_id_t *src)
|
||||
+{
|
||||
+ dest->nodeid = src->nodeid;
|
||||
+ dest->seq = src->seq;
|
||||
+}
|
||||
+
|
||||
struct req_lib_cpg_join {
|
||||
coroipc_request_header_t header __attribute__((aligned(8)));
|
||||
mar_cpg_name_t group_name __attribute__((aligned(8)));
|
||||
mar_uint32_t pid __attribute__((aligned(8)));
|
||||
+ mar_uint32_t flags __attribute__((aligned(8)));
|
||||
};
|
||||
|
||||
struct res_lib_cpg_join {
|
||||
@@ -238,6 +253,13 @@
|
||||
// struct cpg_address joined_list[];
|
||||
};
|
||||
|
||||
+struct res_lib_cpg_totem_confchg_callback {
|
||||
+ coroipc_response_header_t header __attribute__((aligned(8)));
|
||||
+ mar_cpg_ring_id_t ring_id __attribute__((aligned(8)));
|
||||
+ mar_uint32_t member_list_entries __attribute__((aligned(8)));
|
||||
+ mar_uint32_t member_list[];
|
||||
+};
|
||||
+
|
||||
struct req_lib_cpg_leave {
|
||||
coroipc_request_header_t header __attribute__((aligned(8)));
|
||||
mar_cpg_name_t group_name __attribute__((aligned(8)));
|
||||
Index: include/corosync/cpg.h
|
||||
===================================================================
|
||||
--- include/corosync/cpg.h (revision 2769)
|
||||
+++ include/corosync/cpg.h (revision 2770)
|
||||
@@ -78,6 +78,10 @@
|
||||
CPG_ITERATION_ALL = 3,
|
||||
} cpg_iteration_type_t;
|
||||
|
||||
+typedef enum {
|
||||
+ CPG_MODEL_V1 = 1,
|
||||
+} cpg_model_t;
|
||||
+
|
||||
struct cpg_address {
|
||||
uint32_t nodeid;
|
||||
uint32_t pid;
|
||||
@@ -98,6 +102,11 @@
|
||||
uint32_t pid;
|
||||
};
|
||||
|
||||
+struct cpg_ring_id {
|
||||
+ uint32_t nodeid;
|
||||
+ uint64_t seq;
|
||||
+};
|
||||
+
|
||||
typedef void (*cpg_deliver_fn_t) (
|
||||
cpg_handle_t handle,
|
||||
const struct cpg_name *group_name,
|
||||
@@ -117,11 +126,32 @@
|
||||
const struct cpg_address *left_list, size_t left_list_entries,
|
||||
const struct cpg_address *joined_list, size_t joined_list_entries);
|
||||
|
||||
+typedef void (*cpg_totem_confchg_fn_t) (
|
||||
+ cpg_handle_t handle,
|
||||
+ struct cpg_ring_id ring_id,
|
||||
+ uint32_t member_list_entries,
|
||||
+ const uint32_t *member_list);
|
||||
+
|
||||
typedef struct {
|
||||
cpg_deliver_fn_t cpg_deliver_fn;
|
||||
cpg_confchg_fn_t cpg_confchg_fn;
|
||||
} cpg_callbacks_t;
|
||||
|
||||
+typedef struct {
|
||||
+ cpg_model_t model;
|
||||
+} cpg_model_data_t;
|
||||
+
|
||||
+#define CPG_MODEL_V1_DELIVER_INITIAL_TOTEM_CONF 0x01
|
||||
+
|
||||
+typedef struct {
|
||||
+ cpg_model_t model;
|
||||
+ cpg_deliver_fn_t cpg_deliver_fn;
|
||||
+ cpg_confchg_fn_t cpg_confchg_fn;
|
||||
+ cpg_totem_confchg_fn_t cpg_totem_confchg_fn;
|
||||
+ unsigned int flags;
|
||||
+} cpg_model_v1_data_t;
|
||||
+
|
||||
+
|
||||
/** @} */
|
||||
|
||||
/*
|
||||
@@ -132,6 +162,15 @@
|
||||
cpg_callbacks_t *callbacks);
|
||||
|
||||
/*
|
||||
+ * Create a new cpg connection, initialize with model
|
||||
+ */
|
||||
+cs_error_t cpg_model_initialize (
|
||||
+ cpg_handle_t *handle,
|
||||
+ cpg_model_t model,
|
||||
+ cpg_model_data_t *model_data,
|
||||
+ void *context);
|
||||
+
|
||||
+/*
|
||||
* Close the cpg handle
|
||||
*/
|
||||
cs_error_t cpg_finalize (
|
||||
Index: services/cpg.c
|
||||
===================================================================
|
||||
--- services/cpg.c (revision 2769)
|
||||
+++ services/cpg.c (revision 2770)
|
||||
@@ -133,6 +133,8 @@
|
||||
mar_cpg_name_t group_name;
|
||||
uint32_t pid;
|
||||
enum cpd_state cpd_state;
|
||||
+ unsigned int flags;
|
||||
+ int initial_totem_conf_sent;
|
||||
struct list_head list;
|
||||
struct list_head iteration_instance_list_head;
|
||||
};
|
||||
@@ -160,6 +162,8 @@
|
||||
|
||||
static enum cpg_sync_state my_sync_state = CPGSYNC_DOWNLIST;
|
||||
|
||||
+static mar_cpg_ring_id_t last_sync_ring_id;
|
||||
+
|
||||
struct process_info {
|
||||
unsigned int nodeid;
|
||||
uint32_t pid;
|
||||
@@ -255,6 +259,11 @@
|
||||
|
||||
static void cpg_sync_abort (void);
|
||||
|
||||
+static int notify_lib_totem_membership (
|
||||
+ void *conn,
|
||||
+ int member_list_entries,
|
||||
+ const unsigned int *member_list);
|
||||
+
|
||||
/*
|
||||
* Library Handler Definition
|
||||
*/
|
||||
@@ -432,6 +441,9 @@
|
||||
sizeof (unsigned int));
|
||||
my_member_list_entries = member_list_entries;
|
||||
|
||||
+ last_sync_ring_id.nodeid = ring_id->rep.nodeid;
|
||||
+ last_sync_ring_id.seq = ring_id->seq;
|
||||
+
|
||||
for (i = 0; i < my_member_list_entries; i++) {
|
||||
if (my_member_list[i] < lowest_nodeid) {
|
||||
lowest_nodeid = my_member_list[i];
|
||||
@@ -482,14 +494,51 @@
|
||||
memcpy (my_old_member_list, my_member_list,
|
||||
my_member_list_entries * sizeof (unsigned int));
|
||||
my_old_member_list_entries = my_member_list_entries;
|
||||
+
|
||||
+ notify_lib_totem_membership (NULL, my_member_list_entries, my_member_list);
|
||||
}
|
||||
|
||||
static void cpg_sync_abort (void)
|
||||
{
|
||||
}
|
||||
|
||||
+static int notify_lib_totem_membership (
|
||||
+ void *conn,
|
||||
+ int member_list_entries,
|
||||
+ const unsigned int *member_list)
|
||||
+{
|
||||
+ struct list_head *iter;
|
||||
+ char *buf;
|
||||
+ int size;
|
||||
+ struct res_lib_cpg_totem_confchg_callback *res;
|
||||
|
||||
+ size = sizeof(struct res_lib_cpg_totem_confchg_callback) +
|
||||
+ sizeof(mar_uint32_t) * (member_list_entries);
|
||||
+ buf = alloca(size);
|
||||
+ if (!buf)
|
||||
+ return CPG_ERR_LIBRARY;
|
||||
|
||||
+ res = (struct res_lib_cpg_totem_confchg_callback *)buf;
|
||||
+ res->member_list_entries = member_list_entries;
|
||||
+ res->header.size = size;
|
||||
+ res->header.id = MESSAGE_RES_CPG_TOTEM_CONFCHG_CALLBACK;
|
||||
+ res->header.error = CS_OK;
|
||||
+
|
||||
+ memcpy (&res->ring_id, &last_sync_ring_id, sizeof (mar_cpg_ring_id_t));
|
||||
+ memcpy (res->member_list, member_list, res->member_list_entries * sizeof (mar_uint32_t));
|
||||
+
|
||||
+ if (conn == NULL) {
|
||||
+ for (iter = cpg_pd_list_head.next; iter != &cpg_pd_list_head; iter = iter->next) {
|
||||
+ struct cpg_pd *cpg_pd = list_entry (iter, struct cpg_pd, list);
|
||||
+ api->ipc_dispatch_send (cpg_pd->conn, buf, size);
|
||||
+ }
|
||||
+ } else {
|
||||
+ api->ipc_dispatch_send (conn, buf, size);
|
||||
+ }
|
||||
+
|
||||
+ return CPG_OK;
|
||||
+}
|
||||
+
|
||||
static int notify_lib_joinlist(
|
||||
const mar_cpg_name_t *group_name,
|
||||
void *conn,
|
||||
@@ -604,6 +653,20 @@
|
||||
}
|
||||
}
|
||||
|
||||
+
|
||||
+ /*
|
||||
+ * Traverse thru cpds and send totem membership for cpd, where it is not send yet
|
||||
+ */
|
||||
+ for (iter = cpg_pd_list_head.next; iter != &cpg_pd_list_head; iter = iter->next) {
|
||||
+ struct cpg_pd *cpd = list_entry (iter, struct cpg_pd, list);
|
||||
+
|
||||
+ if ((cpd->flags & CPG_MODEL_V1_DELIVER_INITIAL_TOTEM_CONF) && (cpd->initial_totem_conf_sent == 0)) {
|
||||
+ cpd->initial_totem_conf_sent = 1;
|
||||
+
|
||||
+ notify_lib_totem_membership (cpd->conn, my_old_member_list_entries, my_old_member_list);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
return CPG_OK;
|
||||
}
|
||||
|
||||
@@ -1093,6 +1156,7 @@
|
||||
error = CPG_OK;
|
||||
cpd->cpd_state = CPD_STATE_JOIN_STARTED;
|
||||
cpd->pid = req_lib_cpg_join->pid;
|
||||
+ cpd->flags = req_lib_cpg_join->flags;
|
||||
memcpy (&cpd->group_name, &req_lib_cpg_join->group_name,
|
||||
sizeof (cpd->group_name));
|
||||
|
||||
Index: lib/cpg.c
|
||||
===================================================================
|
||||
--- lib/cpg.c (revision 2769)
|
||||
+++ lib/cpg.c (revision 2770)
|
||||
@@ -62,8 +62,11 @@
|
||||
struct cpg_inst {
|
||||
hdb_handle_t handle;
|
||||
int finalize;
|
||||
- cpg_callbacks_t callbacks;
|
||||
void *context;
|
||||
+ union {
|
||||
+ cpg_model_data_t model_data;
|
||||
+ cpg_model_v1_data_t model_v1_data;
|
||||
+ };
|
||||
struct list_head iteration_list_head;
|
||||
};
|
||||
|
||||
@@ -118,9 +121,32 @@
|
||||
cpg_handle_t *handle,
|
||||
cpg_callbacks_t *callbacks)
|
||||
{
|
||||
+ cpg_model_v1_data_t model_v1_data;
|
||||
+
|
||||
+ memset (&model_v1_data, 0, sizeof (cpg_model_v1_data_t));
|
||||
+
|
||||
+ if (callbacks) {
|
||||
+ model_v1_data.cpg_deliver_fn = callbacks->cpg_deliver_fn;
|
||||
+ model_v1_data.cpg_confchg_fn = callbacks->cpg_confchg_fn;
|
||||
+ }
|
||||
+
|
||||
+ return (cpg_model_initialize (handle, CPG_MODEL_V1, (cpg_model_data_t *)&model_v1_data, NULL));
|
||||
+}
|
||||
+
|
||||
+cs_error_t cpg_model_initialize (
|
||||
+ cpg_handle_t *handle,
|
||||
+ cpg_model_t model,
|
||||
+ cpg_model_data_t *model_data,
|
||||
+ void *context)
|
||||
+{
|
||||
cs_error_t error;
|
||||
struct cpg_inst *cpg_inst;
|
||||
|
||||
+ if (model != CPG_MODEL_V1) {
|
||||
+ error = CPG_ERR_INVALID_PARAM;
|
||||
+ goto error_no_destroy;
|
||||
+ }
|
||||
+
|
||||
error = hdb_error_to_cs (hdb_handle_create (&cpg_handle_t_db, sizeof (struct cpg_inst), handle));
|
||||
if (error != CS_OK) {
|
||||
goto error_no_destroy;
|
||||
@@ -142,10 +168,26 @@
|
||||
goto error_put_destroy;
|
||||
}
|
||||
|
||||
- if (callbacks) {
|
||||
- memcpy (&cpg_inst->callbacks, callbacks, sizeof (cpg_callbacks_t));
|
||||
+ if (model_data != NULL) {
|
||||
+ switch (model) {
|
||||
+ case CPG_MODEL_V1:
|
||||
+ memcpy (&cpg_inst->model_v1_data, model_data, sizeof (cpg_model_v1_data_t));
|
||||
+ if ((cpg_inst->model_v1_data.flags & ~(CPG_MODEL_V1_DELIVER_INITIAL_TOTEM_CONF)) != 0) {
|
||||
+ error = CS_ERR_INVALID_PARAM;
|
||||
+
|
||||
+ goto error_destroy;
|
||||
+ }
|
||||
+ break;
|
||||
+ default:
|
||||
+ error = CS_ERR_LIBRARY;
|
||||
+ goto error_destroy;
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
|
||||
+ cpg_inst->model_data.model = model;
|
||||
+ cpg_inst->context = context;
|
||||
+
|
||||
list_init(&cpg_inst->iteration_list_head);
|
||||
|
||||
hdb_handle_put (&cpg_handle_t_db, *handle);
|
||||
@@ -283,7 +325,8 @@
|
||||
struct cpg_inst *cpg_inst;
|
||||
struct res_lib_cpg_confchg_callback *res_cpg_confchg_callback;
|
||||
struct res_lib_cpg_deliver_callback *res_cpg_deliver_callback;
|
||||
- cpg_callbacks_t callbacks;
|
||||
+ struct res_lib_cpg_totem_confchg_callback *res_cpg_totem_confchg_callback;
|
||||
+ struct cpg_inst cpg_inst_copy;
|
||||
coroipc_response_header_t *dispatch_data;
|
||||
struct cpg_address member_list[CPG_MEMBERS_MAX];
|
||||
struct cpg_address left_list[CPG_MEMBERS_MAX];
|
||||
@@ -292,6 +335,8 @@
|
||||
mar_cpg_address_t *left_list_start;
|
||||
mar_cpg_address_t *joined_list_start;
|
||||
unsigned int i;
|
||||
+ struct cpg_ring_id ring_id;
|
||||
+ uint32_t totem_member_list[CPG_MEMBERS_MAX];
|
||||
|
||||
error = hdb_error_to_cs (hdb_handle_get (&cpg_handle_t_db, handle, (void *)&cpg_inst));
|
||||
if (error != CS_OK) {
|
||||
@@ -332,74 +377,96 @@
|
||||
* A risk of this dispatch method is that the callback routines may
|
||||
* operate at the same time that cpgFinalize has been called.
|
||||
*/
|
||||
- memcpy (&callbacks, &cpg_inst->callbacks, sizeof (cpg_callbacks_t));
|
||||
- /*
|
||||
- * Dispatch incoming message
|
||||
- */
|
||||
- switch (dispatch_data->id) {
|
||||
- case MESSAGE_RES_CPG_DELIVER_CALLBACK:
|
||||
- if (callbacks.cpg_deliver_fn == NULL) {
|
||||
+ memcpy (&cpg_inst_copy, cpg_inst, sizeof (struct cpg_inst));
|
||||
+
|
||||
+ switch (cpg_inst_copy.model_data.model) {
|
||||
+ case CPG_MODEL_V1:
|
||||
+ /*
|
||||
+ * Dispatch incoming message
|
||||
+ */
|
||||
+ switch (dispatch_data->id) {
|
||||
+ case MESSAGE_RES_CPG_DELIVER_CALLBACK:
|
||||
+ if (cpg_inst_copy.model_v1_data.cpg_deliver_fn == NULL) {
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ res_cpg_deliver_callback = (struct res_lib_cpg_deliver_callback *)dispatch_data;
|
||||
+
|
||||
+ marshall_from_mar_cpg_name_t (
|
||||
+ &group_name,
|
||||
+ &res_cpg_deliver_callback->group_name);
|
||||
+
|
||||
+ cpg_inst_copy.model_v1_data.cpg_deliver_fn (handle,
|
||||
+ &group_name,
|
||||
+ res_cpg_deliver_callback->nodeid,
|
||||
+ res_cpg_deliver_callback->pid,
|
||||
+ &res_cpg_deliver_callback->message,
|
||||
+ res_cpg_deliver_callback->msglen);
|
||||
break;
|
||||
- }
|
||||
|
||||
- res_cpg_deliver_callback = (struct res_lib_cpg_deliver_callback *)dispatch_data;
|
||||
+ case MESSAGE_RES_CPG_CONFCHG_CALLBACK:
|
||||
+ if (cpg_inst_copy.model_v1_data.cpg_confchg_fn == NULL) {
|
||||
+ break;
|
||||
+ }
|
||||
|
||||
- marshall_from_mar_cpg_name_t (
|
||||
- &group_name,
|
||||
- &res_cpg_deliver_callback->group_name);
|
||||
+ res_cpg_confchg_callback = (struct res_lib_cpg_confchg_callback *)dispatch_data;
|
||||
|
||||
- callbacks.cpg_deliver_fn (handle,
|
||||
- &group_name,
|
||||
- res_cpg_deliver_callback->nodeid,
|
||||
- res_cpg_deliver_callback->pid,
|
||||
- &res_cpg_deliver_callback->message,
|
||||
- res_cpg_deliver_callback->msglen);
|
||||
- break;
|
||||
+ for (i = 0; i < res_cpg_confchg_callback->member_list_entries; i++) {
|
||||
+ marshall_from_mar_cpg_address_t (&member_list[i],
|
||||
+ &res_cpg_confchg_callback->member_list[i]);
|
||||
+ }
|
||||
+ left_list_start = res_cpg_confchg_callback->member_list +
|
||||
+ res_cpg_confchg_callback->member_list_entries;
|
||||
+ for (i = 0; i < res_cpg_confchg_callback->left_list_entries; i++) {
|
||||
+ marshall_from_mar_cpg_address_t (&left_list[i],
|
||||
+ &left_list_start[i]);
|
||||
+ }
|
||||
+ joined_list_start = res_cpg_confchg_callback->member_list +
|
||||
+ res_cpg_confchg_callback->member_list_entries +
|
||||
+ res_cpg_confchg_callback->left_list_entries;
|
||||
+ for (i = 0; i < res_cpg_confchg_callback->joined_list_entries; i++) {
|
||||
+ marshall_from_mar_cpg_address_t (&joined_list[i],
|
||||
+ &joined_list_start[i]);
|
||||
+ }
|
||||
+ marshall_from_mar_cpg_name_t (
|
||||
+ &group_name,
|
||||
+ &res_cpg_confchg_callback->group_name);
|
||||
|
||||
- case MESSAGE_RES_CPG_CONFCHG_CALLBACK:
|
||||
- if (callbacks.cpg_confchg_fn == NULL) {
|
||||
+ cpg_inst_copy.model_v1_data.cpg_confchg_fn (handle,
|
||||
+ &group_name,
|
||||
+ member_list,
|
||||
+ res_cpg_confchg_callback->member_list_entries,
|
||||
+ left_list,
|
||||
+ res_cpg_confchg_callback->left_list_entries,
|
||||
+ joined_list,
|
||||
+ res_cpg_confchg_callback->joined_list_entries);
|
||||
+
|
||||
break;
|
||||
- }
|
||||
+ case MESSAGE_RES_CPG_TOTEM_CONFCHG_CALLBACK:
|
||||
+ if (cpg_inst_copy.model_v1_data.cpg_totem_confchg_fn == NULL) {
|
||||
+ break;
|
||||
+ }
|
||||
|
||||
- res_cpg_confchg_callback = (struct res_lib_cpg_confchg_callback *)dispatch_data;
|
||||
+ res_cpg_totem_confchg_callback = (struct res_lib_cpg_totem_confchg_callback *)dispatch_data;
|
||||
|
||||
- for (i = 0; i < res_cpg_confchg_callback->member_list_entries; i++) {
|
||||
- marshall_from_mar_cpg_address_t (&member_list[i],
|
||||
- &res_cpg_confchg_callback->member_list[i]);
|
||||
- }
|
||||
- left_list_start = res_cpg_confchg_callback->member_list +
|
||||
- res_cpg_confchg_callback->member_list_entries;
|
||||
- for (i = 0; i < res_cpg_confchg_callback->left_list_entries; i++) {
|
||||
- marshall_from_mar_cpg_address_t (&left_list[i],
|
||||
- &left_list_start[i]);
|
||||
- }
|
||||
- joined_list_start = res_cpg_confchg_callback->member_list +
|
||||
- res_cpg_confchg_callback->member_list_entries +
|
||||
- res_cpg_confchg_callback->left_list_entries;
|
||||
- for (i = 0; i < res_cpg_confchg_callback->joined_list_entries; i++) {
|
||||
- marshall_from_mar_cpg_address_t (&joined_list[i],
|
||||
- &joined_list_start[i]);
|
||||
- }
|
||||
- marshall_from_mar_cpg_name_t (
|
||||
- &group_name,
|
||||
- &res_cpg_confchg_callback->group_name);
|
||||
+ marshall_from_mar_cpg_ring_id_t (&ring_id, &res_cpg_totem_confchg_callback->ring_id);
|
||||
+ for (i = 0; i < res_cpg_totem_confchg_callback->member_list_entries; i++) {
|
||||
+ totem_member_list[i] = res_cpg_totem_confchg_callback->member_list[i];
|
||||
+ }
|
||||
|
||||
- callbacks.cpg_confchg_fn (handle,
|
||||
- &group_name,
|
||||
- member_list,
|
||||
- res_cpg_confchg_callback->member_list_entries,
|
||||
- left_list,
|
||||
- res_cpg_confchg_callback->left_list_entries,
|
||||
- joined_list,
|
||||
- res_cpg_confchg_callback->joined_list_entries);
|
||||
- break;
|
||||
-
|
||||
- default:
|
||||
- coroipcc_dispatch_put (cpg_inst->handle);
|
||||
- error = CS_ERR_LIBRARY;
|
||||
- goto error_put;
|
||||
- break;
|
||||
- }
|
||||
+ cpg_inst_copy.model_v1_data.cpg_totem_confchg_fn (handle,
|
||||
+ ring_id,
|
||||
+ res_cpg_totem_confchg_callback->member_list_entries,
|
||||
+ totem_member_list);
|
||||
+ break;
|
||||
+ default:
|
||||
+ coroipcc_dispatch_put (cpg_inst->handle);
|
||||
+ error = CS_ERR_LIBRARY;
|
||||
+ goto error_put;
|
||||
+ break;
|
||||
+ } /* - switch (dispatch_data->id) */
|
||||
+ break; /* case CPG_MODEL_V1 */
|
||||
+ } /* - switch (cpg_inst_copy.model_data.model) */
|
||||
coroipcc_dispatch_put (cpg_inst->handle);
|
||||
|
||||
/*
|
||||
@@ -434,6 +501,14 @@
|
||||
req_lib_cpg_join.header.size = sizeof (struct req_lib_cpg_join);
|
||||
req_lib_cpg_join.header.id = MESSAGE_REQ_CPG_JOIN;
|
||||
req_lib_cpg_join.pid = getpid();
|
||||
+ req_lib_cpg_join.flags = 0;
|
||||
+
|
||||
+ switch (cpg_inst->model_data.model) {
|
||||
+ case CPG_MODEL_V1:
|
||||
+ req_lib_cpg_join.flags = cpg_inst->model_v1_data.flags;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
marshall_to_mar_cpg_name_t (&req_lib_cpg_join.group_name,
|
||||
group);
|
||||
|
||||
Index: lib/libcpg.verso
|
||||
===================================================================
|
||||
--- lib/libcpg.verso (revision 2769)
|
||||
+++ lib/libcpg.verso (revision 2770)
|
||||
@@ -1 +1 @@
|
||||
-4.0.1
|
||||
+4.1.0
|
||||
Index: man/cpg_initialize.3
|
||||
===================================================================
|
||||
--- man/cpg_initialize.3 (revision 2769)
|
||||
+++ man/cpg_initialize.3 (revision 2770)
|
||||
@@ -41,7 +41,10 @@
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.B cpg_initialize
|
||||
-function is used to initialize a connection to the closed process groups API.
|
||||
+function is used to initialize a connection to the closed process groups API. This function is deprecated
|
||||
+and
|
||||
+.B cpg_model_initialize
|
||||
+should be used in newly written code.
|
||||
.PP
|
||||
Each application may have several connections to the CPG API. Each application
|
||||
uses the
|
||||
@@ -167,5 +170,6 @@
|
||||
.BR cpg_context_get (3)
|
||||
.BR cpg_context_set (3)
|
||||
.BR cpg_local_get (3)
|
||||
+.BR cpg_model_initialize (3)
|
||||
|
||||
.PP
|
||||
Index: man/cpg_overview.8
|
||||
===================================================================
|
||||
--- man/cpg_overview.8 (revision 2769)
|
||||
+++ man/cpg_overview.8 (revision 2770)
|
||||
@@ -61,6 +61,7 @@
|
||||
.BR cpg_join (3),
|
||||
.BR cpg_leave (3),
|
||||
.BR cpg_mcast_joined (3),
|
||||
+.BR cpg_model_initialize (3),
|
||||
.BR cpg_membership_get (3)
|
||||
.BR cpg_zcb_alloc (3)
|
||||
.BR cpg_zcb_free (3)
|
||||
Index: man/cpg_model_initialize.3
|
||||
===================================================================
|
||||
--- man/cpg_model_initialize.3 (revision 0)
|
||||
+++ man/cpg_model_initialize.3 (revision 2770)
|
||||
@@ -0,0 +1,231 @@
|
||||
+.\"/*
|
||||
+.\" * Copyright (c) 2010 Red Hat, Inc.
|
||||
+.\" *
|
||||
+.\" * All rights reserved.
|
||||
+.\" *
|
||||
+.\" * Author: Jan Friesse <jfriesse@redhat.com>
|
||||
+.\" * Author: Christine Caulfield <ccaulfie@redhat.com>
|
||||
+.\" *
|
||||
+.\" * This software licensed under BSD license, the text of which follows:
|
||||
+.\" *
|
||||
+.\" * Redistribution and use in source and binary forms, with or without
|
||||
+.\" * modification, are permitted provided that the following conditions are met:
|
||||
+.\" *
|
||||
+.\" * - Redistributions of source code must retain the above copyright notice,
|
||||
+.\" * this list of conditions and the following disclaimer.
|
||||
+.\" * - Redistributions in binary form must reproduce the above copyright notice,
|
||||
+.\" * this list of conditions and the following disclaimer in the documentation
|
||||
+.\" * and/or other materials provided with the distribution.
|
||||
+.\" * - Neither the name of the MontaVista Software, Inc. nor the names of its
|
||||
+.\" * contributors may be used to endorse or promote products derived from this
|
||||
+.\" * software without specific prior written permission.
|
||||
+.\" *
|
||||
+.\" * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
+.\" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
+.\" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
+.\" * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
+.\" * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
+.\" * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
+.\" * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
+.\" * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
+.\" * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
+.\" * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
||||
+.\" * THE POSSIBILITY OF SUCH DAMAGE.
|
||||
+.\" */
|
||||
+.TH CPG_MODEL_INITIALIZE 3 2010-04-07 "corosync Man Page" "Corosync Cluster Engine Programmer's Manual"
|
||||
+.SH NAME
|
||||
+cpg_model_initialize \- Create a new connection to the CPG service
|
||||
+.SH SYNOPSIS
|
||||
+.B #include <corosync/cpg.h>
|
||||
+.sp
|
||||
+.BI "cs_error_t cpg_model_initialize(cpg_handle_t *" handle ", cpg_model_t " model ", cpg_model_data_t *" model_data ", void *" context ");
|
||||
+
|
||||
+.SH DESCRIPTION
|
||||
+The
|
||||
+.B cpg_model_initialize
|
||||
+function is used to initialize a connection to the closed process groups API.
|
||||
+.PP
|
||||
+Each application may have several connections to the CPG API. Each application
|
||||
+uses the
|
||||
+.I handle
|
||||
+argument to uniquely identify the connection. The
|
||||
+.I handle
|
||||
+argument is then used in other function calls to identify the connection to be used
|
||||
+for communication with the CPG service.
|
||||
+.PP
|
||||
+Argument
|
||||
+.I model
|
||||
+is used to explicitly choose set of callbacks and internal parameters. Currently only model
|
||||
+.I CPG_MODEL_V1
|
||||
+is defined.
|
||||
+.PP
|
||||
+Callbacks and internal parameters are passed by
|
||||
+.I model_data
|
||||
+argument. This is casted pointer (idea is similar as in sockaddr function) to one of structures
|
||||
+corresponding to chosen model. Currently only
|
||||
+.I cpg_model_v1_data_t
|
||||
+is needed.
|
||||
+.SH MODEL_V1
|
||||
+The
|
||||
+.I MODEL_V1
|
||||
+is backwards compatible with original callbacks initialized by
|
||||
+.I cpg_initialize
|
||||
+but new callback
|
||||
+.I cpg_totem_confchg_fn
|
||||
+is defined.
|
||||
+.PP
|
||||
+Every time an CPG event occurs within the joined group, one of the callbacks specified by the argument
|
||||
+.I callbacks
|
||||
+is called. The callback functions are described by the following type definitions:
|
||||
+.PP
|
||||
+.PP
|
||||
+.IP
|
||||
+.RS
|
||||
+.ne 18
|
||||
+.nf
|
||||
+.ta 4n 20n 32n
|
||||
+
|
||||
+typedef void (*cpg_deliver_fn_t) (
|
||||
+ cpg_handle_t handle,
|
||||
+ const struct cpg_name *group_name,
|
||||
+ uint32_t nodeid,
|
||||
+ uint32_t pid,
|
||||
+ const void *msg,
|
||||
+ size_t msg_len);
|
||||
+
|
||||
+
|
||||
+typedef void (*cpg_confchg_fn_t) (
|
||||
+ cpg_handle_t handle,
|
||||
+ const struct cpg_name *group_name,
|
||||
+ const struct cpg_address *member_list, size_t member_list_entries,
|
||||
+ const struct cpg_address *left_list, size_t left_list_entries,
|
||||
+ const struct cpg_address *joined_list, size_t joined_list_entries);
|
||||
+
|
||||
+
|
||||
+typedef void (*cpg_totem_confchg_fn_t) (
|
||||
+ cpg_handle_t handle,
|
||||
+ struct cpg_ring_id ring_id,
|
||||
+ uint32_t member_list_entries,
|
||||
+ const uint32_t *member_list);
|
||||
+.ta
|
||||
+.fi
|
||||
+.RE
|
||||
+.IP
|
||||
+.PP
|
||||
+.PP
|
||||
+The
|
||||
+.I cpg_model_v1_data_t
|
||||
+structure is defined as:
|
||||
+.IP
|
||||
+.RS
|
||||
+.ne 18
|
||||
+.nf
|
||||
+.PP
|
||||
+typedef struct {
|
||||
+ cpg_model_t model;
|
||||
+ cpg_deliver_fn_t cpg_deliver_fn;
|
||||
+ cpg_confchg_fn_t cpg_confchg_fn;
|
||||
+ cpg_totem_confchg_fn_t cpg_totem_confchg_fn;
|
||||
+ unsigned int flags;
|
||||
+} cpg_model_v1_data_t;
|
||||
+.ta
|
||||
+.fi
|
||||
+.RE
|
||||
+.IP
|
||||
+.PP
|
||||
+When a configuration change occurs or a message is to be delivered one of the callbacks
|
||||
+is called from the
|
||||
+.B cpg_dispatch()
|
||||
+function. If a configuration change occurs,
|
||||
+.I cpg_confchg_fn
|
||||
+is called. If a delivery of a message occurs,
|
||||
+.I cpg_deliver_fn
|
||||
+is called.
|
||||
+When totem membership change occurs,
|
||||
+.I cpg_totem_confchg_fn
|
||||
+is called. You can OR
|
||||
+.I CPG_MODEL_V1_DELIVER_INITIAL_TOTEM_CONF
|
||||
+constant to flags to get callback after first confchg event.
|
||||
+
|
||||
+The
|
||||
+.I cpg_address
|
||||
+structure is defined
|
||||
+.IP
|
||||
+.RS
|
||||
+.ne 18
|
||||
+.nf
|
||||
+.PP
|
||||
+struct cpg_address {
|
||||
+ unsigned int nodeid;
|
||||
+ unsigned int pid;
|
||||
+ unsigned int reason;
|
||||
+};
|
||||
+.ta
|
||||
+.fi
|
||||
+.RE
|
||||
+.IP
|
||||
+.PP
|
||||
+where nodeid is a 32 bit unique node identifier, pid is the process ID of the process that has joined/left the group
|
||||
+or sent the message, and reason is an integer code indicating why the node joined/left the group.
|
||||
+.PP
|
||||
+.IP
|
||||
+.RS
|
||||
+.ne 18
|
||||
+.nf
|
||||
+.PP
|
||||
+CPG_REASON_JOIN - the process joined a group using cpg_join().
|
||||
+CPG_REASON_LEAVE - the process left a group using cpg_leave()
|
||||
+CPG_REASON_NODEDOWN - the process left a group because the node left the cluster.
|
||||
+CPG_REASON_NODEUP - the process joined a group because it was already a member of a group on a node that has just joined the cluster
|
||||
+CPG_REASON_PROCDOWN - the process left a group without calling cpg_leave()
|
||||
+.ta
|
||||
+.fi
|
||||
+.RE
|
||||
+.IP
|
||||
+.PP
|
||||
+The
|
||||
+.I cpg_ring_id
|
||||
+structure is defined
|
||||
+.IP
|
||||
+.RS
|
||||
+.ne 18
|
||||
+.nf
|
||||
+.PP
|
||||
+struct cpg_ring_id {
|
||||
+ uint32_t nodeid;
|
||||
+ uint64_t seq;
|
||||
+};
|
||||
+.ta
|
||||
+.fi
|
||||
+.RE
|
||||
+.IP
|
||||
+.PP
|
||||
+where
|
||||
+.I nodeid
|
||||
+is if of node of current Totem leader and seq is increasing number.
|
||||
+
|
||||
+.PP
|
||||
+.SH RETURN VALUE
|
||||
+This call returns the CPG_OK value if successful, otherwise an error is returned.
|
||||
+.PP
|
||||
+.SH ERRORS
|
||||
+The errors are undocumented.
|
||||
+.SH "SEE ALSO"
|
||||
+.BR cpg_overview (8),
|
||||
+.BR cpg_initialize (3),
|
||||
+.BR cpg_finalize (3),
|
||||
+.BR cpg_fd_get (3),
|
||||
+.BR cpg_dispatch (3),
|
||||
+.BR cpg_join (3),
|
||||
+.BR cpg_leave (3),
|
||||
+.BR cpg_mcast_joined (3),
|
||||
+.BR cpg_membership_get (3)
|
||||
+.BR cpg_zcb_alloc (3)
|
||||
+.BR cpg_zcb_free (3)
|
||||
+.BR cpg_zcb_mcast_joined (3)
|
||||
+.BR cpg_context_get (3)
|
||||
+.BR cpg_context_set (3)
|
||||
+.BR cpg_local_get (3)
|
||||
+.BR cpg_model_initialize (3)
|
||||
+
|
||||
+.PP
|
||||
Index: man/Makefile.am
|
||||
===================================================================
|
||||
--- man/Makefile.am (revision 2769)
|
||||
+++ man/Makefile.am (revision 2770)
|
||||
@@ -71,6 +71,7 @@
|
||||
cpg_leave.3 \
|
||||
cpg_local_get.3 \
|
||||
cpg_mcast_joined.3 \
|
||||
+ cpg_model_initialize.3 \
|
||||
cpg_zcb_mcast_joined.3 \
|
||||
cpg_zcb_alloc.3 \
|
||||
cpg_zcb_free.3 \
|
||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (corosync-3.1.10.tar.gz) = cf2014d15fdbd3495cfe64629255f7855a79651a595938dac7bc7ec67338d843079ae40cf1c15de23b50d85cb39b2c2e3e3448a9cc33759ad8988b8c85ce59d3
|
||||
43e97ef0d964ccb4063f40a4478eb679 corosync-1.2.8.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,12 +0,0 @@
|
|||
summary: Run all smoke tests
|
||||
discover:
|
||||
how: fmf
|
||||
execute:
|
||||
how: tmt
|
||||
prepare:
|
||||
how: install
|
||||
package:
|
||||
- gcc
|
||||
- iproute
|
||||
- corosync
|
||||
- corosync-devel
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
summary: Basic smoke test
|
||||
test: ./runtest.sh
|
||||
|
|
@ -1,623 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# This file was autogenerated at 2019-05-13T13:43:38+02:00 from 90bd97ada89befa1a63133335a419ad7311c3d75
|
||||
|
||||
# Copyright (c) 2019, Red Hat, Inc.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
# purpose with or without fee is hereby granted, provided that the above
|
||||
# copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND RED HAT, INC. DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
|
||||
# OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL RED HAT, INC. BE LIABLE
|
||||
# FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
#
|
||||
# Author: Jan Friesse <jfriesse@redhat.com>
|
||||
|
||||
|
||||
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
# !!! Script overwrites corosync.conf, authkey and qdevice/qnetd certificates !!!
|
||||
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
# Home https://github.com/jfriesse/csts/tree/master/smoke
|
||||
|
||||
# -e is really important
|
||||
set -xe
|
||||
set -o pipefail
|
||||
|
||||
# Variables changing test behavior
|
||||
PREFIX="/"
|
||||
|
||||
COROSYNC_SYSCONFD="${PREFIX}etc/corosync"
|
||||
COROSYNC_CONF="${COROSYNC_SYSCONFD}/corosync.conf"
|
||||
COROSYNC_AUTHKEY="${COROSYNC_SYSCONFD}/authkey"
|
||||
COROSYNC_CLUSTER_NAME="smoketestcluster"
|
||||
|
||||
TOKEN_TIMEOUT=1000
|
||||
MAX_REPEATS=60
|
||||
|
||||
####################
|
||||
# Helper functions #
|
||||
####################
|
||||
get_ip() {
|
||||
ip_res=$(ip route get 8.8.8.8)
|
||||
# Format is "8.8.8.8 via ROUTE_IPADDR dev DEV src IPADDR uid NUMBER"
|
||||
# Remove everything up to "src " and then everything after " "
|
||||
addr=${ip_res##*src }
|
||||
addr=${addr%% *}
|
||||
|
||||
echo "$addr"
|
||||
}
|
||||
|
||||
# generate_corosync_conf crypto [token] [qdevice]
|
||||
# crypto can be on or off
|
||||
# when token is defined it is used for token timeout
|
||||
# when qdevice is set to on qdevice section is created and second node is added
|
||||
generate_corosync_conf() {
|
||||
case "$1" in
|
||||
"on")
|
||||
cipher="aes256"
|
||||
hash="sha256"
|
||||
;;
|
||||
"off")
|
||||
cipher="none"
|
||||
hash="none"
|
||||
;;
|
||||
*)
|
||||
# Unknown crypto
|
||||
exit 1
|
||||
esac
|
||||
|
||||
token=$TOKEN_TIMEOUT
|
||||
if [ ! -z "$2" ];then
|
||||
token="$2"
|
||||
fi
|
||||
qdevice="$3"
|
||||
true_command=`which true`
|
||||
|
||||
cat << _EOF_
|
||||
totem {
|
||||
version: 2
|
||||
cluster_name: $COROSYNC_CLUSTER_NAME
|
||||
transport: knet
|
||||
crypto_cipher: $cipher
|
||||
crypto_hash: $hash
|
||||
token: $token
|
||||
}
|
||||
|
||||
logging {
|
||||
to_logfile: yes
|
||||
logfile: /var/log/cluster/corosync.log
|
||||
to_syslog: yes
|
||||
}
|
||||
|
||||
quorum {
|
||||
provider: corosync_votequorum
|
||||
_EOF_
|
||||
|
||||
if [ "$qdevice" == "on" ];then
|
||||
cat << _EOF_
|
||||
device {
|
||||
votes: 1
|
||||
model: net
|
||||
net {
|
||||
host: $LOCAL_IP
|
||||
algorithm: ffsplit
|
||||
}
|
||||
heuristics {
|
||||
mode: sync
|
||||
exec_true: $true_command
|
||||
}
|
||||
}
|
||||
_EOF_
|
||||
fi
|
||||
|
||||
cat << _EOF_
|
||||
}
|
||||
|
||||
nodelist {
|
||||
node {
|
||||
nodeid: 1
|
||||
ring0_addr: $LOCAL_IP
|
||||
}
|
||||
_EOF_
|
||||
|
||||
if [ "$qdevice" == "on" ];then
|
||||
cat << _EOF_
|
||||
node {
|
||||
nodeid: 2
|
||||
ring0_addr: 192.0.2.2
|
||||
}
|
||||
_EOF_
|
||||
fi
|
||||
|
||||
cat << _EOF_
|
||||
}
|
||||
_EOF_
|
||||
}
|
||||
|
||||
# service_start service
|
||||
service_start() {
|
||||
# service service must be inactive
|
||||
systemctl is-active "$1" && exit 1 || true
|
||||
|
||||
systemctl start "$1"
|
||||
|
||||
systemctl is-active "$1"
|
||||
}
|
||||
|
||||
# service_stop service
|
||||
service_stop() {
|
||||
systemctl is-active "$1" || exit 1
|
||||
|
||||
systemctl stop "$1"
|
||||
|
||||
systemctl is-active "$1" && exit 1 || true
|
||||
}
|
||||
|
||||
######################
|
||||
# Computed variables #
|
||||
######################
|
||||
LOCAL_IP=$(get_ip)
|
||||
|
||||
##################
|
||||
# C test sources #
|
||||
##################
|
||||
|
||||
# Test sources are encoded as a base64 string and piped to base64 to store them in /tmp
|
||||
# corosync-api-test.c
|
||||
echo "LyoKICogQ29weXJpZ2h0IChjKSAyMDE5LCBSZWQgSGF0LCBJbmMuCiAqCiAqIFBlcm1pc3Npb24g
|
||||
dG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9y
|
||||
IGFueQogKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHBy
|
||||
b3ZpZGVkIHRoYXQgdGhlIGFib3ZlCiAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz
|
||||
c2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQ
|
||||
Uk9WSURFRCAiQVMgSVMiIEFORCBSRUQgSEFULCBJTkMuIERJU0NMQUlNUyBBTEwgV0FSUkFOVElF
|
||||
UwogKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBX
|
||||
QVJSQU5USUVTCiAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQg
|
||||
U0hBTEwgUkVEIEhBVCwgSU5DLiBCRSBMSUFCTEUKICogRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1Qs
|
||||
IElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKICogV0hB
|
||||
VFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVU
|
||||
SEVSIElOIEFOIEFDVElPTgogKiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JU
|
||||
SU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOCiAqIENPTk5FQ1RJT04gV0lUSCBUSEUg
|
||||
VVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAqCiAqIEF1dGhvcjogSmFuIEZy
|
||||
aWVzc2UgPGpmcmllc3NlQHJlZGhhdC5jb20+CiAqLwoKLyoKICogU2ltcGxlIHRlc3Qgb2YgQ1BH
|
||||
IGNhbGxiYWNrcy4gUHJvZ3JhbSBpbml0aWFsbHkgam9pbnMgQ1BHIGdyb3VwLCB3YWl0cyBmb3IK
|
||||
ICogY3BnX2NvbmZjaGcgYW5kIGNwZ190b3RlbV9jb25mY2hnIGNhbGxiYWNrcyBhbmQgdGhlbiBz
|
||||
dGFydHMgbG9vcCBvZiBzZW5kaW5nCiAqIGFuZCB3YWl0aW5nIGZvciB0aGUgbWVzc2FnZS4gTWVz
|
||||
c2FnZSBoYXMgcmFuZG9tIGxlbmd0aCAodXAtdG8gTUFYX01TR19MRU4pCiAqIGFuZCByYW5kb20g
|
||||
Y29udGVudC4gcmFuZF9yIGlzIHVzZWQgZm9yIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGluZy4gTWVz
|
||||
c2FnZQogKiBpcyBjaGVja2VkIG9uIGRlbGl2ZXJ5IGJ5IGlzc3Vpbmcgc2FtZSByYW5kX3IuIFNl
|
||||
ZWQgZm9yIHJhbmRfciBhcmUKICogc3RvcmVkIGluIHNlbnRfcmFuZF9zZWVkIGFuZCByZWNlaXZl
|
||||
ZF9yYW5kX3NlZWQgdmFyaWFibGVzLgogKgogKiBUaGlzIHRlc3QgY2hlY2tzIGZvbGxvd2luZyBD
|
||||
UEcgcHJvcGVydGllczoKICogLSBQcm9jZXNzIGNhbiBqb2luIENQRyBncm91cAogKiAtIEJvdGgg
|
||||
Y3BnX2NvbmZjaGcgYW5kIGNwZ190b3RlbV9jb25mY2hnIGNhbGxiYWNrcyBhcmUgcmVjZWl2ZWQg
|
||||
d2l0aAogKiAgIG9ubHkgb25lIG5vZGUgYW5kIG9ubHkgb25lIHByb2Nlc3MgaW4gdGhlcmUKICog
|
||||
LSBNZXNzYWdlcyBhcmUgc2VudCBhbmQgcmVjZWl2ZWQgd2l0aG91dCBhbnkgY29ycnVwdGlvbgog
|
||||
Ki8KCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KCiNpbmNs
|
||||
dWRlIDxhc3NlcnQuaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgoj
|
||||
aW5jbHVkZSA8cG9sbC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoj
|
||||
aW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KCiNpbmNsdWRlIDxjb3Jvc3lu
|
||||
Yy9jb3JvdHlwZXMuaD4KI2luY2x1ZGUgPGNvcm9zeW5jL2NwZy5oPgoKLyoKICogUHJlZGVmaW5l
|
||||
ZCB0ZXN0IGNvbnN0YW50cwogKi8KI2RlZmluZSBURVNUX05PREVJRAkJMQojZGVmaW5lIFRFU1Rf
|
||||
R1JPVVBfTkFNRQkJInNtb2tlLWFwaS10ZXN0LWNwZy1ncm91cCIKI2RlZmluZSBNQVhfUkVUUklF
|
||||
UwkJMzAKI2RlZmluZSBNQVhfTVNHX0xFTgkJKDEwMjQgKiAxMjgpCiNkZWZpbmUgTUVTU0FHRVNf
|
||||
VE9fU0VOVAkxMjgKCi8qCiAqIFVzZWZ1bCBtYWNyb3MKICovCiNkZWZpbmUgY3NfcmVwZWF0KGNv
|
||||
ZGUpIGRvIHsJCQkJXAoJaW50IGNzX3JlcGVhdF9jb3VudGVyID0gMDsJCQlcCglkbyB7CQkJCQkJ
|
||||
XAoJCWlmICgoY29kZSkgPT0gQ1NfRVJSX1RSWV9BR0FJTikgewlcCgkJCWNzX3JlcGVhdF9jb3Vu
|
||||
dGVyKys7CQlcCgkJCXBvbGwoTlVMTCwgMCwgMTAwMCk7CQlcCgkJfSBlbHNlIHsJCQkJXAoJCQli
|
||||
cmVhazsJCQkJXAoJCX0JCQkJCVwKCX0gd2hpbGUgKGNzX3JlcGVhdF9jb3VudGVyIDwgTUFYX1JF
|
||||
VFJJRVMpOwlcCn0gd2hpbGUgKDApCgojaWZuZGVmIElORlRJTQojZGVmaW5lIElORlRJTQkJCS0x
|
||||
CiNlbmRpZgoKI2RlZmluZSBFTlRFUigpIHByaW50ZigiKyAlczoldSAlc1xuIiwgX19GSUxFX18s
|
||||
IF9fTElORV9fLCBfX2Z1bmNfXykKI2RlZmluZSBMRUFWRSgpIHByaW50ZigiLSAlczoldSAlc1xu
|
||||
IiwgX19GSUxFX18sIF9fTElORV9fLCBfX2Z1bmNfXykKCnN0YXRpYyBpbnQgY3BnX2NvbmZjaGdf
|
||||
cmVjZWl2ZWQgPSAwOwpzdGF0aWMgaW50IGNwZ190b3RlbV9jb25mY2hnX3JlY2VpdmVkID0gMDsK
|
||||
Ci8qCiAqIGJvdGggcmFuZCBzZWVkcyBtdXN0IGJlIGluIHN5bmMKICovCnN0YXRpYyB1bnNpZ25l
|
||||
ZCBpbnQgc2VudF9yYW5kX3NlZWQgPSAwOwpzdGF0aWMgdW5zaWduZWQgaW50IHJlY2VpdmVkX3Jh
|
||||
bmRfc2VlZCA9IDA7CnN0YXRpYyB1aW50MzJfdCBzZW50X21zZ19zZXFfbm8gPSAwOwpzdGF0aWMg
|
||||
dWludDMyX3QgcmVjZWl2ZWRfbXNnX3NlcV9ubyA9IDA7CgpzdHJ1Y3QgdGVzdF9tc2cgewoJdWlu
|
||||
dDMyX3Qgc2VxX25vIF9fYXR0cmlidXRlX18gKChhbGlnbmVkICg4KSkpOwoJdWludDMyX3QgZGF0
|
||||
YV9sZW4gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDgpKSk7Cgl1bnNpZ25lZCBjaGFyIGRhdGFb
|
||||
MF0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQgKDgpKSk7Cn07CgpzdGF0aWMgdm9pZApEZWxpdmVy
|
||||
Q2FsbGJhY2soY3BnX2hhbmRsZV90IGhhbmRsZSwKICAgIGNvbnN0IHN0cnVjdCBjcGdfbmFtZSAq
|
||||
Z3JvdXBOYW1lLAogICAgdWludDMyX3Qgbm9kZWlkLAogICAgdWludDMyX3QgcGlkLAogICAgdm9p
|
||||
ZCAqY3BnX21zZywKICAgIHNpemVfdCBjcGdfbXNnX2xlbikKewoJc3RydWN0IHRlc3RfbXNnICpt
|
||||
c2c7Cgl1aW50MzJfdCB1MzI7CgoJRU5URVIoKTsKCglhc3NlcnQobm9kZWlkID09IFRFU1RfTk9E
|
||||
RUlEKTsKCWFzc2VydChwaWQgPT0gZ2V0cGlkKCkpOwoKCWFzc2VydChjcGdfbXNnX2xlbiA+PSBz
|
||||
aXplb2Yoc3RydWN0IHRlc3RfbXNnKSk7CgoJbXNnID0gKHN0cnVjdCB0ZXN0X21zZyAqKWNwZ19t
|
||||
c2c7Cglhc3NlcnQobXNnLT5zZXFfbm8gPT0gcmVjZWl2ZWRfbXNnX3NlcV9ubyk7CglyZWNlaXZl
|
||||
ZF9tc2dfc2VxX25vKys7CgoJYXNzZXJ0KGNwZ19tc2dfbGVuID09IG1zZy0+ZGF0YV9sZW4gKyBz
|
||||
aXplb2Yoc3RydWN0IHRlc3RfbXNnKSk7CgoJLyoKCSAqIE1lc3NhZ2UgaGFzIGV4cGVjdGVkIGxl
|
||||
bmd0aCBhbmQgY29udGVudAoJICovCglhc3NlcnQobXNnLT5kYXRhX2xlbiA9PSAodWludDMyX3Qp
|
||||
KHJhbmRfcigmcmVjZWl2ZWRfcmFuZF9zZWVkKSAlIE1BWF9NU0dfTEVOKSk7CgoJZm9yICh1MzIg
|
||||
PSAwOyB1MzIgPCBtc2ctPmRhdGFfbGVuOyB1MzIrKykgewoJCWFzc2VydChtc2ctPmRhdGFbdTMy
|
||||
XSA9PSAodW5zaWduZWQgY2hhcilyYW5kX3IoJnJlY2VpdmVkX3JhbmRfc2VlZCkpOwoJfQoKCUxF
|
||||
QVZFKCk7Cn0KCnN0YXRpYyB2b2lkClRvdGVtQ29uZmNoZ0NhbGxiYWNrKGNwZ19oYW5kbGVfdCBo
|
||||
YW5kbGUsCiAgICBzdHJ1Y3QgY3BnX3JpbmdfaWQgcmluZ19pZCwKICAgIHVpbnQzMl90IG1lbWJl
|
||||
cl9saXN0X2VudHJpZXMsCiAgICBjb25zdCB1aW50MzJfdCAqbWVtYmVyX2xpc3QpCnsKCglFTlRF
|
||||
UigpOwoKCWFzc2VydChtZW1iZXJfbGlzdF9lbnRyaWVzID09IDEpOwoJYXNzZXJ0KG1lbWJlcl9s
|
||||
aXN0WzBdID09IFRFU1RfTk9ERUlEKTsKCgljcGdfdG90ZW1fY29uZmNoZ19yZWNlaXZlZCA9IDE7
|
||||
CgoJTEVBVkUoKTsKfQoKc3RhdGljIHZvaWQKQ29uZmNoZ0NhbGxiYWNrKGNwZ19oYW5kbGVfdCBo
|
||||
YW5kbGUsCiAgICBjb25zdCBzdHJ1Y3QgY3BnX25hbWUgKmdyb3VwX25hbWUsCiAgICBjb25zdCBz
|
||||
dHJ1Y3QgY3BnX2FkZHJlc3MgKm1lbWJlcl9saXN0LCBzaXplX3QgbWVtYmVyX2xpc3RfZW50cmll
|
||||
cywKICAgIGNvbnN0IHN0cnVjdCBjcGdfYWRkcmVzcyAqbGVmdF9saXN0LCBzaXplX3QgbGVmdF9s
|
||||
aXN0X2VudHJpZXMsCiAgICBjb25zdCBzdHJ1Y3QgY3BnX2FkZHJlc3MgKmpvaW5lZF9saXN0LCBz
|
||||
aXplX3Qgam9pbmVkX2xpc3RfZW50cmllcykKewoKCUVOVEVSKCk7CgoJYXNzZXJ0KGdyb3VwX25h
|
||||
bWUtPmxlbmd0aCA9PSBzdHJsZW4oVEVTVF9HUk9VUF9OQU1FKSk7Cglhc3NlcnQobWVtY21wKGdy
|
||||
b3VwX25hbWUtPnZhbHVlLCBURVNUX0dST1VQX05BTUUsIHN0cmxlbihURVNUX0dST1VQX05BTUUp
|
||||
KSA9PSAwKTsKCWFzc2VydChtZW1iZXJfbGlzdF9lbnRyaWVzID09IDEpOwoJYXNzZXJ0KG1lbWJl
|
||||
cl9saXN0WzBdLm5vZGVpZCA9PSBURVNUX05PREVJRCk7Cglhc3NlcnQobWVtYmVyX2xpc3RbMF0u
|
||||
cGlkID09IGdldHBpZCgpKTsKCgljcGdfY29uZmNoZ19yZWNlaXZlZCA9IDE7CgoJTEVBVkUoKTsK
|
||||
fQoKc3RhdGljIGNwZ19tb2RlbF92MV9kYXRhX3QgbW9kZWxfZGF0YSA9IHsKCS5jcGdfZGVsaXZl
|
||||
cl9mbiA9CURlbGl2ZXJDYWxsYmFjaywKCS5jcGdfY29uZmNoZ19mbiA9CUNvbmZjaGdDYWxsYmFj
|
||||
aywKCS5jcGdfdG90ZW1fY29uZmNoZ19mbiA9CVRvdGVtQ29uZmNoZ0NhbGxiYWNrLAoJLmZsYWdz
|
||||
ID0JCUNQR19NT0RFTF9WMV9ERUxJVkVSX0lOSVRJQUxfVE9URU1fQ09ORiwKfTsKCnN0YXRpYyB2
|
||||
b2lkCnNlbmRfbXNnKGNwZ19oYW5kbGVfdCBjcGdfaGFuZGxlKQp7CglzdHJ1Y3QgdGVzdF9tc2cg
|
||||
bXNnOwoJdW5zaWduZWQgY2hhciAqZGF0YTsKCXVpbnQzMl90IHUzMjsKCXN0cnVjdCBpb3ZlYyBp
|
||||
b3ZbMl07Cgljc19lcnJvcl90IGNzX3JlczsKCglFTlRFUigpOwoKCW1zZy5kYXRhX2xlbiA9IHJh
|
||||
bmRfcigmc2VudF9yYW5kX3NlZWQpICUgTUFYX01TR19MRU47Cgltc2cuc2VxX25vID0gc2VudF9t
|
||||
c2dfc2VxX25vOwoKCXNlbnRfbXNnX3NlcV9ubysrOwoKCWRhdGEgPSBtYWxsb2Moc2l6ZW9mKHVu
|
||||
c2lnbmVkIGNoYXIpICogbXNnLmRhdGFfbGVuKTsKCWFzc2VydChkYXRhICE9IE5VTEwpOwoKCWZv
|
||||
ciAodTMyID0gMDsgdTMyIDwgbXNnLmRhdGFfbGVuOyB1MzIrKykgewoJCWRhdGFbdTMyXSA9ICh1
|
||||
bnNpZ25lZCBjaGFyKXJhbmRfcigmc2VudF9yYW5kX3NlZWQpOwoJfQoKCWlvdlswXS5pb3ZfYmFz
|
||||
ZSA9ICh2b2lkICopJm1zZzsKCWlvdlswXS5pb3ZfbGVuID0gc2l6ZW9mKG1zZyk7Cglpb3ZbMV0u
|
||||
aW92X2Jhc2UgPSAodm9pZCAqKWRhdGE7Cglpb3ZbMV0uaW92X2xlbiA9IG1zZy5kYXRhX2xlbjsK
|
||||
Cgljc19yZXMgPSBjcGdfbWNhc3Rfam9pbmVkKGNwZ19oYW5kbGUsIENQR19UWVBFX0FHUkVFRCwg
|
||||
aW92LCAyKTsKCWFzc2VydChjc19yZXMgPT0gQ1NfT0spOwoKCWZyZWUoZGF0YSk7CgoJTEVBVkUo
|
||||
KTsKfQoKc3RhdGljIHZvaWQKdGVzdF9jcGcodm9pZCkKewoJY3BnX2hhbmRsZV90IGNwZ19oYW5k
|
||||
bGU7CglzdHJ1Y3QgY3BnX25hbWUgZ3JvdXBfbmFtZTsKCWNzX2Vycm9yX3QgY3NfcmVzOwoJdW5z
|
||||
aWduZWQgaW50IGxvY2FsX25vZGVpZDsKCWludCBjcGdfZmQ7CglzdHJ1Y3QgcG9sbGZkIHBmZDsK
|
||||
CWludCBwb2xsX3JlczsKCWludCBzdGF0ZTsKCWludCBjb250OwoKCUVOVEVSKCk7CgoJc3RhdGUg
|
||||
PSAwOwoKCXN0cmNweShncm91cF9uYW1lLnZhbHVlLCBURVNUX0dST1VQX05BTUUpOwoJZ3JvdXBf
|
||||
bmFtZS5sZW5ndGggPSBzdHJsZW4oVEVTVF9HUk9VUF9OQU1FKTsKCgljc19yZXBlYXQoY3NfcmVz
|
||||
ID0gY3BnX21vZGVsX2luaXRpYWxpemUoJmNwZ19oYW5kbGUsIENQR19NT0RFTF9WMSwKCSAgICAo
|
||||
Y3BnX21vZGVsX2RhdGFfdCAqKSZtb2RlbF9kYXRhLCBOVUxMKSk7Cglhc3NlcnQoY3NfcmVzID09
|
||||
IENTX09LKTsKCgljc19yZXBlYXQoY3NfcmVzID0gY3BnX2pvaW4oY3BnX2hhbmRsZSwgJmdyb3Vw
|
||||
X25hbWUpKTsKCWFzc2VydChjc19yZXMgPT0gQ1NfT0spOwoKCWNzX3JlcGVhdChjc19yZXMgPSBj
|
||||
cGdfbG9jYWxfZ2V0KGNwZ19oYW5kbGUsICZsb2NhbF9ub2RlaWQpKTsKCWFzc2VydChjc19yZXMg
|
||||
PT0gQ1NfT0spOwoJYXNzZXJ0KGxvY2FsX25vZGVpZCA9PSBURVNUX05PREVJRCk7CgoJY3NfcmVw
|
||||
ZWF0KGNzX3JlcyA9IGNwZ19mZF9nZXQoY3BnX2hhbmRsZSwgJmNwZ19mZCkpOwoJYXNzZXJ0KGNz
|
||||
X3JlcyA9PSBDU19PSyk7CgoJY29udCA9IDE7CgoJZG8gewoJCXBmZC5mZCA9IGNwZ19mZDsKCQlw
|
||||
ZmQuZXZlbnRzID0gUE9MTElOOwoJCXBmZC5yZXZlbnRzID0gMDsKCgkJcG9sbF9yZXMgPSBwb2xs
|
||||
KCZwZmQsIDEsIElORlRJTSk7CgkJaWYgKHBvbGxfcmVzID09IC0xKSB7CgkJCXBlcnJvcigicG9s
|
||||
bF9yZXMgPT0gLTEiKTsKCQl9CgoJCWFzc2VydChwb2xsX3JlcyAhPSAwKTsKCQlhc3NlcnQocGZk
|
||||
LnJldmVudHMgJiBQT0xMSU4pOwoKCQljc19yZXBlYXQoY3NfcmVzID0gY3BnX2Rpc3BhdGNoKGNw
|
||||
Z19oYW5kbGUsIENTX0RJU1BBVENIX0FMTCkpOwoJCWFzc2VydChjc19yZXMgPT0gQ1NfT0spOwoK
|
||||
CQlzd2l0Y2ggKHN0YXRlKSB7CgkJY2FzZSAwOgoJCQkvKgoJCQkgKiBXYWl0aW5nIGZvciBjcGdf
|
||||
Y29uZmNoZ19yZWNlaXZlZCBhbmQgY3BnX3RvdGVtX2NvbmZjaGdfcmVjZWl2ZWQKCQkJICovCgkJ
|
||||
CWlmIChjcGdfY29uZmNoZ19yZWNlaXZlZCAmJiBjcGdfdG90ZW1fY29uZmNoZ19yZWNlaXZlZCkg
|
||||
ewoJCQkJLyoKCQkJCSAqIFNlbmQgZmlyc3QgbWVzc2FnZSBhbmQgd2FpdCBmb3IgaXQgaW4gbmV4
|
||||
dCBzdGF0ZQoJCQkJICovCgkJCQlzZW5kX21zZyhjcGdfaGFuZGxlKTsKCQkJCXN0YXRlID0gMTsK
|
||||
CQkJfQoJCQlicmVhazsKCQljYXNlIDE6CgkJCWlmIChyZWNlaXZlZF9tc2dfc2VxX25vID49IE1F
|
||||
U1NBR0VTX1RPX1NFTlQpIHsKCQkJCWNvbnQgPSAwOwoJCQl9IGVsc2UgIGlmIChyZWNlaXZlZF9t
|
||||
c2dfc2VxX25vID09IHNlbnRfbXNnX3NlcV9ubykgewoJCQkJLyoKCQkJCSAqIE1lc3NhZ2UgZGVs
|
||||
aXZlcmVkIHNvIHNlbnQgbmV3IG9uZSBhbmQgd2FpdCBmb3IgaXQKCQkJCSAqLwoJCQkJc2VuZF9t
|
||||
c2coY3BnX2hhbmRsZSk7CgkJCX0KCQkJYnJlYWs7CgkJfQoJfSB3aGlsZSAoY29udCk7CgoJY3Nf
|
||||
cmVwZWF0KGNzX3JlcyA9IGNwZ19sZWF2ZShjcGdfaGFuZGxlLCAmZ3JvdXBfbmFtZSkpOwoJYXNz
|
||||
ZXJ0KGNzX3JlcyA9PSBDU19PSyk7CgoJY3NfcmVwZWF0KGNzX3JlcyA9IGNwZ19maW5hbGl6ZShj
|
||||
cGdfaGFuZGxlKSk7Cglhc3NlcnQoY3NfcmVzID09IENTX09LKTsKCglMRUFWRSgpOwp9CgppbnQK
|
||||
bWFpbih2b2lkKQp7CgoJRU5URVIoKTsKCglzZXRsaW5lYnVmKHN0ZG91dCk7CgoJdGVzdF9jcGco
|
||||
KTsKCglMRUFWRSgpOwoKCXJldHVybiAoMCk7Cn0K" | base64 -d | tee "/tmp/corosync-api-test.c"
|
||||
# - corosync-api-test.c
|
||||
# corosync-api-test-mp.c
|
||||
echo "LyoKICogQ29weXJpZ2h0IChjKSAyMDE5LCBSZWQgSGF0LCBJbmMuCiAqCiAqIFBlcm1pc3Npb24g
|
||||
dG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9y
|
||||
IGFueQogKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHBy
|
||||
b3ZpZGVkIHRoYXQgdGhlIGFib3ZlCiAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz
|
||||
c2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQ
|
||||
Uk9WSURFRCAiQVMgSVMiIEFORCBSRUQgSEFULCBJTkMuIERJU0NMQUlNUyBBTEwgV0FSUkFOVElF
|
||||
UwogKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBX
|
||||
QVJSQU5USUVTCiAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQg
|
||||
U0hBTEwgUkVEIEhBVCwgSU5DLiBCRSBMSUFCTEUKICogRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1Qs
|
||||
IElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMKICogV0hB
|
||||
VFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVU
|
||||
SEVSIElOIEFOIEFDVElPTgogKiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JU
|
||||
SU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOCiAqIENPTk5FQ1RJT04gV0lUSCBUSEUg
|
||||
VVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCiAqCiAqIEF1dGhvcjogSmFuIEZy
|
||||
aWVzc2UgPGpmcmllc3NlQHJlZGhhdC5jb20+CiAqLwoKLyoKICogTWFpbiBwcm9jZXNzIGNyZWF0
|
||||
ZXMgbXVsdGlwbGUgKE5PX0NISUxEUykgY2hpbGRzIGFuZCB3YWl0cyBmb3IgdGhlaXIgZXhpdC4K
|
||||
ICogRWFjaCBjaGlsZCBqb2lucyBDUEcgZ3JvdXAgYW5kIHN0YXJ0cyBwcm9jZXNzaW5nIENQRyBl
|
||||
dmVudHMuIEVhY2ggY2hpbGQgaXMKICogaWRlbnRpZmllZCBieSBJRCAobXlfaWQpIHdoaWNoIGlz
|
||||
IHNldCBieSBtYWluIHByb2Nlc3MgaW4gaW5jcmVhc2luZyBvcmRlciAoc28KICogdmFsdWUgaXMg
|
||||
MC4uTk9fQ0hJTERTLTEpLiBXaGVuIGFsbCBjaGlsZHMgam9pbiBDUEcgZ3JvdXAgKENvbmZjaGdD
|
||||
YWxsYmFjayB2YXJpYWJsZQogKiBtZW1iZXJfbGlzdF9lbnRyaWVzIGlzIGVxdWFsIHRvIE5PX0NI
|
||||
SUxEUykgdGhlbiBjaGlsZCB3aXRoIElEIDAgc2VuZHMgQ1BHIG1lc3NhZ2UKICogd2l0aCByYW5k
|
||||
b20gbGVuZ3RoICh1cC10byBNQVhfTVNHX0xFTikgYW5kIHJhbmRvbSBjb250ZW50LiBXaGVuIGNo
|
||||
aWxkIHdpdGggSUQgMQogKiByZWNlaXZlcyBtZXNzYWdlIGlzc3VlZCBieSBjaGlsZCB3aXRoIElE
|
||||
IDAsIGl0IHNlbmRzIGFub3RoZXIgcmFuZG9tIG1lc3NhZ2UuCiAqIFRoaXMgcHJvY2VzcyBjb250
|
||||
aW51ZXMgd2l0aCBjaGlsZCB3aXRoIElEIDIsIHRoZW4gd2l0aCBjaGlsZCAzLCAuLi4gTk9fQ0hJ
|
||||
TERTIC0gMSBhbmQKICogdGhlbiBvdmVybGFwcyBiYWNrIHRvIDAuIEVhY2ggY2hpbGQgY29tcGFy
|
||||
ZXMgcmVjZWl2ZWQgbWVzc2FnZSBieSBnZW5lcmF0aW5nIHNhbWUKICogcmFuZG9tIG51bWJlcnMg
|
||||
KHJhbmRfciBmdW5jdGlvbiBpcyB1c2VkKSBzdHJlYW0gYXMgc2VuZGVyIHNvIHNlbnRfcmFuZF9z
|
||||
ZWVkIGFuZAogKiByZWNlaXZlZF9yYW5kX3NlZWQgbXVzdCBiZSBrZXB0IGluIHN5bmMuIEtlZXBp
|
||||
bmcgcmVjZWllZF9yYW5kX3NlZWQgaW4gc3luYyBpcwogKiBzaW1wbGUsIGJlY2F1c2UgaXQgaXMg
|
||||
dXBkYXRlZCBldmVyeSB0aW1lIHdoZW4gbWVzc2FnZSBpcyByZWNlaXZlZC4KICogc2VudF9yYW5k
|
||||
X3NlZWQgaXMgdXBkYXRlZCBldGhlciBieSBzZW5kaW5nIG1lc3NhZ2Ugb3IgYnkKICogY2FsbGlu
|
||||
ZyBhZGp1c3Rfc2VudF9yYW5kX3NlZWQgZnVuY3Rpb24uCiAqCiAqIFRoaXMgdGVzdCBjaGVja3Mg
|
||||
Zm9sbG93aW5nIHByb3BlcnRpZXMgQ1BHOgogKiAtIE1vcmUgdGhhbiBvbmUgY2xpZW50IGNhbiBq
|
||||
b2luIENQRyBncm91cAogKiAtIEVhY2ggY2xpZW50IGV2ZW50dWFsbHkgc2VlcyBhbGwgb3RoZXIg
|
||||
Y2xpZW50cwogKiAtIEVhY2ggY2xpZW50IHJlY2VpdmVzIG1lc3NhZ2VzIHNlbnQgYnkgb3RoZXIg
|
||||
Y2xpZW50cyBbMV0KICogLSBNZXNzYWdlIGlzIG5vdCBjb3JydXB0ZWQgWzFdCiAqIC0gTWVzc2Fn
|
||||
ZXMgYXJlIGRlbGl2ZXJlZCB3aXRoIEZJRk8gcXVhcmFudGVlIFsxXQogKgogKiBbMV0gLSBFbnN1
|
||||
cmVkIGJ5IGVxdWFsaXR5IG9mIHJhbmRfciBnZW5lcmF0ZWQgYnl0ZXMgd2hlcmUgc2VuZGVyIHNl
|
||||
ZWQKICogICAgICAgKHNlbnRfcmFuZF9zZWVkKSBhbmQgcmVjZWl2ZXIgc2VlZCAocmVjZWl2ZWRf
|
||||
cmFuZF9zZWVkKSBhcmUga2VwdCBpbgogKiAgICAgICBzeW5jLgogKi8KCiNpbmNsdWRlIDxzeXMv
|
||||
dHlwZXMuaD4KI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KI2luY2x1ZGUgPHN5cy93YWl0Lmg+Cgoj
|
||||
aW5jbHVkZSA8YXNzZXJ0Lmg+CiNpbmNsdWRlIDxlcnJuby5oPgojaW5jbHVkZSA8aW50dHlwZXMu
|
||||
aD4KI2luY2x1ZGUgPHBvbGwuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIu
|
||||
aD4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CgojaW5jbHVkZSA8Y29y
|
||||
b3N5bmMvY29yb3R5cGVzLmg+CiNpbmNsdWRlIDxjb3Jvc3luYy9jcGcuaD4KCi8qCiAqIFByZWRl
|
||||
ZmluZWQgdGVzdCBjb25zdGFudHMKICovCiNkZWZpbmUgVEVTVF9OT0RFSUQJCTEKI2RlZmluZSBU
|
||||
RVNUX0dST1VQX05BTUUJCSJzbW9rZS1hcGktdGVzdC1jcGctZ3JvdXAtbXAiCiNkZWZpbmUgTUFY
|
||||
X1JFVFJJRVMJCTMwCiNkZWZpbmUgTUFYX01TR19MRU4JCSgxMDI0ICogMTI4KQoKI2RlZmluZSBO
|
||||
T19DSElMRFMJCTMKCiNkZWZpbmUgTUVTU0FHRVNfVE9fU0VOVAkoMTI4ICogTk9fQ0hJTERTKQoK
|
||||
LyoKICogVXNlZnVsIG1hY3JvcwogKi8KI2RlZmluZSBjc19yZXBlYXQoY29kZSkgZG8gewkJCQlc
|
||||
CglpbnQgY3NfcmVwZWF0X2NvdW50ZXIgPSAwOwkJCVwKCWRvIHsJCQkJCQlcCgkJaWYgKChjb2Rl
|
||||
KSA9PSBDU19FUlJfVFJZX0FHQUlOKSB7CVwKCQkJY3NfcmVwZWF0X2NvdW50ZXIrKzsJCVwKCQkJ
|
||||
cG9sbChOVUxMLCAwLCAxMDAwKTsJCVwKCQl9IGVsc2UgewkJCQlcCgkJCWJyZWFrOwkJCQlcCgkJ
|
||||
fQkJCQkJXAoJfSB3aGlsZSAoY3NfcmVwZWF0X2NvdW50ZXIgPCBNQVhfUkVUUklFUyk7CVwKfSB3
|
||||
aGlsZSAoMCkKCiNpZm5kZWYgSU5GVElNCiNkZWZpbmUgSU5GVElNCQkJLTEKI2VuZGlmCgojZGVm
|
||||
aW5lIEVOVEVSKCkgcHJpbnRmKCJbJWxkXSArICVzOiV1ICVzXG4iLCAobG9uZyBzaWduZWQgaW50
|
||||
KWdldHBpZCgpLCBfX0ZJTEVfXyxcCiAgICBfX0xJTkVfXywgX19mdW5jX18pCiNkZWZpbmUgTEVB
|
||||
VkUoKSBwcmludGYoIlslbGRdIC0gJXM6JXUgJXNcbiIsIChsb25nIHNpZ25lZCBpbnQpZ2V0cGlk
|
||||
KCksIF9fRklMRV9fLFwKICAgIF9fTElORV9fLCBfX2Z1bmNfXykKCnN0YXRpYyBpbnQzMl90IG15
|
||||
X2lkID0gLTE7CnN0YXRpYyBpbnQgZnVsbF9tZW1iZXJzaGlwX3NlZW4gPSAwOwpzdGF0aWMgaW50
|
||||
IHNlbnRfbWVzc2FnZXMgPSAwOwpzdGF0aWMgaW50IHRlc3RfY3BnX2xvb3BfY29udCA9IDE7Cgov
|
||||
KgogKiBib3RoIHJhbmQgc2VlZHMgbXVzdCBiZSBpbiBzeW5jCiAqLwpzdGF0aWMgdW5zaWduZWQg
|
||||
aW50IHNlbnRfcmFuZF9zZWVkID0gMDsKc3RhdGljIHVuc2lnbmVkIGludCByZWNlaXZlZF9yYW5k
|
||||
X3NlZWQgPSAwOwpzdGF0aWMgaW50MzJfdCBleHBlY3RlZF9zZW5kZXJfaWQ7CnN0YXRpYyB1aW50
|
||||
MzJfdCBleHBlY3RlZF9tc2dfc2VxX25vID0gMDsKCnN0cnVjdCB0ZXN0X21zZyB7CglpbnQzMl90
|
||||
IHNlbmRlcl9pZCBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoOCkpKTsKCXVpbnQzMl90IHNlcV9u
|
||||
byBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCAoOCkpKTsKCXVpbnQzMl90IGRhdGFfbGVuIF9fYXR0
|
||||
cmlidXRlX18gKChhbGlnbmVkICg4KSkpOwoJdW5zaWduZWQgY2hhciBkYXRhWzBdIF9fYXR0cmli
|
||||
dXRlX18gKChhbGlnbmVkICg4KSkpOwp9OwoKc3RhdGljIHZvaWQKc2VuZF9tc2coY3BnX2hhbmRs
|
||||
ZV90IGNwZ19oYW5kbGUpCnsKCXN0cnVjdCB0ZXN0X21zZyBtc2c7Cgl1bnNpZ25lZCBjaGFyICpk
|
||||
YXRhOwoJdWludDMyX3QgdTMyOwoJc3RydWN0IGlvdmVjIGlvdlsyXTsKCWNzX2Vycm9yX3QgY3Nf
|
||||
cmVzOwoKCUVOVEVSKCk7CgoJbXNnLnNlbmRlcl9pZCA9IG15X2lkOwoJbXNnLmRhdGFfbGVuID0g
|
||||
cmFuZF9yKCZzZW50X3JhbmRfc2VlZCkgJSBNQVhfTVNHX0xFTjsKCW1zZy5zZXFfbm8gPSBleHBl
|
||||
Y3RlZF9tc2dfc2VxX25vOwoKCWRhdGEgPSBtYWxsb2Moc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICog
|
||||
bXNnLmRhdGFfbGVuKTsKCWFzc2VydChkYXRhICE9IE5VTEwpOwoKCWZvciAodTMyID0gMDsgdTMy
|
||||
IDwgbXNnLmRhdGFfbGVuOyB1MzIrKykgewoJCWRhdGFbdTMyXSA9ICh1bnNpZ25lZCBjaGFyKXJh
|
||||
bmRfcigmc2VudF9yYW5kX3NlZWQpOwoJfQoKCWlvdlswXS5pb3ZfYmFzZSA9ICh2b2lkICopJm1z
|
||||
ZzsKCWlvdlswXS5pb3ZfbGVuID0gc2l6ZW9mKG1zZyk7Cglpb3ZbMV0uaW92X2Jhc2UgPSAodm9p
|
||||
ZCAqKWRhdGE7Cglpb3ZbMV0uaW92X2xlbiA9IG1zZy5kYXRhX2xlbjsKCgljc19yZXMgPSBjcGdf
|
||||
bWNhc3Rfam9pbmVkKGNwZ19oYW5kbGUsIENQR19UWVBFX0FHUkVFRCwgaW92LCAyKTsKCWFzc2Vy
|
||||
dChjc19yZXMgPT0gQ1NfT0spOwoKCWZyZWUoZGF0YSk7CgoJc2VudF9tZXNzYWdlcysrOwoKCUxF
|
||||
QVZFKCk7Cn0KCnN0YXRpYyB2b2lkCmFkanVzdF9zZW50X3JhbmRfc2VlZCh2b2lkKQp7Cgl1aW50
|
||||
MzJfdCBkYXRhX2xlbjsKCXVpbnQzMl90IHUzMjsKCglkYXRhX2xlbiA9IHJhbmRfcigmc2VudF9y
|
||||
YW5kX3NlZWQpICUgTUFYX01TR19MRU47CgoJZm9yICh1MzIgPSAwOyB1MzIgPCBkYXRhX2xlbjsg
|
||||
dTMyKyspIHsKCQkodm9pZClyYW5kX3IoJnNlbnRfcmFuZF9zZWVkKTsKCX0KfQoKc3RhdGljIHZv
|
||||
aWQKRGVsaXZlckNhbGxiYWNrKGNwZ19oYW5kbGVfdCBoYW5kbGUsCiAgICBjb25zdCBzdHJ1Y3Qg
|
||||
Y3BnX25hbWUgKmdyb3VwTmFtZSwKICAgIHVpbnQzMl90IG5vZGVpZCwKICAgIHVpbnQzMl90IHBp
|
||||
ZCwKICAgIHZvaWQgKmNwZ19tc2csCiAgICBzaXplX3QgY3BnX21zZ19sZW4pCnsKCXN0cnVjdCB0
|
||||
ZXN0X21zZyAqbXNnOwoJdWludDMyX3QgdTMyOwoKCUVOVEVSKCk7CgoJYXNzZXJ0KG5vZGVpZCA9
|
||||
PSBURVNUX05PREVJRCk7CgoJYXNzZXJ0KGNwZ19tc2dfbGVuID49IHNpemVvZihzdHJ1Y3QgdGVz
|
||||
dF9tc2cpKTsKCgltc2cgPSAoc3RydWN0IHRlc3RfbXNnICopY3BnX21zZzsKCWFzc2VydChtc2ct
|
||||
PnNlbmRlcl9pZCA9PSBleHBlY3RlZF9zZW5kZXJfaWQpOwoKCWV4cGVjdGVkX3NlbmRlcl9pZCA9
|
||||
IChleHBlY3RlZF9zZW5kZXJfaWQgKyAxKSAlIE5PX0NISUxEUzsKCglhc3NlcnQobXNnLT5zZXFf
|
||||
bm8gPT0gZXhwZWN0ZWRfbXNnX3NlcV9ubyk7CglleHBlY3RlZF9tc2dfc2VxX25vKys7CgoJYXNz
|
||||
ZXJ0KGNwZ19tc2dfbGVuID09IG1zZy0+ZGF0YV9sZW4gKyBzaXplb2Yoc3RydWN0IHRlc3RfbXNn
|
||||
KSk7CgoJLyoKCSAqIE1lc3NhZ2UgaGFzIGV4cGVjdGVkIGxlbmd0aCBhbmQgY29udGVudAoJICov
|
||||
Cglhc3NlcnQobXNnLT5kYXRhX2xlbiA9PSAodWludDMyX3QpKHJhbmRfcigmcmVjZWl2ZWRfcmFu
|
||||
ZF9zZWVkKSAlIE1BWF9NU0dfTEVOKSk7CgoJZm9yICh1MzIgPSAwOyB1MzIgPCBtc2ctPmRhdGFf
|
||||
bGVuOyB1MzIrKykgewoJCWFzc2VydChtc2ctPmRhdGFbdTMyXSA9PSAodW5zaWduZWQgY2hhcily
|
||||
YW5kX3IoJnJlY2VpdmVkX3JhbmRfc2VlZCkpOwoJfQoKCWlmIChleHBlY3RlZF9tc2dfc2VxX25v
|
||||
ID4gTUVTU0FHRVNfVE9fU0VOVCkgewoJCXRlc3RfY3BnX2xvb3BfY29udCA9IDA7Cgl9CgoJaWYg
|
||||
KGV4cGVjdGVkX3NlbmRlcl9pZCA9PSBteV9pZCkgewoJCXNlbmRfbXNnKGhhbmRsZSk7Cgl9IGVs
|
||||
c2UgewoJCWFkanVzdF9zZW50X3JhbmRfc2VlZCgpOwoJfQoKCUxFQVZFKCk7Cn0KCnN0YXRpYyB2
|
||||
b2lkClRvdGVtQ29uZmNoZ0NhbGxiYWNrKGNwZ19oYW5kbGVfdCBoYW5kbGUsCiAgICBzdHJ1Y3Qg
|
||||
Y3BnX3JpbmdfaWQgcmluZ19pZCwKICAgIHVpbnQzMl90IG1lbWJlcl9saXN0X2VudHJpZXMsCiAg
|
||||
ICBjb25zdCB1aW50MzJfdCAqbWVtYmVyX2xpc3QpCnsKCglFTlRFUigpOwoKCWFzc2VydChtZW1i
|
||||
ZXJfbGlzdF9lbnRyaWVzID09IDEpOwoJYXNzZXJ0KG1lbWJlcl9saXN0WzBdID09IFRFU1RfTk9E
|
||||
RUlEKTsKCglMRUFWRSgpOwp9CgpzdGF0aWMgdm9pZApDb25mY2hnQ2FsbGJhY2soY3BnX2hhbmRs
|
||||
ZV90IGhhbmRsZSwKICAgIGNvbnN0IHN0cnVjdCBjcGdfbmFtZSAqZ3JvdXBfbmFtZSwKICAgIGNv
|
||||
bnN0IHN0cnVjdCBjcGdfYWRkcmVzcyAqbWVtYmVyX2xpc3QsIHNpemVfdCBtZW1iZXJfbGlzdF9l
|
||||
bnRyaWVzLAogICAgY29uc3Qgc3RydWN0IGNwZ19hZGRyZXNzICpsZWZ0X2xpc3QsIHNpemVfdCBs
|
||||
ZWZ0X2xpc3RfZW50cmllcywKICAgIGNvbnN0IHN0cnVjdCBjcGdfYWRkcmVzcyAqam9pbmVkX2xp
|
||||
c3QsIHNpemVfdCBqb2luZWRfbGlzdF9lbnRyaWVzKQp7CglpbnQgaTsKCglFTlRFUigpOwoKCWFz
|
||||
c2VydChncm91cF9uYW1lLT5sZW5ndGggPT0gc3RybGVuKFRFU1RfR1JPVVBfTkFNRSkpOwoJYXNz
|
||||
ZXJ0KG1lbWNtcChncm91cF9uYW1lLT52YWx1ZSwgVEVTVF9HUk9VUF9OQU1FLCBzdHJsZW4oVEVT
|
||||
VF9HUk9VUF9OQU1FKSkgPT0gMCk7CgoJZm9yIChpID0gMDsgaSA8IG1lbWJlcl9saXN0X2VudHJp
|
||||
ZXM7IGkrKykgewoJCWFzc2VydChtZW1iZXJfbGlzdFtpXS5ub2RlaWQgPT0gVEVTVF9OT0RFSUQp
|
||||
OwoJfQoKCWlmICghZnVsbF9tZW1iZXJzaGlwX3NlZW4gJiYgbWVtYmVyX2xpc3RfZW50cmllcyA9
|
||||
PSBOT19DSElMRFMpIHsKCQlpZiAobXlfaWQgPT0gMCkgewoJCQkvKgoJCQkgKiBGaXJzdCBjaGls
|
||||
ZCBzZW5kcyBmaXJzdCBtZXNzYWdlCgkJCSAqLwoJCQlzZW5kX21zZyhoYW5kbGUpOwoJCX0gZWxz
|
||||
ZSB7CgkJCWFkanVzdF9zZW50X3JhbmRfc2VlZCgpOwoJCX0KCgkJZnVsbF9tZW1iZXJzaGlwX3Nl
|
||||
ZW4gPSAxOwoJfQoKCUxFQVZFKCk7Cn0KCnN0YXRpYyBjcGdfbW9kZWxfdjFfZGF0YV90IG1vZGVs
|
||||
X2RhdGEgPSB7CgkuY3BnX2RlbGl2ZXJfZm4gPQlEZWxpdmVyQ2FsbGJhY2ssCgkuY3BnX2NvbmZj
|
||||
aGdfZm4gPQlDb25mY2hnQ2FsbGJhY2ssCgkuY3BnX3RvdGVtX2NvbmZjaGdfZm4gPQlUb3RlbUNv
|
||||
bmZjaGdDYWxsYmFjaywKCS5mbGFncyA9CQlDUEdfTU9ERUxfVjFfREVMSVZFUl9JTklUSUFMX1RP
|
||||
VEVNX0NPTkYsCn07CgoKc3RhdGljIHZvaWQKdGVzdF9jcGcodm9pZCkKewoJY3BnX2hhbmRsZV90
|
||||
IGNwZ19oYW5kbGU7CglzdHJ1Y3QgY3BnX25hbWUgZ3JvdXBfbmFtZTsKCWNzX2Vycm9yX3QgY3Nf
|
||||
cmVzOwoJdW5zaWduZWQgaW50IGxvY2FsX25vZGVpZDsKCWludCBjcGdfZmQ7CglzdHJ1Y3QgcG9s
|
||||
bGZkIHBmZDsKCWludCBwb2xsX3JlczsKCglFTlRFUigpOwoKCXN0cmNweShncm91cF9uYW1lLnZh
|
||||
bHVlLCBURVNUX0dST1VQX05BTUUpOwoJZ3JvdXBfbmFtZS5sZW5ndGggPSBzdHJsZW4oVEVTVF9H
|
||||
Uk9VUF9OQU1FKTsKCgljc19yZXBlYXQoY3NfcmVzID0gY3BnX21vZGVsX2luaXRpYWxpemUoJmNw
|
||||
Z19oYW5kbGUsIENQR19NT0RFTF9WMSwKCSAgICAoY3BnX21vZGVsX2RhdGFfdCAqKSZtb2RlbF9k
|
||||
YXRhLCBOVUxMKSk7Cglhc3NlcnQoY3NfcmVzID09IENTX09LKTsKCgljc19yZXBlYXQoY3NfcmVz
|
||||
ID0gY3BnX2pvaW4oY3BnX2hhbmRsZSwgJmdyb3VwX25hbWUpKTsKCWFzc2VydChjc19yZXMgPT0g
|
||||
Q1NfT0spOwoKCWNzX3JlcGVhdChjc19yZXMgPSBjcGdfbG9jYWxfZ2V0KGNwZ19oYW5kbGUsICZs
|
||||
b2NhbF9ub2RlaWQpKTsKCWFzc2VydChjc19yZXMgPT0gQ1NfT0spOwoJYXNzZXJ0KGxvY2FsX25v
|
||||
ZGVpZCA9PSBURVNUX05PREVJRCk7CgoJY3NfcmVwZWF0KGNzX3JlcyA9IGNwZ19mZF9nZXQoY3Bn
|
||||
X2hhbmRsZSwgJmNwZ19mZCkpOwoJYXNzZXJ0KGNzX3JlcyA9PSBDU19PSyk7CgoJZG8gewoJCXBm
|
||||
ZC5mZCA9IGNwZ19mZDsKCQlwZmQuZXZlbnRzID0gUE9MTElOOwoJCXBmZC5yZXZlbnRzID0gMDsK
|
||||
CgkJcG9sbF9yZXMgPSBwb2xsKCZwZmQsIDEsIElORlRJTSk7CgkJaWYgKHBvbGxfcmVzID09IC0x
|
||||
KSB7CgkJCXBlcnJvcigicG9sbF9yZXMgPT0gLTEiKTsKCQl9CgoJCWFzc2VydChwb2xsX3JlcyAh
|
||||
PSAwKTsKCQlhc3NlcnQocGZkLnJldmVudHMgJiBQT0xMSU4pOwoKCQljc19yZXBlYXQoY3NfcmVz
|
||||
ID0gY3BnX2Rpc3BhdGNoKGNwZ19oYW5kbGUsIENTX0RJU1BBVENIX0FMTCkpOwoJCWFzc2VydChj
|
||||
c19yZXMgPT0gQ1NfT0spOwoJfSB3aGlsZSAodGVzdF9jcGdfbG9vcF9jb250KTsKCgljc19yZXBl
|
||||
YXQoY3NfcmVzID0gY3BnX2xlYXZlKGNwZ19oYW5kbGUsICZncm91cF9uYW1lKSk7Cglhc3NlcnQo
|
||||
Y3NfcmVzID09IENTX09LKTsKCgljc19yZXBlYXQoY3NfcmVzID0gY3BnX2ZpbmFsaXplKGNwZ19o
|
||||
YW5kbGUpKTsKCWFzc2VydChjc19yZXMgPT0gQ1NfT0spOwoKCUxFQVZFKCk7Cn0KCmludAptYWlu
|
||||
KHZvaWQpCnsKCWludCBpOwoJcGlkX3QgZm9ya19yZXM7CglwaWRfdCB3YWl0X3JlczsKCWludCBz
|
||||
dGF0dXM7CgoJRU5URVIoKTsKCglzZXRsaW5lYnVmKHN0ZG91dCk7CgoJZm9yIChpID0gMDsgaSA8
|
||||
IE5PX0NISUxEUzsgaSsrKSB7CgkJbXlfaWQgPSBpOwoKCQlmb3JrX3JlcyA9IGZvcmsoKTsKCgkJ
|
||||
aWYgKGZvcmtfcmVzID09IC0xKSB7CgkJCXBlcnJvcigiZm9yayIpOwoJCX0KCgkJaWYgKGZvcmtf
|
||||
cmVzID09IDApIHsKCQkJLyoKCQkJICogQ2hpbGQKCQkJICovCgkJCWJyZWFrIDsKCQl9IGVsc2Ug
|
||||
ewoJCQkvKgoJCQkgKiBQYXJlbnQKCQkJICovCgkJCW15X2lkID0gLTE7CgkJfQoJfQoKCWlmIChm
|
||||
b3JrX3JlcyA9PSAwKSB7CgkJLyoKCQkgKiBDaGlsZCBydW5zIHRoZSB0ZXN0CgkJICovCgkJdGVz
|
||||
dF9jcGcoKTsKCX0gZWxzZSB7CgkJLyoKCQkgKiBXYWl0IGZvciBjaGlsZHMKCQkgKi8KCQlmb3Ig
|
||||
KGkgPSAwOyBpIDwgTk9fQ0hJTERTOyBpKyspIHsKCQkJd2FpdF9yZXMgPSB3YWl0KCZzdGF0dXMp
|
||||
OwoJCQlpZiAod2FpdF9yZXMgPT0gLTEpIHsKCQkJCXBlcnJvcigid2FpdCIpOwoJCQl9CgoJCQlh
|
||||
c3NlcnQoV0lGRVhJVEVEKHN0YXR1cykpOwoJCQlhc3NlcnQoV0VYSVRTVEFUVVMoc3RhdHVzKSA9
|
||||
PSAwKTsKCQl9Cgl9CgoJTEVBVkUoKTsKCglyZXR1cm4gKDApOwp9Cg==" | base64 -d | tee "/tmp/corosync-api-test-mp.c"
|
||||
# - corosync-api-test-mp.c
|
||||
##################
|
||||
# Test functions #
|
||||
##################
|
||||
test_corosync_v() {
|
||||
# Check corosync -v exits without error and
|
||||
# result version contain numbers in path format [0-9]*.[0-9]*.[0-9]
|
||||
ver_res=$(corosync -v)
|
||||
[ "$ver_res" != "${ver_res/[0-9]*\.[0-9]*\.[0-9]/}" ]
|
||||
}
|
||||
|
||||
test_corosync_keygen() {
|
||||
rm -f "$COROSYNC_AUTHKEY"
|
||||
corosync-keygen
|
||||
|
||||
# File exists
|
||||
[ -f "$COROSYNC_AUTHKEY" ]
|
||||
|
||||
# ... and is not empty (wc format is "SIZE FILENAME" - remove FILENAME part)
|
||||
wc_res=$(wc -c "$COROSYNC_AUTHKEY")
|
||||
[ "${wc_res%% *}" -gt 0 ]
|
||||
}
|
||||
|
||||
# test_corosync_start crypto
|
||||
# crypto can be on or off
|
||||
test_corosync_start() {
|
||||
generate_corosync_conf "$1" > "$COROSYNC_CONF"
|
||||
cat "$COROSYNC_CONF"
|
||||
|
||||
service_start "corosync"
|
||||
}
|
||||
|
||||
test_corosync_stop() {
|
||||
service_stop "corosync"
|
||||
}
|
||||
|
||||
test_corosync_quorumtool() {
|
||||
quorumtool_res_file=`mktemp`
|
||||
# This is already fixed in upstream db38e3958c4f88d5d06e8f7c83d6d90334d9fbd2
|
||||
(corosync-quorumtool -ips || true) | tee "$quorumtool_res_file"
|
||||
|
||||
# Ensure this is single node cluster
|
||||
grep -qi '^Nodes:.*1$' "$quorumtool_res_file"
|
||||
# Current node id is 1
|
||||
grep -qi '^Node ID:.*1$' "$quorumtool_res_file"
|
||||
# Is quorate (libquorum)
|
||||
grep -qi '^Quorate:.*Yes$' "$quorumtool_res_file"
|
||||
# Quorum is 1
|
||||
grep -qi '^Quorum:.*1' "$quorumtool_res_file"
|
||||
# Is quorate (libvotequorum)
|
||||
grep -qi '^Flags:.*Quorate' "$quorumtool_res_file"
|
||||
|
||||
rm -f "$quorumtool_res_file"
|
||||
}
|
||||
|
||||
test_corosync_cmapctl() {
|
||||
cmapctl_res_file=`mktemp`
|
||||
corosync-cmapctl | tee "$cmapctl_res_file"
|
||||
# cluster_name key exists in full output
|
||||
grep -qi '^totem.cluster_name (str) = smoketestcluster$' "$cmapctl_res_file"
|
||||
|
||||
corosync-cmapctl "totem." | tee "$cmapctl_res_file"
|
||||
# cluster_name key exists in reduced output
|
||||
grep -qi '^totem.cluster_name (str) = smoketestcluster$' "$cmapctl_res_file"
|
||||
|
||||
# cluster_name key should be returned
|
||||
corosync-cmapctl -g "totem.cluster_name" | tee "$cmapctl_res_file"
|
||||
grep -qi '^totem.cluster_name (str) = smoketestcluster$' "$cmapctl_res_file"
|
||||
|
||||
rm -f "$cmapctl_res_file"
|
||||
}
|
||||
|
||||
# test_corosync_reload - requires stopped corosync
|
||||
test_corosync_reload() {
|
||||
cmapctl_res_file=`mktemp`
|
||||
|
||||
test_corosync_start "off"
|
||||
|
||||
# Get current token timeout
|
||||
corosync-cmapctl -g "runtime.config.totem.token" | tee "$cmapctl_res_file"
|
||||
cmapctl_res=$(cat "$cmapctl_res_file")
|
||||
# Format is runtime.config.totem.token (u32) = value
|
||||
token_pre_reload=${cmapctl_res##* }
|
||||
[ "$token_pre_reload" -eq "$TOKEN_TIMEOUT" ]
|
||||
|
||||
# Generate new corosync.conf with token_timeout*10
|
||||
new_token_timeout=$((TOKEN_TIMEOUT*10))
|
||||
generate_corosync_conf "off" "$new_token_timeout" > "$COROSYNC_CONF"
|
||||
cat "$COROSYNC_CONF"
|
||||
|
||||
# Main call of the test
|
||||
corosync-cfgtool -R
|
||||
|
||||
# Check that new token timeout is in use
|
||||
corosync-cmapctl -g "runtime.config.totem.token" | tee "$cmapctl_res_file"
|
||||
cmapctl_res=$(cat "$cmapctl_res_file")
|
||||
# Format is runtime.config.totem.token (u32) = value
|
||||
token_post_reload=${cmapctl_res##* }
|
||||
[ "$token_post_reload" -eq "$new_token_timeout" ]
|
||||
|
||||
test_corosync_stop
|
||||
|
||||
rm -f "$cmapctl_res_file"
|
||||
}
|
||||
|
||||
test_corosync_api() {
|
||||
cflags=$(pkg-config --cflags libcpg)
|
||||
libs=$(pkg-config --libs libcpg)
|
||||
|
||||
gcc -ggdb -Wall $cflags "/tmp/corosync-api-test.c" \
|
||||
$libs -o "/tmp/corosync-api-test"
|
||||
|
||||
/tmp/corosync-api-test
|
||||
}
|
||||
|
||||
test_corosync_api_mp() {
|
||||
cflags=$(pkg-config --cflags libcpg)
|
||||
libs=$(pkg-config --libs libcpg)
|
||||
|
||||
gcc -ggdb -Wall $cflags "/tmp/corosync-api-test-mp.c" \
|
||||
$libs -o "/tmp/corosync-api-test-mp"
|
||||
|
||||
/tmp/corosync-api-test-mp
|
||||
}
|
||||
|
||||
test_corosync_man_pages() {
|
||||
# At least these man pages should be installed
|
||||
expected_mp="corosync corosync.conf corosync-cfgtool corosync-cmapctl
|
||||
corosync-keygen corosync-quorumtool"
|
||||
|
||||
for mp in $expected_mp;do
|
||||
man -w "$mp"
|
||||
done
|
||||
}
|
||||
|
||||
########
|
||||
# main #
|
||||
########
|
||||
if [ -z "$PREFIX" ];then
|
||||
echo "PREFIX not defined. Do not run *.inc.sh directly"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
test_corosync_v
|
||||
test_corosync_keygen
|
||||
test_corosync_man_pages
|
||||
|
||||
for crypto in "off" "on";do
|
||||
test_corosync_start "$crypto"
|
||||
test_corosync_quorumtool
|
||||
test_corosync_cmapctl
|
||||
test_corosync_api
|
||||
test_corosync_api_mp
|
||||
test_corosync_stop
|
||||
done
|
||||
|
||||
test_corosync_reload
|
||||
Loading…
Add table
Add a link
Reference in a new issue