summaryrefslogtreecommitdiff
path: root/sys/netinet/ip_carp.c
AgeCommit message (Collapse)Author
2009-06-17Correctly handle the carp demote counter in all input cases.Marco Pfatschbacher
E.g. give up the MASTER status if there's a host with a lower demote count, even if it has a higher advskew. At the moment this shouldn't cause any change, but this is a first step towards the removal of the "bump the advskew to 240 in case of errors" hack, without breaking backward compatibility. OK henning@
2009-06-05Initial support for routing domains. This allows to bind interfaces toClaudio Jeker
alternate routing table and separate them from other interfaces in distinct routing tables. The same network can now be used in any doamin at the same time without causing conflicts. This diff is mostly mechanical and adds the necessary rdomain checks accross net and netinet. L2 and IPv4 are mostly covered still missing pf and IPv6. input and tested by jsg@, phessler@ and reyk@. "put it in" deraadt@
2008-10-28Do not keep retrying to send advertisements if there isMarco Pfatschbacher
no carpdev configured. I don't see how we can run into this at all, but let's leave this test for a a little extra safety. OK henning@
2008-09-03Prevent a possible overflow when the sum of all demotion countersMarco Pfatschbacher
gets bigger than 255. OK henning@
2008-06-14add carppeer; an option to specify a different multicast address orReyk Floeter
even the unicast address of the remote carp peer. this especially helps when the multicast carp advertisements are causing problems in the network (some crappy switches don't do well with multicast), there are conflicts with VRRP, or the policy of the network does not allow multicast (most Internet eXchange points didn't allow carped OpenBGP routers because of the multicast advertisements). discussed with many ok mpf@
2008-06-13Do not log carp state transitions from or to INIT by default.Marco Pfatschbacher
Reduces the amount of dmesg noise. Tested and OK mcbride@
2008-06-09rename arc4random_bytes => arc4random_buf to match libc's nicer name;Damien Miller
ok deraadt@
2008-05-07Implement routing priorities. Every route inserted has a priority assignedClaudio Jeker
and the one route with the lowest number wins. This will be used by the routing daemons to resolve the synchronisations issue in case of conflicts. The nasty bits of this are in the multipath code. If no priority is specified the kernel will choose an appropriate priority. Looked at by a few people at n2k8 code is much older
2008-05-06Use the standard syslog levels on CARP logging messages instead ofRyan Thomas McBride
simple on/off, allowing more control over how verbose the logging is. This also allows you to do a further level of filtering in syslog.conf if you need to. Also add logging of state changes, inspired by diff provided by Brian A. Seklecki in PR 5513. These messages are logged by default. ok henning mpf deraadt
2008-02-20Add my copyright.Marco Pfatschbacher
OK mcbride@, mickey@
2008-02-05Move carp load balancing (ARP/IP) to a simpler configuration scheme.Marco Pfatschbacher
Instead of using the same IP on multiple interfaces, carp has to be configured with the new "carpnodes" and "balancing" options. # ifconfig carp0 carpnodes 1:0,2:100,3:100 balancing ip carpdev sis0 192.168.5.50 Please note, that this is a flag day for anyone using carp balancing. You'll need to adjust your configuration accordingly. Addititionally this diff adds IPv6 NDP balancing support. Tested and OK mcbride@, reyk@. Manpage help by jmc@.
2008-01-02return with ENOTTY instead of EINVAL for unknown ioctl requests.Brad Smith
ok claudio@ krw@ dlg@
2007-12-14add sysctl entry points into various network layers, in particular toTheo de Raadt
provide netstat(1) with data it needs; ok claudio reyk
2007-11-27Make carp(4) behave more like a ethernet interface by initalizing theClaudio Jeker
IPv4 interface address similar to arp_ifinit(). The main difference is that we do not send out a gracious arp as the carp(4) is not ready to send at that moment. This will make backup interface show up like the master ones. OK mpf@ earlier version OK henning@ mcbride@
2007-11-26MALLOC -> malloc and M_ZERO changeCharles Longeau
ok mpf@ henning@
2007-11-22pass the carp ifp to rt_missmsg() when generating the RTM_ADD messagesHenning Brauer
so the resulting messages have ifindex set and the routing daemons can correctly indentify that route as connected. ok mcbride
2007-11-22Factor out the virtual host portion of carp into a separate structMarco Pfatschbacher
that is kept in a list per carp interface. This is the huge first step necessary to make carp load balancing nice and easy. One carp interface can now contain up to 32 virtual host instances. This doesn't do anything useful yet, but here is how an ifconfig for multiple entries now looks like: # ifconfig carp2 carpnodes 5:0,6:100 192.168.5.88 carp2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:00:5e:00:01:05 carp: carpdev sis0 advbase 1 state MASTER vhid 5 advskew 0 state BACKUP vhid 6 advskew 100 groups: carp inet 192.168.5.88 netmask 0xffffff00 broadcast 192.168.5.255 OK mcbride@
2007-11-16use arc4random_bytes() instead of multiple arc4random() calls;Damien Miller
ok deraadt@ dlg@ henric@ mcbride@
2007-10-29MALLOC/FREE -> malloc/freeCharles Longeau
ok krw@
2007-10-27Replace the replay protection counter with a cookie.Marco Pfatschbacher
It is unlikely we will ever get a working replay protection, so better keep it simple and robust. The cookie allows us to detect our own advertisements, thus it is now easy to deal with network loops and non-simplex interfaces. Zero feedback by the people who wanted this fixed. OK henning@, markus@
2007-09-24Fix carp(4) after the switch to dynamic imo_membership allocation.Claudio Jeker
The multicast code is still a mess but will no longer crash the box. With input from pascoe@ who hit the same bug. OK markus@, henning@, mpf@ (on a previous version)
2007-09-18allow 4095 instead of 20 multicast group memberships per socket (you needMarkus Friedl
one entry for each multicast group and interface combination). this allows you to run OSPF with more than 10 interfaces. adapted from freebsd; ok claudio, henning, mpf
2007-09-18ARP balancing has been changed to use the source MAC addressMarco Pfatschbacher
quite a while ago. Manpage and comment update by Matthew Dempsky. OK jmc@
2007-09-03Make use of the carp preempt counter to signal number of transitions ofJoel Knight
any carp group to master status. ok dhartmei@
2007-06-23use a masked destination network instead of the interface ip for theReyk Floeter
destination of the route belonging to the carp interface. ok mpf@ claudio@
2007-06-14preserve the possible route label if the route belongs to the carpReyk Floeter
interface (ip-less parent). tested by claudio and me ok claudio@
2007-06-13There is no need to set RTAX_NETMASK on RTF_HOST routes. RTAX_NETMASK willClaudio Jeker
be set to NULL as first in rtrequest1() for all host routes. With and OK reyk@
2007-06-01sc_carplladdr does not need to be dereferenced.Marco Pfatschbacher
OK mcbride@
2007-06-01apply the "skip ipsec if there are no flows" speedup diff to IPv6 too.Henning Brauer
we need a pointer to the inpcb to decide, which was not previously passed to ip6_output, so this diff is a little bigger. from itojun, ok ryan
2007-06-01Remove code to create a carp(4) Token Ring lladdr.Marco Pfatschbacher
OK mcbride@
2007-05-29Move tokenring support to the attic where it can join the cards that whereClaudio Jeker
decomissioned aeon ago. We will not miss it at all. OK dlg@ henning@ and a lot of cheers by other in the room
2007-05-28Users of arc4random() should include dev/rndvar.h directly.Ryan Thomas McBride
ok dlg claudio
2007-05-27rewrite a static inline func that simply coerces a return type of anotherDavid Gwynne
function as a macro. ok reyk@ ja ja claudio@
2007-05-26one extern seems to be better than 20 for ifqmaxlen; ok krwJason Wright
2007-05-06do not fill RTAX_GATEWAY for RTM_DELETE, ok claudioHenning Brauer
2007-05-04make carp's routing table modification attempts (imho broken by design)Henning Brauer
at least exhibit routing messages so it does not confuse the userland routing daemons by routing table changes not reflected by messages on the routing socket. effect would be bgpd using wrong nexthops for example, in the worst case (that i actually ran into) blackholing traffic. ok reyk claudio "looks correct" miod
2007-03-27Don't pick up IPv6 link local IPs on address deletions.Marco Pfatschbacher
This unbreaks carp reconfiguration. OK henning@, mcbride@
2007-03-25Synchronise carp advertisements on group demotion.Marco Pfatschbacher
This reduces group failover time to a few milliseconds. Diff from Nathanael. OK henning@
2007-03-18Add IP load balancing support for carp(4).Marco Pfatschbacher
This provides a similar functionality as ARP balancing, but also works for traffic that comes across routers. IPv6 is supported as well. The configuration scheme will change as soon we have sth better. Also add support for changing the MAC address on carp(4) interfaces. (code from mcbride) Tested by pyr@ and reyk@ OK mcbride@
2006-12-13use IN6_IS_SCOPE_EMBED to check kernel-internal form addressesJun-ichiro itojun Hagino
(s6_addr16[1] filled) ok dhartmei
2006-11-16in carp_attach, create the "carp" interface group, so that it is alwaysHenning Brauer
and early in the boot process existant. needed by the rc scripts for carp demotion on the "carp" group. this used to work because pfsync0 was always there and member of said group; it has been broken on pfsync-less kernels for quite some time. ok mpf mcbride
2006-08-31Automatically add a IPv6 link-local address to carp interfaces when theRyan Thomas McBride
virtual MAC address is set. Among other things, this makes route6d work correctly on systems with carp interfaces. In order to ensure backwards compatibility, we do not include IPv6 link-local addresses in generating the HMAC, but we accept HMACs with AND without the link-local addresses. They will be added to the HMAC in a future release. In short: this change should only affect backwards compatibility for IPv6 users who are manually adding link-local addresses on carp interfaces. testing mtu@ todd@ ok mpf@ henning@ deraadt@
2006-08-28Make carp see all IPv6 address additions and remove dead code in carp_ioctl()Ryan Thomas McBride
ok mpf@ henning@
2006-08-16Send out a second delayed gratuitous ARP request afterMarco Pfatschbacher
we've won the MASTER election. This seems to be necessary w/ some wacky L3 switches, that only learn by looking at ARP packets. Fixes PR 5148. OK mcbride@
2006-06-16adjust functions dealing with the routing table to take a table ID asHenning Brauer
parameter so they can work on alternate tables. table 0 hardcoded for many callers yet, that will be adapted step by step. input + ok claudio norby hshoexer
2006-06-02Introduce attributes to interface groups.Marco Pfatschbacher
As a first user, move the global carp(4) demotion counter into the interface group. Thus we have the possibility to define which carp interfaces are demoted together. Put the demotion counter into the reserved field of the carp header. With this, we can have carp act smarter if multiple errors occur. It now always takes over other carp peers, that are advertising with a higher demote count. As a side effect, we can also have group failovers without the need of running in preempt mode. The protocol change does not break compability with older implementations. Collaborative work with mcbride@ OK mcbride@, henning@
2006-05-22Check for NULL cookies before calling hook_disestablish(). Just in caseKenneth R Westerback
the establish calls were bypassed or failed. ok mpf@
2006-05-18Add a duplicate check for our own advertisements. This is necessaryMarco Pfatschbacher
for dumb non simplex interfaces, that receive packets they've just sent. Fixes bug 5121. OK deraadt@, mcbride@
2006-03-26if_link_state_change() is more appropriate here.Camiel Dobbelaar
ok henning mcbride
2006-03-25allow bpf(4) to ignore packets based on their direction (inbound orDamien Miller
outbound), using a new BIOCSDIRFILT ioctl; guidance, feedback and ok canacar@