[arch-commits] Commit in ucarp/repos (6 files)

Evangelos Foutras foutrelis at archlinux.org
Tue Jul 7 21:37:37 UTC 2020

    Date: Tuesday, July 7, 2020 @ 21:37:37
  Author: foutrelis
Revision: 660447

archrelease: copy trunk to community-staging-x86_64

    (from rev 660446, ucarp/trunk/01-fix-getopt.patch)
    (from rev 660446, ucarp/trunk/02-fix-downscript-on-error.patch)
    (from rev 660446, ucarp/trunk/PKGBUILD)
    (from rev 660446, ucarp/trunk/ucarp.8)
    (from rev 660446, ucarp/trunk/ucarp.service)

 01-fix-getopt.patch              |   11 ++
 02-fix-downscript-on-error.patch |   12 +++
 PKGBUILD                         |   65 ++++++++++++++++
 ucarp.8                          |  147 +++++++++++++++++++++++++++++++++++++
 ucarp.service                    |    8 ++
 5 files changed, 243 insertions(+)

Copied: ucarp/repos/community-staging-x86_64/01-fix-getopt.patch (from rev 660446, ucarp/trunk/01-fix-getopt.patch)
--- community-staging-x86_64/01-fix-getopt.patch	                        (rev 0)
+++ community-staging-x86_64/01-fix-getopt.patch	2020-07-07 21:37:37 UTC (rev 660447)
@@ -0,0 +1,11 @@
+--- ucarp-1.5.1.orig/src/ucarp_p.h
++++ ucarp-1.5.1/src/ucarp_p.h
+@@ -1,7 +1,7 @@
+ #ifndef __CARP_P_H__
+ #define __CARP_P_H__ 1
+-static const char *GETOPT_OPTIONS = "i:s:v:p:Pa:hb:k:x:nu:d:r:zf:BoSM";
++static const char *GETOPT_OPTIONS = "i:s:v:p:Pa:hb:k:x:nu:d:r:zf:Bo:SM";
+ static struct option long_options[] = {
+     { "interface", 1, NULL, 'i' },

Copied: ucarp/repos/community-staging-x86_64/02-fix-downscript-on-error.patch (from rev 660446, ucarp/trunk/02-fix-downscript-on-error.patch)
--- community-staging-x86_64/02-fix-downscript-on-error.patch	                        (rev 0)
+++ community-staging-x86_64/02-fix-downscript-on-error.patch	2020-07-07 21:37:37 UTC (rev 660447)
@@ -0,0 +1,12 @@
+--- ucarp-1.5.1.orig/src/carp.c
++++ ucarp-1.5.1/src/carp.c
+@@ -843,6 +843,9 @@
+         if ((pfds[0].revents & (POLLERR | POLLHUP)) != 0) {
+             logfile(LOG_ERR, _("exiting: pfds[0].revents = %d"),
+                     pfds[0].revents);
++            if ((sc.sc_state != BACKUP) && (shutdown_at_exit != 0)) {
++                (void) spawn_handler(dev_desc_fd, downscript);
++            }
+             break;
+         }
+         if (gettimeofday(&now, NULL) != 0) {

Copied: ucarp/repos/community-staging-x86_64/PKGBUILD (from rev 660446, ucarp/trunk/PKGBUILD)
--- community-staging-x86_64/PKGBUILD	                        (rev 0)
+++ community-staging-x86_64/PKGBUILD	2020-07-07 21:37:37 UTC (rev 660447)
@@ -0,0 +1,65 @@
+# Maintainer: Sébastien Luttringer
+pkgdesc='Userspace implementation of the CARP protocol'
+        "$pkgname.service"
+        "$pkgname.8"
+        '01-fix-getopt.patch'
+        '02-fix-downscript-on-error.patch')
+validpgpkeys=('54A2B8892CC3D6A597B92B6C210627AABA709FE1') # Frank Denis
+         'SKIP'
+         'fdc72a8d6f89224b40c78705df1f46f9'
+         '2ccfdc464b88c437b38bd0324cf1fef3'
+         '3f20699aaf2ef8139dcd337f1e7f06ab'
+         '09d26233c37956cf08e629554a91b8cd')
+prepare() {
+  cd $pkgname-$pkgver
+  # apply patch from the source array (should be a pacman feature)
+  local filename
+  for filename in "${source[@]}"; do
+    if [[ "$filename" =~ \.patch$ ]]; then
+      msg2 "Applying patch ${filename##*/}"
+      patch -p1 -N -i "$srcdir/${filename##*/}"
+    fi
+  done
+  :
+build() {
+  cd $pkgname-$pkgver
+  CFLAGS+=' -fcommon' # https://wiki.gentoo.org/wiki/Gcc_10_porting_notes/fno_common
+  ./configure --prefix=/usr --sbindir=/usr/bin
+  make
+package() {
+  pushd $pkgname-$pkgver
+  make DESTDIR="$pkgdir" install
+  # install examples files
+  install -D -m 644 examples/linux/vip-down.sh \
+    "$pkgdir/usr/share/doc/$pkgname/examples/vip-down.sh"
+  install -D -m 644 examples/linux/vip-up.sh \
+    "$pkgdir/usr/share/doc/$pkgname/examples/vip-up.sh"
+  # install README
+  install -D -m 644 README "$pkgdir/usr/share/doc/$pkgname/README"
+  popd
+  # add manpage
+  install -D -m 644 $pkgname.8 "$pkgdir/usr/share/man/man8/$pkgname.8"
+  # systemd
+  install -D -m 644 $pkgname.service \
+    "$pkgdir/usr/lib/systemd/system/$pkgname.service"
+# vim:set ts=2 sw=2 et:

Copied: ucarp/repos/community-staging-x86_64/ucarp.8 (from rev 660446, ucarp/trunk/ucarp.8)
--- community-staging-x86_64/ucarp.8	                        (rev 0)
+++ community-staging-x86_64/ucarp.8	2020-07-07 21:37:37 UTC (rev 660447)
@@ -0,0 +1,147 @@
+.TH "UCARP" "8" 
+.SH "NAME" 
+ucarp \(em Automatic IP failover 
+\fBucarp\fR [\fB-i, \-\-interface=\fIINTERFACE\fR\fP]  [\fB-s, \-\-srcip=\fIIPADDRESS\fR\fP]  
+[\fB-v, \-\-vhid=\fIVHID\fR\fP]  [\fB-p, \-\-pass=\fIPASSWORD\fR\fP]  [\fB-o, \-\-passfile=\fIPASSFILE\fR\fP]  
+[\fB-P, \-\-preempt\fP]  [\fB-n, \-\-neutral\fP]  [\fB-a, \-\-addr=\fIIPADDR\fR\fP]  [\fB-h, \-\-help\fP]  
+[\fB-b, \-\-advbase=\fISECS\fR\fP]  [\fB-k, \-\-advskew=\fISKEW\fR\fP]  [\fB-u, \-\-upscript=\fISCRIPT\fR\fP]  
+[\fB-d, \-\-downscript=\fISCRIPT\fR\fP]  [\fB-r, \-\-deadratio=\fIRATIO\fR\fP]  [\fB-z, \-\-shutdown\fP]  
+[\fB-B, \-\-daemonize\fP]  [\fB-f, \-\-facility=\fIFACILITY\fR\fP]  [\fB-x, \-\-xparam \fIPARAM\fR\fP]  
+[\fB-S, \-\-ignoreifstate\fP]  [\fB-M, \-\-nomcast\fP]  
+ucarp allows a pair of hosts to share common IP addresses in 
+order to provide automatic failover of an address from one machine to  
+another. It is a portable userland implementation of the secure and  
+patent-free Common Address Redundancy Protocol, (CARP), OpenBSD's 
+alternative to VRRP. 
+ucarp supports the following command line options: 
+.IP "\fB-i \fIINTERFACE\fR\fP\fB \-\-interface=\fIINTERFACE\fR\fP" 10 
+The network interface to bind to. 
+.IP "\fB-s \fIIPADDRESS\fR\fP\fB \-\-srcip=\fIIPADDRESS\fR\fP" 10 
+The persistent source address, (real IP), associated with this 
+.IP "\fB-v \fIVHID\fR\fP\fB \-\-vhid=\fIVHID\fR\fP" 10 
+The id of the virtual server [1-255]. 
+.IP "\fB-p \fIPASSWORD\fR\fP\fB \-\-pass=\fIPASSWORD\fR\fP" 10 
+The shared password, (this gets encrypted and is not sent in the 
+.IP "\fB-o \fIPASSFILE\fR\fP\fB \-\-passfile=\fIPASSFILE\fR\fP" 10 
+File to read the shared password from. The file specified 
+should contain the password on the first line of the file. 
+.IP "\fB-P \fP\fB\-\-preempt\fP" 10 
+Turn on preemptive failover. This causes an instance of  
+ucarp to assume master status right immediately. 
+.IP "\fB-n \fP\fB\-\-neutral\fP" 10 
+Do not run the downscript on startup when the  
+initial state is backup. 
+.IP "\fB-a \fIIPADDRESS\fR\fP\fB \-\-addr=\fIIPADDRESS\fR\fP" 10 
+The IP address of the virtual server. 
+.IP "\fB-h \fP\fB\-\-help\fP" 10 
+Display a brief summary of the command line options. 
+.IP "\fB-b \fISECONDS\fR\fP\fB \-\-advbase=\fISECONDS\fR\fP" 10 
+Interval in seconds that advertisements will occur, (defaults  
+to 1 second). 
+.IP "\fB-k \fISKEW\fR\fP\fB \-\-advskew=\fISKEW\fR\fP" 10 
+Advertisement skew [1-255], (defaults to 0). 
+.IP "\fB-u \fICOMMAND\fR\fP\fB \-\-upscript=\fICOMMAND\fR\fP" 10 
+Specifies the command to run after ucarp has successfully 
+become master, the interface name gets passed as an argument.  
+Typically a script used to bring up the virtual address, log the 
+result, add routes, clear arp cache entries, etc. 
+.IP "\fB-d \fICOMMAND\fR\fP\fB \-\-downscript=\fICOMMAND\fR\fP" 10 
+Specifies the command that is run after ucarp has 
+transitioned to the backup state, the interface name is passed 
+as an argument. This is typically a script used to bring down  
+the virtual interface, log the action, remove routes, etc. 
+.IP "\fB-r \fIRATIO\fR\fP\fB \-\-deadratio=\fIRATIO\fR\fP" 10 
+Ratio used by the backup to determine how long to wait for an 
+unresponsive master before considering it dead. 
+.IP "\fB-z\fP\fB \-\-shutdown\fP" 10 
+Use of this command causes the command specified by the \-d  
+argument to be invoked when ucarp shuts down. 
+.IP "\fB-B\fP\fB \-\-daemonize\fP" 10 
+Causes ucarp to detach from the terminal and run in the 
+background as a daemon. 
+.IP "\fB-f\fP\fB \-\-facility\fP" 10 
+Set the syslog facility, defaults to daemon. 
+.IP "\fB-x \fIPARAMETER\fR\fP\fB \-\-xparam=\fIPARAMETER\fR\fP" 10 
+Specify an extra parameter to be supplied to the up/down 
+.IP "\fB-S\fP\fB \-\-ignoreifstate\fP" 10 
+Ignore unplugged network cables. This option is useful when 
+ucarp nodes are connected with a crossover cable. Without 
+this option the master will transition to backup when the other 
+node is powered down, as it no longer has a link (NO-CARRIER). 
+.IP "\fB-M\fP\fB \-\-nomcast\fP" 10 
+Use broadcast instead of multicast advertisements. 
+A host with a real IP of configured to be the master 
+in a preemptive configuration with a virtual IP of 
+\fB    \fPucarp \-i eth0 \-s \-v 10 \-p secret \-a \\ 
+\fB    \fP\-\-upscript=/usr/local/sbin/vip-up.sh \-\-downscript=/usr/local/sbin/vip-down.sh \-P 
+The backup might be configured something like this. 
+\fB    \fPucarp \-i eth0 \-s \-v 10 \-p secret \-a \\ 
+\fB    \fP\-\-upscript=/usr/local/sbin/vip-up.sh \-\-downscript=/usr/local/sbin/vip-down.sh 
+A machine with a real IP of is the preferred master for 
+a virtual IP of, broadcasts are sent every 5 seconds. 
+\fB    \fPucarp \-b 5 \-s \-v 27 \-p badpass \-a \\ 
+\fB    \fP-u /usr/local/sbin/vip-up.sh \-d /usr/local/sbin/vip-down.sh \-z 
+The hot standby with an IP of uses the following  
+command, (note the advskew of 50 putting it at a disadvantage and making 
+the first machine preferred). 
+\fB    \fPucarp \-b 5 \-k 50 \-s \-v 27 \-p badpass \-a \\ 
+\fB    \fP-u /usr/local/sbin/vip-up.sh \-d /usr/local/sbin/vip-down.sh \-z 
+Sending the ucarp process a SIGUSR1 will have it log a status 
+line to syslog, eg "Sep 13 12:59:56 localhost ucarp[2654]: [INFO] 
+MASTER on eth0 id 1" or "Sep 13 13:00:25 localhost ucarp[2644]: [INFO] 
+BACKUP on eth0 id 1" 
+Sending the ucarp process a SIGUSR2 will cause it to demote itself 
+from master to backup, pause 3 seconds, then proceed as usual to listen 
+for other masters, and promote itself if necessary. This could be useful 
+if you wish another node to take over master. 
+ucarp was written by Frank Denis, <j at ucarp.org>. 
+This manual page was written by Eric Evans <eevans at debian.org> 
+for \fBDebian\fP and adapted to \fBArchlinux\fP 
+by Sébastien Luttringer <seblu at archlinux.org>.  Permission is 
+granted to copy, distribute and/or modify this document under 
+the terms of the GNU General Public License, Version 2 or any  
+later version published by the Free Software Foundation. 
+On Archlinux systems, the complete text of the GNU General Public 
+License can be found in /usr/share/licenses/common/GPL. 

Copied: ucarp/repos/community-staging-x86_64/ucarp.service (from rev 660446, ucarp/trunk/ucarp.service)
--- community-staging-x86_64/ucarp.service	                        (rev 0)
+++ community-staging-x86_64/ucarp.service	2020-07-07 21:37:37 UTC (rev 660447)
@@ -0,0 +1,8 @@
+Description=UCARP daemon

More information about the arch-commits mailing list