summaryrefslogtreecommitdiff
path: root/sys/netinet/ip_carp.c
AgeCommit message (Collapse)Author
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@
2006-03-23Set a carp MAC address of 00:00:00:00:00:00 if no vhid is assigned.Ryan Thomas McBride
ok henning@
2006-03-22prevent anything outside rote.c from accessing the routing table headsHenning Brauer
directly. rather provide a rt_lookup function for regular lookups, and a rt_gettable for those that need access to the head for some reason. the latter cases should be revisted later probably so that nothing outside the routing core code accesses the heads at all... tested claudio jolan me, ok claudio markus
2006-01-28Fix hmac calculation.Marco Pfatschbacher
Add some f's; do comparison in host byte order. OK mcbride@
2005-11-29Fix IPv6 hmac calculation.Marco Pfatschbacher
OK mcbride@
2005-11-29something in the eurobsdcon route-a-thon broke my simple home networkJolan Luff
router so back out the routing stuff to pre-eurobsdcon where my machine doesn't crash immediately. i am happy to test diffs and report success/failures but i am not happy to have instantaneous crashes when i reboot with a new kernel that was compiled from pristine sources. if you are going to be an elitist asshole then you could at least make sure your code works. ok and "be crass towards them" deraadt@
2005-11-27don't let anything outside route.c access the routing table heads directly,Henning Brauer
but go through a provided wrapper. also provide rt_lookup() instead of doing the lookup manually in many places. ryan ok
2005-11-27Completly remove transition path INIT -> MASTER.Marco Pfatschbacher
A bug introduced in -r 1.4 led lower priotorized hosts switching to MASTER state for a short time at bootup, if preemption was enabled. OK mcbride@
2005-11-27Sort the IP addresses in ascending order when doing the carp hmac; makesRyan Thomas McBride
alias address order on the interface irrelevant. prodding by henning@, ok mpf@
2005-11-04Add carp_hash() - hash the ethernet address of the ARP request and useRyan Thomas McBride
the result to determine which carp interface should answer rather than simply using the ip address. Fixes breakage debugged by Matt Bradford <m.bradford@isrc.qut.edu.au> 'just commit' deraadt@
2005-10-31Fix a TAILQ_FOREACH where the item containing the next pointer could beChristopher Pascoe
freed. ok canacar deraadt
2005-10-24Remove redundant duplicate packet length check.Ryan Thomas McBride
ok mpf@
2005-09-29Rework of multicast deletion code.Marco Pfatschbacher
The previous code could wrongly delete multicast groups on the parent interface. Now we forward only remembered delete requests to the carpdev. OK mcbride, mickey. "Get it in" deraadt.
2005-08-31Comment out KASSERT(mc != NULL) in carp_ether_delmulti. Because we mess withRyan Thomas McBride
the multicast list elsewhere, it can occur under certain conditions (PR4475). ok deraadt@ mpf@
2005-07-31Introduce bpf_mtap_af and bpf_mtap_hdr to be used when passing a mbuf chainChristopher Pascoe
to bpf with either an address family or other header added. These helpers only allocate a much smaller struct m_hdr on the stack when needed, rather than leaving 256 byte struct mbufs on the stack in deep call paths. Also removes a fair bit of duplicated code. commit now, tune after deraadt@
2005-06-19Don't reflect CARP's internal state via IFF_UP (which a user can modify), useChristopher Pascoe
IFF_RUNNING instead. Also, do not blindly restore flags onto an interface when returning to the running state. This eliminates the possibility that the kernel will bring the interface back up after a link state change on the physical interface, even though the user may have done an "ifconfig carpN down" in the meantime. Similarly two link state down events on the physical interface in succession could result in us never coming out of the INIT state. The master/backup state is still reported via link state information, so bgpd/ospfd, etc, should function as before. This also addresses PR4238. ok mpf@, ok with the idea etc henning@
2005-05-27only access if_linkstatehooks inside splnet.Marco Pfatschbacher
with pascoe@
2005-04-20Introduce if_linkstatehooks.Marco Pfatschbacher
This converts if_link_state_change() to a generic usable callback with dohooks(). OK henning@, camield@ Tested by camield@ and Alexey E. Suslikov