git: kernel - network protocol thread routing
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu Sep 9 01:37:05 PDT 2010
commit 6a704092ee2b3384906df96bf4b66575a12f38e2
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Thu Sep 9 01:32:07 2010 -0700
kernel - network protocol thread routing
* ip_input() now calls ip_mport() unconditionally and physically compares
the port to &curthread->td_msgport. If they do not match the packet
will be forwarded to the correct protocol thread.
* ip6_input() now unconditionally calls sw6->pr_soport() on the last
received header and forwards the packet to the correct protocol thread.
udp6, tcp6, and rip6 are now marked as terminal protocol (PR_LASTHDR).
Though I'm not sure this is correct they must be marked this way for
the packet to be forwarded to the correct protocol thread.
This fixes an assertion panic when tcp6_input() calls tcp_input().
tcp_input() is expecting to be run on the same protocol thread assigned
to its socket, otherwise callout timers and other entities will get
confused.
Summary of changes:
sys/net/netisr.h | 1 +
sys/netinet/ip_input.c | 40 +++++++++++++++++-------------
sys/netinet6/in6_proto.c | 6 ++--
sys/netinet6/ip6_input.c | 61 ++++++++++++++++++++++++++++++++++++++++-----
sys/netinet6/ip6_var.h | 4 +++
5 files changed, 85 insertions(+), 27 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/6a704092ee2b3384906df96bf4b66575a12f38e2
--
DragonFly BSD source repository
More information about the Commits
mailing list