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