Age | Commit message (Collapse) | Author |
|
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.
|
|
the multicast list elsewhere, it can occur under certain conditions (PR4475).
ok deraadt@ mpf@
|
|
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@
|
|
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@
|
|
with pascoe@
|
|
This converts if_link_state_change() to a generic usable
callback with dohooks().
OK henning@, camield@
Tested by camield@ and Alexey E. Suslikov
|
|
carpdev case; block outgoing packets in carp_output() instead.
- unbreak the "bow out on 'ifconfig down'" behaviour, allows instant
failover on graceful halt/reboot to work again.
ok mpf@ henning@
|
|
ok mcbride
|
|
that carp shares the IP addresse with its physical interface.
It's neither supported nor needed, since we have carpdev now.
ok mcbride@
|
|
which was removed in rev 1.57. This makes arpbalance work again, and
ensures that only one carp host will reply to a given arp request.
ok mpf@ pascoe@ dhartmei@ deraadt@
|
|
|
|
|
|
with an id10t error by yours truly.
|
|
ifp->if_flags & IFF_MULTICAST checks no longer protect against.
ok pascoe@ mpf@
|
|
use our carp_addr_updated callback to detect deletion and reconfigure
appropriately.
ok mcbride@
|
|
with an interface down avoid preempting after a reboot.
Pointed out by Stephen Marley <stephen.marley@catwoman.cl-is.com>
ok pascoe@ mpf@
|
|
Advertisements run through the carp interface first.
So we just take the address from ifp0.
While we're there,
also remove carp_macmatch6, which isn't used anymore.
Proposed by mcbride@
ok mcbride@, pascoe@
|
|
|
|
IPv4, and will allow us to get rid of carp_fix_lladdr() and the carp mbuf
tag later).
ok pascoe@ mpf@
|
|
unable to tag a packet, and free mbuf chain on all failures.
ok mcbride@
|
|
substitution.
With this change and the previous ARP changes, all Ethernet packets sent
via a CARP interface should now have the virtual MAC address as the source.
ok mcbride@ niklas@
|
|
instead of processing them in the parent interface. This causes us to send
ARP packets on a carpdev with its virtual MAC address as the source, rather
than the parent's physical address.
Permits us to fail over cleanly when connected to devices that use the
source MAC address on a received ARP request to generate an ARP entry for
the requesting host, rather than going through the who-has/is-at procedure.
ok niklas@ mcbride@
|
|
callback after in_ifinit has run. This lets us correct any routes that
in_ifinit has incorrectly added for our interface.
Also be more explicit with the routing checks/changes that we make. This
makes it possible to have different prefix lengths on a CARP interface and
the physical interface it is bound to.
ok mcbride@
|
|
kills a couple of ugly line wraps. From Max Laier.
ok pascoe@
|
|
ok pascoe@ mpf@
|
|
been experiencing output errors.
ok mcbride@
|
|
v6 advertisements are still received the old-fashioned way.
ok mcbride@
|
|
matching in the bridge receive path to make CARP operate correctly
on physical interfaces that are participating in a bridge.
ok mcbride@ henning@ dlg@
|
|
ok pascoe@
|
|
carp_iamatch() on the physical interface.
ok pascoe@ mpf@
|
|
* less hardcoding in format strings for easier maintenance
mcbride ok
|
|
to trigger a gratuitous arp and update arp tables on other hosts.
|
|
|
|
* M_WAITOK -> M_NOWAIT
* FREE() only when necessary
* join_multicast6 for ip6 addresses
mcbride ok
|
|
|
|
|
|
dealing with a carp interface.
|
|
style as vlan(4). carp interfaces no longer require the physical interface
to be on the same subnet as the carp interface, or even that the physical
interface has an adress at all, so CARP can now be used on /30 networks.
ok deraadt@ henning@
|
|
|
|
|
|
when sending advertisements fail due to ENOBUGS, and some CARP_LOG for other
failures.
From camield@
|
|
ok henning@
|
|
of hiding under IFT_PROPVIRTUAL, ryan daniel ok
|
|
Patrick Latifi (diff based on his).
|
|
sending advertisements if we can't tag the mbuf.
Problem report and fix from Chris Pascoe, thanks.
ok henning@
|
|
Actually this doesn't matter right now, as the first bytes of struct ifnet
are a pointer to the softc, which has ac_if at the beginning and thus by
fluke the pointer is correct.
This also makes the sc to ifp conversion for carp_macmatch6().
|
|
carp_softc.
|
|
that bogus packets arrive on.
|
|
with some layer-3 switches. From Bill Marquette.
ok henning@ mickey@ dhartmei@ and deraadt@
|
|
encapsulating all such access into wall-defined functions
that makes sure locking is done as needed.
It also cleans up some uses of wall time vs. uptime some
places, but there is sure to be more of these needed as
well, particularily in MD code. Also, many current calls
to microtime() should probably be changed to getmicrotime(),
or to the {,get}microuptime() versions.
ok art@ deraadt@ aaron@ matthieu@ beck@ sturm@ millert@ others
"Oh, that is not your problem!" from miod@
|