xref: /freebsd/share/man/man4/carp.4 (revision 0d446a4303a8444c5ba9c7d4a3caee846579d101)
18e925890SGleb Smirnoff.\"	$OpenBSD: carp.4,v 1.16 2004/12/07 23:41:35 jmc Exp $
28e925890SGleb Smirnoff.\"
38e925890SGleb Smirnoff.\" Copyright (c) 2003, Ryan McBride.  All rights reserved.
408b68b0eSGleb Smirnoff.\" Copyright (c) 2011, Gleb Smirnoff <glebius@FreeBSD.org>
58e925890SGleb Smirnoff.\"
68e925890SGleb Smirnoff.\" Redistribution and use in source and binary forms, with or without
78e925890SGleb Smirnoff.\" modification, are permitted provided that the following conditions
88e925890SGleb Smirnoff.\" are met:
98e925890SGleb Smirnoff.\" 1. Redistributions of source code must retain the above copyright
108e925890SGleb Smirnoff.\"    notice, this list of conditions and the following disclaimer.
118e925890SGleb Smirnoff.\" 2. Redistributions in binary form must reproduce the above copyright
128e925890SGleb Smirnoff.\"    notice, this list of conditions and the following disclaimer in the
138e925890SGleb Smirnoff.\"    documentation and/or other materials provided with the distribution.
148e925890SGleb Smirnoff.\"
158e925890SGleb Smirnoff.\" THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
168e925890SGleb Smirnoff.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
178e925890SGleb Smirnoff.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
188e925890SGleb Smirnoff.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
198e925890SGleb Smirnoff.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
208e925890SGleb Smirnoff.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
218e925890SGleb Smirnoff.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
228e925890SGleb Smirnoff.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
238e925890SGleb Smirnoff.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
248e925890SGleb Smirnoff.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
258e925890SGleb Smirnoff.\" SUCH DAMAGE.
268e925890SGleb Smirnoff.\"
27*0d446a43SKristof Provost.Dd April 12, 2024
288e925890SGleb Smirnoff.Dt CARP 4
298e925890SGleb Smirnoff.Os
308e925890SGleb Smirnoff.Sh NAME
318e925890SGleb Smirnoff.Nm carp
328e925890SGleb Smirnoff.Nd Common Address Redundancy Protocol
338e925890SGleb Smirnoff.Sh SYNOPSIS
348e925890SGleb Smirnoff.Cd "device carp"
358e925890SGleb Smirnoff.Sh DESCRIPTION
3608b68b0eSGleb SmirnoffThe CARP allows multiple hosts on the same local network to share a set of
3708b68b0eSGleb SmirnoffIPv4 and/or IPv6 addresses.
388e925890SGleb SmirnoffIts primary purpose is to ensure that these
3908b68b0eSGleb Smirnoffaddresses are always available.
408e925890SGleb Smirnoff.Pp
418e925890SGleb SmirnoffTo use
428e925890SGleb Smirnoff.Nm ,
4384e3b10bSBenjamin Kadukthe administrator needs to configure at a minimum a common virtual host ID
4484e3b10bSBenjamin Kaduk(vhid), and attach at least one IP address to this vhid on each machine which
4508b68b0eSGleb Smirnoffis to take part in the virtual group.
4608b68b0eSGleb SmirnoffAdditional parameters can also be set on a per-vhid basis:
478e925890SGleb Smirnoff.Cm advbase
488e925890SGleb Smirnoffand
498e925890SGleb Smirnoff.Cm advskew ,
508e925890SGleb Smirnoffwhich are used to control how frequently the host sends advertisements when it
518e925890SGleb Smirnoffis the master for a virtual host, and
528e925890SGleb Smirnoff.Cm pass
533e630869SGleb Smirnoffwhich is used to authenticate
543e630869SGleb Smirnoff.Nm
553e630869SGleb Smirnoffadvertisements.
56762ce3e6SGleb SmirnoffThe
57762ce3e6SGleb Smirnoff.Cm advbase
58762ce3e6SGleb Smirnoffparameter stands for
59a4be0b3cSRuslan Ermilov.Dq "advertisement base" .
601a1fa3bdSGiorgos KeramidasIt is measured in seconds and specifies the base of the advertisement interval.
61762ce3e6SGleb SmirnoffThe
62762ce3e6SGleb Smirnoff.Cm advskew
63762ce3e6SGleb Smirnoffparameter stands for
64a4be0b3cSRuslan Ermilov.Dq "advertisement skew" .
65762ce3e6SGleb SmirnoffIt is measured in 1/256 of seconds.
66762ce3e6SGleb SmirnoffIt is added to the base advertisement interval to make one host advertise
67762ce3e6SGleb Smirnoffa bit slower that the other does.
68762ce3e6SGleb SmirnoffBoth
69762ce3e6SGleb Smirnoff.Cm advbase
70762ce3e6SGleb Smirnoffand
71762ce3e6SGleb Smirnoff.Cm advskew
72a4be0b3cSRuslan Ermilovare put inside CARP advertisements.
7384e3b10bSBenjamin KadukThese values can be configured using
748e925890SGleb Smirnoff.Xr ifconfig 8 ,
758e925890SGleb Smirnoffor through the
768e925890SGleb Smirnoff.Dv SIOCSVH
773e630869SGleb Smirnoff.Xr ioctl 2 .
788e925890SGleb Smirnoff.Pp
79b1a4ccddSKristof ProvostCARP defaults to using multicast messages, but can be configured to unicast
80b1a4ccddSKristof Provostannouncements to peers using the
81b1a4ccddSKristof Provost.Cm peer
82b1a4ccddSKristof Provostand
83b1a4ccddSKristof Provost.Cm peer6
84b1a4ccddSKristof Provostparameters. Default addresses can be restored using
85b1a4ccddSKristof Provost.Cm mcast
86b1a4ccddSKristof Provostand
87b1a4ccddSKristof Provost.Cm mcast6 .
88b1a4ccddSKristof ProvostNote that TTL verification is disabled if the peer address is not a multicast
89b1a4ccddSKristof Provostaddress.
90b1a4ccddSKristof ProvostThese values can be configured using
91b1a4ccddSKristof Provost.Xr ifconfig 8 ,
92b1a4ccddSKristof Provostor through the
93b1a4ccddSKristof Provost.Dv SIOCSPEER
94b1a4ccddSKristof Provost.Xr ioctl 2 .
95b1a4ccddSKristof Provost.Pp
96*0d446a43SKristof Provost.Xr carp 4
97*0d446a43SKristof Provostcan be configured to use either the non-standard CARP protocol, or VRRPv3 (RFC 5798).
98*0d446a43SKristof ProvostUse the
99*0d446a43SKristof Provost.Cm carpver
100*0d446a43SKristof Provostparameter to select either 2 (CARP) or 3 (VRRPv3).
101*0d446a43SKristof ProvostVRRPv3 specific parameters can be configured using the
102*0d446a43SKristof Provost.Cm vrrpprio
103*0d446a43SKristof Provostand
104*0d446a43SKristof Provost.Cm vrrpinterval
105*0d446a43SKristof Provostparameters.
106*0d446a43SKristof Provost.Pp
10784e3b10bSBenjamin KadukCARP virtual hosts can be configured on multicast-capable interfaces: Ethernet,
10808b68b0eSGleb Smirnofflayer 2 VLAN, FDDI and Token Ring.
10908b68b0eSGleb SmirnoffAn arbitrary number of virtual host IDs can be configured on an interface.
11008b68b0eSGleb SmirnoffAn arbitrary number of IPv4 or IPv6 addresses can be attached to a particular
11108b68b0eSGleb Smirnoffvhid.
11208b68b0eSGleb SmirnoffIt is important that all hosts participating in a vhid have the same list
1136dd9dfc4SKristof Provostof prefixes configured on the vhid, since all the prefixes are included in the
11408b68b0eSGleb Smirnoffcryptographic checksum supplied in each advertisement.
11508b68b0eSGleb SmirnoffMultiple vhids running on one interface participate in master/backup
11608b68b0eSGleb Smirnoffelections independently.
11708b68b0eSGleb Smirnoff.Pp
1188e925890SGleb SmirnoffAdditionally, there are a number of global parameters which can be set using
1198e925890SGleb Smirnoff.Xr sysctl 8 :
12084e3b10bSBenjamin Kaduk.Bl -tag -width ".Va net.inet.carp.ifdown_demotion_factor"
1213e630869SGleb Smirnoff.It Va net.inet.carp.allow
122167a3440SAlexander MotinAllow
1238e925890SGleb Smirnoff.Nm
124167a3440SAlexander Motinoperation.
125167a3440SAlexander MotinWhen disabled, virtual hosts remain in initial state, neither sending nor
126167a3440SAlexander Motinreceiving announcements or traffic.
1278e925890SGleb SmirnoffEnabled by default.
1283e630869SGleb Smirnoff.It Va net.inet.carp.preempt
1298e925890SGleb SmirnoffAllow virtual hosts to preempt each other.
130a1ae564eSGleb SmirnoffWhen enabled, a vhid in a backup state would preempt a master that
131a1ae564eSGleb Smirnoffis announcing itself with a lower advskew.
1328e925890SGleb SmirnoffDisabled by default.
1330d3d234cSKristof Provost.It Va net.inet.carp.dscp
1340d3d234cSKristof ProvostDSCP value in carp packet.
1350d3d234cSKristof ProvostValid Values are 0 to 63.
1360d3d234cSKristof ProvostA value of 4 is equivalent to the old standard of TOS LOW_DELAY.
1370d3d234cSKristof ProvostTOS values were deprecated and replaced by DSCP in 1998.
1380d3d234cSKristof ProvostThe default value is 56 (CS7/Network Control).
1393e630869SGleb Smirnoff.It Va net.inet.carp.log
14084e3b10bSBenjamin KadukDetermines what events relating to
14184e3b10bSBenjamin Kaduk.Nm
142e98adf39SBenjamin Kadukvhids are logged.
14384e3b10bSBenjamin KadukA value of 0 disables any logging.
14484e3b10bSBenjamin KadukA value of 1 enables logging state changes of
145442af10aSGleb Smirnoff.Nm
146a1ae564eSGleb Smirnoffvhids.
147acc0fee0SRuslan ErmilovValues above 1 enable logging of bad
148acc0fee0SRuslan Ermilov.Nm
149acc0fee0SRuslan Ermilovpackets.
15084e3b10bSBenjamin KadukThe default value is 1.
151f08535f8SGleb Smirnoff.It Va net.inet.carp.demotion
1526dd9dfc4SKristof ProvostThis value shows the current level of CARP demotion.
153f08535f8SGleb SmirnoffThe value is added to the actual advskew sent in announcements for
154f08535f8SGleb Smirnoffall vhids.
1556dd9dfc4SKristof ProvostDuring normal system operation the demotion factor is zero.
156f08535f8SGleb SmirnoffHowever, problematic conditions raise its level: when
157f08535f8SGleb Smirnoff.Nm
158f08535f8SGleb Smirnoffexperiences problem with sending announcements, when an interface
159f08535f8SGleb Smirnoffrunning a vhid goes down, or while the
1601771f872SGleb Smirnoff.Xr pfsync 4
1611771f872SGleb Smirnoffinterface is not synchronized.
1627951008bSGleb SmirnoffThe demotion factor can be adjusted writing to the sysctl oid.
1637951008bSGleb SmirnoffThe signed value supplied to the
1647951008bSGleb Smirnoff.Xr sysctl 8
1657951008bSGleb Smirnoffcommand is added to current demotion factor.
1667951008bSGleb SmirnoffThis allows to control
167f08535f8SGleb Smirnoff.Nm
1687951008bSGleb Smirnoffbehaviour depending on some external conditions, for example on the status
1697951008bSGleb Smirnoffof some daemon utility.
170f08535f8SGleb Smirnoff.It Va net.inet.carp.ifdown_demotion_factor
17184e3b10bSBenjamin KadukThis value is added to
172f08535f8SGleb Smirnoff.Va net.inet.carp.demotion
17384e3b10bSBenjamin Kadukwhen an interface running a vhid goes down.
17484e3b10bSBenjamin KadukThe default value is 240 (the maximum advskew value).
175f08535f8SGleb Smirnoff.It Va net.inet.carp.senderr_demotion_factor
17684e3b10bSBenjamin KadukThis value is added to
177f08535f8SGleb Smirnoff.Va net.inet.carp.demotion
178f08535f8SGleb Smirnoffwhen
179f08535f8SGleb Smirnoff.Nm
180f08535f8SGleb Smirnoffexperiences errors sending its announcements.
18184e3b10bSBenjamin KadukThe default value is 240 (the maximum advskew value).
1828e925890SGleb Smirnoff.El
18308b68b0eSGleb Smirnoff.\".Sh ARP level load balancing
18484e3b10bSBenjamin Kaduk.\"A
18508b68b0eSGleb Smirnoff.\".Nm
18684e3b10bSBenjamin Kaduk.\"interface has limited abilities for load balancing incoming connections
18784e3b10bSBenjamin Kaduk.\"between hosts in an Ethernet network.
18884e3b10bSBenjamin Kaduk.\"For load-balancing operation, one needs several CARP interfaces that
18908b68b0eSGleb Smirnoff.\"are configured to the same IP address, but to a different vhids.
19008b68b0eSGleb Smirnoff.\"Once an ARP request is received, the CARP protocol will use a hashing
19108b68b0eSGleb Smirnoff.\"function against the source IP address in the ARP request to determine
19284e3b10bSBenjamin Kaduk.\"which vhid the request will be assigned to.
19384e3b10bSBenjamin Kaduk.\"If the corresponding CARP interface is the current
19484e3b10bSBenjamin Kaduk.\"master interface, a reply will
19584e3b10bSBenjamin Kaduk.\"be sent to the ARP request;
19684e3b10bSBenjamin Kaduk.\"otherwise it will be ignored.
19708b68b0eSGleb Smirnoff.\"See the
19808b68b0eSGleb Smirnoff.\".Sx EXAMPLES
19908b68b0eSGleb Smirnoff.\"section for a practical example of load balancing.
20008b68b0eSGleb Smirnoff.\".Pp
20184e3b10bSBenjamin Kaduk.\"The ARP load balancing implemented in
20284e3b10bSBenjamin Kaduk.\".Nm
20384e3b10bSBenjamin Kaduk.\"has some limitations.
20408b68b0eSGleb Smirnoff.\"First, ARP balancing only works on the local network segment.
20508b68b0eSGleb Smirnoff.\"It cannot balance traffic that crosses a router, because the
20608b68b0eSGleb Smirnoff.\"router itself will always be balanced to the same virtual host.
20708b68b0eSGleb Smirnoff.\"Second, ARP load balancing can lead to asymmetric routing
20808b68b0eSGleb Smirnoff.\"of incoming and outgoing traffic, and thus combining it with
20908b68b0eSGleb Smirnoff.\".Xr pfsync 4
21008b68b0eSGleb Smirnoff.\"is dangerous, because this creates a race condition between
21108b68b0eSGleb Smirnoff.\"balanced routers and a host they are serving.
21208b68b0eSGleb Smirnoff.\"Imagine an incoming packet creating state on the first router, being
21384e3b10bSBenjamin Kaduk.\"forwarded to its destination, and the destination replying faster
21408b68b0eSGleb Smirnoff.\"than the state information is packed and synced with the second router.
21508b68b0eSGleb Smirnoff.\"If the reply would be load balanced to second router, it will be
21684e3b10bSBenjamin Kaduk.\"dropped since the second router has not yet received information about
21784e3b10bSBenjamin Kaduk.\"the connection state.
218cc8b2291SGleb Smirnoff.Sh STATE CHANGE NOTIFICATIONS
219cc8b2291SGleb SmirnoffSometimes it is useful to get notified about
220cc8b2291SGleb Smirnoff.Nm
221cc8b2291SGleb Smirnoffstatus change events.
222cc8b2291SGleb SmirnoffThis can be accomplished by using
223cc8b2291SGleb Smirnoff.Xr devd 8
224cc8b2291SGleb Smirnoffhooks.
22508b68b0eSGleb SmirnoffMaster/slave events are signalled under system
22608b68b0eSGleb Smirnoff.Dv CARP .
22784e3b10bSBenjamin KadukThe subsystem specifies the vhid and name of the interface where
22884e3b10bSBenjamin Kadukthe master/slave event occurred.
22984e3b10bSBenjamin KadukThe type of the message displays the new state of the vhid.
230cc8b2291SGleb SmirnoffPlease see
231cc8b2291SGleb Smirnoff.Xr devd.conf 5
23284e3b10bSBenjamin Kadukand the
233cc8b2291SGleb Smirnoff.Sx EXAMPLES
234cc8b2291SGleb Smirnoffsection for more information.
2358e925890SGleb Smirnoff.Sh EXAMPLES
2368e925890SGleb SmirnoffFor firewalls and routers with multiple interfaces, it is desirable to
237a1ae564eSGleb Smirnofffailover all of the addresses running
2388e925890SGleb Smirnoff.Nm
239a1ae564eSGleb Smirnofftogether, when one of the physical interfaces goes down.
24084e3b10bSBenjamin KadukThis is achieved by the use of the preempt option.
24184e3b10bSBenjamin KadukEnable it on both hosts A and B:
2428e925890SGleb Smirnoff.Pp
2433e630869SGleb Smirnoff.Dl sysctl net.inet.carp.preempt=1
2448e925890SGleb Smirnoff.Pp
24508b68b0eSGleb SmirnoffAssume that host A is the preferred master and we are running the
24608b68b0eSGleb Smirnoff192.168.1.0/24 prefix on em0 and 192.168.2.0/24 on em1.
247da4d5bb7SDmitry MorozovskyThis is the setup for host A (advskew is above 0 so it could be overwritten
248da4d5bb7SDmitry Morozovskyin the emergency situation from the other host):
2498e925890SGleb Smirnoff.Bd -literal -offset indent
250da4d5bb7SDmitry Morozovskyifconfig em0 vhid 1 advskew 100 pass mekmitasdigoat 192.168.1.1/24
251da4d5bb7SDmitry Morozovskyifconfig em1 vhid 2 advskew 100 pass mekmitasdigoat 192.168.2.1/24
2528e925890SGleb Smirnoff.Ed
2538e925890SGleb Smirnoff.Pp
2543e630869SGleb SmirnoffThe setup for host B is identical, but it has a higher
2553e630869SGleb Smirnoff.Cm advskew :
2568e925890SGleb Smirnoff.Bd -literal -offset indent
257da4d5bb7SDmitry Morozovskyifconfig em0 vhid 1 advskew 200 pass mekmitasdigoat 192.168.1.1/24
258da4d5bb7SDmitry Morozovskyifconfig em1 vhid 2 advskew 200 pass mekmitasdigoat 192.168.2.1/24
2598e925890SGleb Smirnoff.Ed
2608e925890SGleb Smirnoff.Pp
261a1ae564eSGleb SmirnoffWhen one of the physical interfaces of host A fails,
2623e630869SGleb Smirnoff.Cm advskew
263a1ae564eSGleb Smirnoffis demoted to a configured value on all its
2648e925890SGleb Smirnoff.Nm
265a1ae564eSGleb Smirnoffvhids.
266a1ae564eSGleb SmirnoffDue to the preempt option, host B would start announcing itself, and thus
267a1ae564eSGleb Smirnoffpreempt host A on both interfaces instead of just the failed one.
26808b68b0eSGleb Smirnoff.\".Pp
26908b68b0eSGleb Smirnoff.\"In order to set up an ARP balanced virtual host, it is necessary to configure
27008b68b0eSGleb Smirnoff.\"one virtual host for each physical host which would respond to ARP requests
27108b68b0eSGleb Smirnoff.\"and thus handle the traffic.
27208b68b0eSGleb Smirnoff.\"In the following example, two virtual hosts are configured on two hosts to
27308b68b0eSGleb Smirnoff.\"provide balancing and failover for the IP address 192.168.1.10.
27408b68b0eSGleb Smirnoff.\".Pp
27508b68b0eSGleb Smirnoff.\"First the
27608b68b0eSGleb Smirnoff.\".Nm
27708b68b0eSGleb Smirnoff.\"interfaces on host A are configured.
27808b68b0eSGleb Smirnoff.\"The
27908b68b0eSGleb Smirnoff.\".Cm advskew
28008b68b0eSGleb Smirnoff.\"of 100 on the second virtual host means that its advertisements will be sent
28108b68b0eSGleb Smirnoff.\"out slightly less frequently.
28208b68b0eSGleb Smirnoff.\".Bd -literal -offset indent
28308b68b0eSGleb Smirnoff.\"ifconfig carp0 create
284da4d5bb7SDmitry Morozovsky.\"ifconfig carp0 vhid 1 advskew 100 pass mekmitasdigoat 192.168.1.10/24
28508b68b0eSGleb Smirnoff.\"ifconfig carp1 create
286da4d5bb7SDmitry Morozovsky.\"ifconfig carp1 vhid 2 advskew 200 pass mekmitasdigoat 192.168.1.10/24
28708b68b0eSGleb Smirnoff.\".Ed
28808b68b0eSGleb Smirnoff.\".Pp
28908b68b0eSGleb Smirnoff.\"The configuration for host B is identical, except the
29008b68b0eSGleb Smirnoff.\".Cm advskew
29108b68b0eSGleb Smirnoff.\"is on virtual host 1 rather than virtual host 2.
29208b68b0eSGleb Smirnoff.\".Bd -literal -offset indent
29308b68b0eSGleb Smirnoff.\"ifconfig carp0 create
294da4d5bb7SDmitry Morozovsky.\"ifconfig carp0 vhid 1 advskew 200 pass mekmitasdigoat 192.168.1.10/24
29508b68b0eSGleb Smirnoff.\"ifconfig carp1 create
296da4d5bb7SDmitry Morozovsky.\"ifconfig carp1 vhid 2 advskew 100 pass mekmitasdigoat 192.168.1.10/24
29708b68b0eSGleb Smirnoff.\".Ed
29808b68b0eSGleb Smirnoff.\".Pp
29908b68b0eSGleb Smirnoff.\"Finally, the ARP balancing feature must be enabled on both hosts:
30008b68b0eSGleb Smirnoff.\".Pp
30108b68b0eSGleb Smirnoff.\".Dl sysctl net.inet.carp.arpbalance=1
30208b68b0eSGleb Smirnoff.\".Pp
30308b68b0eSGleb Smirnoff.\"When the hosts receive an ARP request for 192.168.1.10, the source IP address
30408b68b0eSGleb Smirnoff.\"of the request is used to compute which virtual host should answer the request.
30508b68b0eSGleb Smirnoff.\"The host which is master of the selected virtual host will reply to the
30608b68b0eSGleb Smirnoff.\"request, the other(s) will ignore it.
30708b68b0eSGleb Smirnoff.\".Pp
30808b68b0eSGleb Smirnoff.\"This way, locally connected systems will receive different ARP replies and
30908b68b0eSGleb Smirnoff.\"subsequent IP traffic will be balanced among the hosts.
31008b68b0eSGleb Smirnoff.\"If one of the hosts fails, the other will take over the virtual MAC address,
31108b68b0eSGleb Smirnoff.\"and begin answering ARP requests on its behalf.
312cc8b2291SGleb Smirnoff.Pp
313cc8b2291SGleb SmirnoffProcessing of
314cc8b2291SGleb Smirnoff.Nm
31508b68b0eSGleb Smirnoffstatus change events can be set up by using the following devd.conf rule:
316cc8b2291SGleb Smirnoff.Bd -literal -offset indent
317cc8b2291SGleb Smirnoffnotify 0 {
31808b68b0eSGleb Smirnoff	match "system"          "CARP";
3199f0b5687SDaniel Ebdrup Jensen	match "subsystem"       "[0-9]+@[0-9a-z\.]+";
32008b68b0eSGleb Smirnoff	match "type"            "(MASTER|BACKUP)";
32108b68b0eSGleb Smirnoff	action "/root/carpcontrol.sh $subsystem $type";
322cc8b2291SGleb Smirnoff};
323cc8b2291SGleb Smirnoff.Ed
3249c883c6cSGleb Smirnoff.Pp
3259c883c6cSGleb SmirnoffTo see
3269c883c6cSGleb Smirnoff.Nm
3279c883c6cSGleb Smirnoffpackets decoded in
328e81210c1SEdward Tomasz Napierala.Xr tcpdump 1
3296dd9dfc4SKristof Provostoutput, one needs to specify the
3309c883c6cSGleb Smirnoff.Fl T Ar carp
3319c883c6cSGleb Smirnoffoption, otherwise
332e81210c1SEdward Tomasz Napierala.Xr tcpdump 1
3336dd9dfc4SKristof Provostwill interpret them as VRRP packets:
3349c883c6cSGleb Smirnoff.Bd -literal -offset indent
3359c883c6cSGleb Smirnofftcpdump -npi vlan0 -T carp
3369c883c6cSGleb Smirnoff.Ed
3378e925890SGleb Smirnoff.Sh SEE ALSO
338e81210c1SEdward Tomasz Napierala.Xr tcpdump 1 ,
3398e925890SGleb Smirnoff.Xr inet 4 ,
3401771f872SGleb Smirnoff.Xr pfsync 4 ,
3411eefdc3bSGleb Smirnoff.Xr devd.conf 5 ,
342923544aaSBaptiste Daroussin.Xr rc.conf 5 ,
343a4be0b3cSRuslan Ermilov.Xr ifconfig 8 ,
344e81210c1SEdward Tomasz Napierala.Xr sysctl 8
3458e925890SGleb Smirnoff.Sh HISTORY
3468e925890SGleb SmirnoffThe
3478e925890SGleb Smirnoff.Nm
3488e925890SGleb Smirnoffdevice first appeared in
3498e925890SGleb Smirnoff.Ox 3.5 .
3508e925890SGleb SmirnoffThe
3518e925890SGleb Smirnoff.Nm
3523e630869SGleb Smirnoffdevice was imported into
3538e925890SGleb Smirnoff.Fx 5.4 .
35408b68b0eSGleb SmirnoffIn
35584e3b10bSBenjamin Kaduk.Fx 10.0 ,
35608b68b0eSGleb Smirnoff.Nm
35708b68b0eSGleb Smirnoffwas significantly rewritten, and is no longer a pseudo-interface.
358