cvs commit: src/sys/kern uipc_domain.c uipc_msg.c uipc_proto.c src/sys/net netisr.c netisr.h netmsg.h rtsock.c src/sys/net/gre if_gre.c src/sys/net/stf if_stf.c src/sys/netinet in_gif.c in_proto.c ip_demux.c ip_icmp.c tcp_var.h udp_var.h ...
Sepherosa Ziehau
sephe at crater.dragonflybsd.org
Sun Oct 26 19:57:46 PDT 2008
sephe 2008/10/26 19:56:30 PDT
DragonFly src repository
Modified files:
sys/kern uipc_domain.c uipc_msg.c uipc_proto.c
sys/net netisr.c netisr.h netmsg.h rtsock.c
sys/net/gre if_gre.c
sys/net/stf if_stf.c
sys/netinet in_gif.c in_proto.c ip_demux.c ip_icmp.c
tcp_var.h udp_var.h
sys/netinet6 icmp6.c in6_gif.c in6_proto.c
ip6protosw.h
sys/sys protosw.h socketops.h
Log:
pr_ctlinput is usually called when certains types of ICMP packets are received.
However, the processing of ICMP packets happens in netisr0, which means the
thread context, in which pr_ctlinput is called, is not correct. To handle this
following two fixes are applied:
- Add pr_ctlport to protosw and ip6protosw, which could be used to locate
correct msgport to call pr_ctlinput for specific protocol
- All necessary information needed by pr_ctlinput are gather into one netmsg,
and this netmsg is delivered synchronously (some information is on the stack)
Note for new protocol implementation:
pr_ctlinput and pr_ctlport should be both NULL or both non-NULL.
Obtained-from: dillon@
Tested-by: pavalos@
Revision Changes Path
1.13 +5 -5 src/sys/kern/uipc_domain.c
1.26 +40 -0 src/sys/kern/uipc_msg.c
1.7 +4 -4 src/sys/kern/uipc_proto.c
1.48 +7 -0 src/sys/net/netisr.c
1.38 +1 -0 src/sys/net/netisr.h
1.10 +8 -0 src/sys/net/netmsg.h
1.45 +1 -1 src/sys/net/rtsock.c
1.22 +2 -2 src/sys/net/gre/if_gre.c
1.25 +1 -1 src/sys/net/stf/if_stf.c
1.18 +1 -1 src/sys/netinet/in_gif.c
1.17 +29 -29 src/sys/netinet/in_proto.c
1.42 +51 -0 src/sys/netinet/ip_demux.c
1.32 +4 -5 src/sys/netinet/ip_icmp.c
1.42 +2 -0 src/sys/netinet/tcp_var.h
1.18 +1 -0 src/sys/netinet/udp_var.h
1.31 +5 -7 src/sys/netinet6/icmp6.c
1.18 +1 -1 src/sys/netinet6/in6_gif.c
1.14 +18 -18 src/sys/netinet6/in6_proto.c
1.9 +1 -0 src/sys/netinet6/ip6protosw.h
1.24 +5 -1 src/sys/sys/protosw.h
1.14 +2 -0 src/sys/sys/socketops.h
http://www.dragonflybsd.org/cvsweb/src/sys/kern/uipc_domain.c.diff?r1=1.12&r2=1.13&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/uipc_msg.c.diff?r1=1.25&r2=1.26&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/uipc_proto.c.diff?r1=1.6&r2=1.7&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/netisr.c.diff?r1=1.47&r2=1.48&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/netisr.h.diff?r1=1.37&r2=1.38&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/netmsg.h.diff?r1=1.9&r2=1.10&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/rtsock.c.diff?r1=1.44&r2=1.45&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/gre/if_gre.c.diff?r1=1.21&r2=1.22&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/net/stf/if_stf.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/in_gif.c.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/in_proto.c.diff?r1=1.16&r2=1.17&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/ip_demux.c.diff?r1=1.41&r2=1.42&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/ip_icmp.c.diff?r1=1.31&r2=1.32&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/tcp_var.h.diff?r1=1.41&r2=1.42&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet/udp_var.h.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/icmp6.c.diff?r1=1.30&r2=1.31&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/in6_gif.c.diff?r1=1.17&r2=1.18&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/in6_proto.c.diff?r1=1.13&r2=1.14&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/netinet6/ip6protosw.h.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/protosw.h.diff?r1=1.23&r2=1.24&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/socketops.h.diff?r1=1.13&r2=1.14&f=u
More information about the Commits
mailing list