Age | Commit message (Collapse) | Author |
|
receiving interface in the packet header of every mbuf.
The interface pointer should now be retrieved when necessary with
if_get(). If a NULL pointer is returned by if_get(), the interface
has probably been destroy/removed and the mbuf should be freed.
Such mechanism will simplify garbage collection of mbufs and limit
problems with dangling ifp pointers.
Tested by jmatthew@ and krw@, discussed with many.
ok mikeb@, bluhm@, dlg@
|
|
this has a slight semantic change. previously pipex would only
process up to 128 packets on the input and output queues at a time
and would reschedule the softint if there were any left. now it
mq_delists the current set of pending packets and only processes
them. if anything is added to the queues later they'll cause the
softint to run again.
this in turn lets us deprecate sysctl_ifq since nothing uses it
anymore. because niqueues are mostly wrappers around mbuf_queues,
we can provide sysctl_mq and just #define sysctl_niq to it.
pipex bits are ok yasuoka@
|
|
with niqueues.
this change is so big because there's a lot of code that takes
pointers to different input queues (eg, ether_input picks between
ipv4, ipv6, pppoe, arp, and mpls input queues) and falls through
to code to enqueue packets against the pointer. if i changed only
one of the input queues id have to add sepearate code paths, one
for ifqueues and one for niqueues in each of these places
by flipping all these input queues at once i can keep the currently
common code common.
testing by mpi@ sthen@ and rafael zalamena
ok mpi@ sthen@ claudio@ henning@
|
|
by a subsystem to stash some state while the mbuf gets queued. eg,
net80211 uses it to keep track of the wireless node associated with
a packet before submitting it to a drivers snd queue for transmission.
this makes pipex use ph_cookie to keep track of the pipex session
associated with a packet before submitting it to the softint queues.
this lets us get rid of an mbuf tag type, and avoids the cost of
tag allocation.
ok yasuoka@
|
|
its only used for the ip and ip6 network stack input queues, so it
seems unfair that every instance of ifqueue has to carry a pointer
around for this specific use case.
this moves the congestion marker to a kernel global. if we detect
that we're congested, we assume the whole system is busy and punish
all input queues.
marking a system as congested is done by setting the global to the
current value of ticks. as the system moves away from that value,
it moves away from being congested until the comparison fails.
written at s2k15
ok henning@ beck@ bluhm@ claudio@
|
|
long live the one true internet.
ok henning mikeb
|
|
|
|
ok deraadt@ tedu@
|
|
ok dlg@, uebayasi@, mikeb@
|
|
handle them. Also use M_NOWAIT for copying a multicast packet.
|
|
sesssion for multicast in proper way.
|
|
Without this, the packets larger than the minimum MTU on the routes to
the L2TP peer had been dropped.
|
|
wasn't freeed when the interface is destroyed. Free it properly.
ok dlg
|
|
OK blambert@ yasuoka@
|
|
|
|
|
|
after discussions with beck deraadt kettenis.
|
|
by the pipex session whose mppe is not accepted. Fix ppp_common_input()
to not pass such frames to pipex.
|
|
tunneling protocol is PPPoE.
|
|
tcp option and check the boundary correctly.
|
|
ever used to pass on uint32 (for ipsec). stop that madness and just pass
the uint32, 0 in all cases but the two that pass the ipsec flowinfo.
ok deraadt reyk guenther
|
|
|
|
network to presentation format to inet_ntop().
The few remaining functions will be soon converted.
ok mikeb@, deraadt@ and moral support from henning@
|
|
global variables to in6.h.
ok deraadt@
|
|
global variables to in.h.
ok mikeb@, deraadt@
|
|
in the v4 case any more, and computing the cksum in the v6 case isn't
needed either. ok florian lteo
|
|
created a bunch of useless dependencies. Remove this implicit
inclusion and do an explicit #include <netinet6/in6_var.h> when it
is needed.
OK mpi@ henning@
|
|
when the userland program (npppd) is dead or frozen, the session remains in
state_list after it is destroyed, it will be used after free.
|
|
counters.
ok guenther, feedback jmc
|
|
the session is removed from the pipex_closed_wait_list twice, fixed it.
It always causes panic because QUEUE_MACRO_DEBUG is enabled by default.
Also remove some needless (struct pipex_session *) casts.
|
|
slipped by on i386, but the zaurus doesn't automagically pick it up.
spotted by patrick
|
|
|
|
EINVAL instead of panic. Also npppd called ioctl with the invalid
argument because of the bugs introduced by the config parser change
commit. Fixed those bugs and make sure not to use 0 length keys for
MPPE.
reported by csszep at gmail and giovanni
ok giovanni
|
|
spotted by krw@, poked by jmatthew@
|
|
it), so return early if the work has already been done.
ok yasuoka@ jmatthew@
|
|
|
|
ok deraadt@ miod@
|
|
no functional changes.
|
|
missing on IPv6 path only.
From brad
|
|
From brad
|
|
L2TP packets.
ok markus henning
|
|
diff from blambert
|
|
values in () for consistency.
diff from Michael W. Bombardieri.
ok sthen dlg mikeb
|
|
It could not use the destination address properly, so it failed to
find the pipex session. This bug caused LCP keepalive failures on some
clients.
found and tested by sebastia@ and mxb at alumni.chalmers.se.
ok sthen
|
|
|
|
by default. After this change we need to add
ppp.ingress_filter: true
to npppd.conf if it is needed.
ok sthen
|
|
a packet that is passed to the userland has not incremented, `pipex' passed
the packet mistakenly with invalid ack number. Then `npppd' will drop these
packets, so that caused the problem.
tested jmatthew
ok jmatthew
|
|
pointed out by Julien Crapovich on misc@
ok deraadt mikeb
|
|
reorder packets to pass to the upper layer without reorder. It
will improve performance (throughput or loss rate) for PPTP or
L2TP(/IPesc) on networks that latency is unstable such as mobile
network.
As our test environment (bandwidth: 6Mbps, latency: 50ms for 97% of
traffic and 52ms for rest of traffic), throughput has changed from
0.76MB to 2.17MB on file upload by PPTP connected Windows Vista
ftp.exe.
Developed by UMEZAWA Takeshi at IIJ.
ok jmatthew@
tested jmatthew@ and myself.
|
|
ok claudio henning yasuoka
|