Index: raw_ip6.c =================================================================== RCS file: /home/dcvs/src/sys/netinet6/raw_ip6.c,v retrieving revision 1.26 diff -u -u -r1.26 raw_ip6.c --- raw_ip6.c 17 May 2008 20:33:36 -0000 1.26 +++ raw_ip6.c 13 Jul 2008 05:44:52 -0000 @@ -338,7 +338,9 @@ priv = 1; dst = &dstsock->sin6_addr; if (control) { - if ((error = ip6_setpktoptions(control, &opt, priv, 0)) != 0) + if ((error = ip6_setpktoptions(control, &opt, + in6p->in6p_outputopts, + so->so_proto->pr_protocol, priv)) != 0) goto bad; optp = &opt; } else @@ -477,7 +479,7 @@ RTFREE(optp->ip6po_route.ro_rt); if (control) { if (optp == &opt) - ip6_clearpktopts(optp, 0, -1); + ip6_clearpktopts(optp, -1); m_freem(control); } return (error); @@ -514,6 +516,9 @@ case MRT6_PIM: error = ip6_mrouter_get(so, sopt); break; + case IPV6_CHECKSUM: + error = ip6_raw_ctloutput(so, sopt); + break; default: error = ip6_ctloutput(so, sopt); break; @@ -531,6 +536,9 @@ case MRT6_PIM: error = ip6_mrouter_set(so, sopt); break; + case IPV6_CHECKSUM: + error = ip6_raw_ctloutput(so, sopt); + break; default: error = ip6_ctloutput(so, sopt); break;