| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
and mpi believe could be used uninitialised.
ok mpi@
|
|
|
|
|
|
| |
configured addressses.
ok mikeb@
|
|
|
|
|
|
|
|
| |
ARP entries with an expired timeout are now removed from the tree even
if they are cached somehwere else. This also reduces differences with
NDP.
ok bluhm@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Note that after calling rtalloc(9) we only check if a route has been
returned or not and do not check for its validity. This cannot be
improved without a massive refactoring.
The kernel currently *do* use !RTF_UP route due to a mismatch between
the value of ifp->if_link_state and the IFF_UP|IFF_RUNNING code.
I'd explain the RTF_UP flag as follow:
. If a cached route entry w/o RTF_UP is passed to ip{6,}_output(),
. call rtalloc(9) to see if a better entry is present in the tree.
This is enough to support MPATH and route cache invalidation.
ok bluhm@
|
|
|
|
|
|
| |
strict than anticipated. It allows a programmer to pledge/promise/covenant
that their program will operate within an easily defined subset of the
Unix environment, or it pays the price.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The routing table is not an optional component of the network stack
and initializing it inside the "routing domain" requires some ugly
introspection in the domain interface.
This put the rtable* layer at the same level of the if* level. These
two subsystem are organized around the two global data structure used
in the network stack:
- the global &ifnet list, to be used in process context only, and
- the routing table which can be read in interrupt context.
This change makes the rtable_* layer domain-aware and extends the
"struct domain" such that INET, INET6 and MPLS can specify the length
of the binary key used in lookups. This allows us to keep, or move
towards, AF-free route and rtable layers.
While here stop the madness and pass the size of the maximum key length
in *byte* to rn_inithead0().
ok claudio@, mikeb@
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(Especially adding IF_DROP() after IFQ_ENQUEUE() was completely wrong because
IFQ_ENQUEUE() already does it. Oops.)
After this revert, the situation becomes:
- if_snd.ifq_drops is incremented in either IFQ_ENQUEUE() or IF_DROP(), but
it is not shown to userland, and
- if_data.ifi_oqdrops is shown to userland, but it is not incremented by
anyone.
|
|
|
|
|
|
| |
mpi@ plans to clean-up IF_DROP()'s, but fix consistent use of it for now.
OK dlg@
|
| |
|
|
|
|
|
|
|
|
| |
for ART.
While here sync the two remaining mix() macros.
ok chris@, dlg@
|
|
|
|
|
|
| |
Tested by <mxb AT alumni DOT chalmers DOT se>.
ok dlg@
|
|
|
|
|
|
| |
callers rtfree(9) it.
ok bluhm@
|
|
|
|
|
|
| |
Can be used to check if a MAC address is all zeros.
Will be used by iwm(4) soon.
ok kettenis@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
there are three data structures involved here:
the list of carp interfaces on a parent interface (struct carp_if)
is now accessed via the if_ih cookie. its lifetime is managed by
the if_ih_insert and if_ih_remove calls.
the second is the interfaces (struct carp_softc) in the list above.
these has been moved from being access via a TAILQ to an SRPL.
modifications to the list are serialised by the kernel lock.
the third is the list of vhost entries (struct carp_vhost_entry).
these used to be in a LIST on each carp_softc, but have been moved
to being accessed vian an SRPL. modifications to the list are
serialised by the kernel lock.
written at l2k15
tested by mpi@ and hrvoje popovski
ok mpi@
|
|
|
|
|
|
|
|
|
|
|
| |
Local route entries, being now attached to their corresponding interface,
are susceptible to be brought DOWN when a link state change occurs. When
this happens locally configured addresses are no longer reachable.
So keep the previous (original) behavior by forcing such route entries to
always be UP.
ok sthen@, claudio@
|
|
|
|
|
|
| |
specific places.
ok claudio@, benno@
|
|
|
|
|
|
| |
in in_pcbbind() and in6_pcbsetport()
ok claudio@, with input from David Hill
|
|
|
|
|
| |
Issue _17 found by Maxime Villard Brainy scanner.
OK bluhm@
|
|
|
|
|
|
| |
needs to see lo0 in the output path.
ok claudio@
|
|
|
|
| |
ok dlg@
|
|
|
|
|
|
|
|
|
| |
lookup to ensure pf_test() is called with the same interface in the
input annd output path for local traffic.
Fix a regression reported by Heiko Zimmermann on bugs@, thanks!
ok mikeb@, claudio@
|
|
|
|
|
|
| |
the kernel lock.
"do it" claudio@ mpi@
|
|
|
|
|
|
|
|
|
| |
ifp0, and the ifnet * that refers to the carp interface ifp.
this makes it easier for me to read. it's probably not the right
name for ifp0, but at least it's consistent.
ok sthen@ bluhm@ mpi@ claudio@
|
|
|
|
|
|
| |
stop passing it in every rt_ifa_add(9) calls.
ok claudio@
|
|
|
|
|
|
|
|
|
| |
Use instead the RTF_LOCAL flag to loop local traffic back to the
corresponding protocol queue.
With this change rt_ifp is now always the same as rt_ifa->ifa_ifp.
ok claudio@
|
|
|
|
|
|
|
|
|
|
| |
the protocol queues.
It basically does what looutput() was doing but having a generic
function will allow us to get rid of the loopback hack overwwritting
the rt_ifp field of RTF_LOCAL routes.
ok mikeb@, dlg@, claudio@
|
|
|
|
| |
Found by jsg@ with clang
|
|
|
|
| |
ok claudio@ mpi@
|
|
|
|
|
|
|
|
|
| |
vhif_ifs so you can tell when that list is empty.
you can use TAILQ_EMPTY to see if a list is empty though, so kill
the count and use EMPTY instead.
ok mpi@
|
|
|
|
| |
ok mpi@
|
|
|
|
| |
ok mpi@ claudio@
|
|
|
|
| |
OK dlg@
|
|
|
|
|
| |
Merge the two blocks into one that is executed before the IPSec tdb lookup.
OK mpi@ which had a sent out a similar diff around 3 years ago.
|
|
|
|
|
|
| |
layer because the strings select the right options. Mechanical
conversion.
ok guenther
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the mbuf packet header. If the packet and is later dropped in
ip6_forward(), the TCP mbuf is copied and passed to icmp6_error().
IPv6 uses m_copym() and M_PREPEND() which preserve the packet header.
The inherited M_TCP_CSUM_OUT flag generates ICMP6 packets with an
incorrect checksum. So reset the csum_flags when packets are
generated by icmp6_reflect() or icmp6_redirect_output().
IPv4 does m_copydata() into a fresh mbuf. There m_inithdr() clears
the packet header, so the problem does not occur. But setting the
csum_flags explicitly also makes sense for icmp_send(). Do not or
M_ICMP_CSUM_OUT to a value that is 0 because of some function calls
before.
OK mpi@ lteo@
|
|
|
|
| |
Ok mpi@
|
|
|
|
| |
ok claudio@
|
|
|
|
| |
ok deraadt@ miod@
|
|
|
|
|
|
|
| |
ifpp - XXX: just for statistics
ifpp is always NULL in all callers so that statistic confirms ifpp is
dying
OK mpi@
|
|
|
|
|
|
|
|
|
| |
In all but two calls NULL is passed and in the other 2 cases the ifp
is only used to maybe feed it to in6_selecthlim() to select the hoplimit
for the link. Since in6_embedscope() only works on link-local addresses
it does not matter what hop limit we select since the destination is
directly reachable.
OK florian@ mpi@
|
|
|
|
|
| |
the 3rd argument of in6_recoverscope() and make it return void.
OK dlg@ mikeb@
|
|
|
|
|
|
|
| |
to pass additional context or transient data with the similar life
time.
ok mpi, suggestions, hand holding and ok from dlg
|
|
|
|
| |
ok claudio@
|
|
|
|
|
|
|
| |
cache hash. That makes it trivial to create syn cache collisions.
Take the full address, xor it with random data and put it into the
hash function.
OK markus@
|
|
|
|
|
|
|
|
|
|
|
|
| |
instead of having every driver that manipulates the ifih list
understand SRPLs, this moves that processing into if_ih_insert and
if_ih_remove functions.
we rely on the kernel lock to serialise the modifications to the
list.
tested by mpi@
ok mpi@ claudio@ mikeb@
|
|
|
|
|
|
| |
to get nfs working.
ok claudio@
|
|
|
|
|
|
|
| |
it with the reference from if_get held so we can if_put it easly
after the guts have run.
ok claudio@
|
|
|
|
|
|
|
|
| |
instead of chasing all the ways out of icmp_input, rename it to
icmp_input_if and call it from a wrapper that gets the ifp and puts
it after icmp_input_if call.
ok claudio@
|