Print this page
dccp: starting module template

*** 109,118 **** --- 109,121 ---- #include <ipp/ipp.h> #include <ipp/ipp_impl.h> #include <ipp/ipgpc/ipgpc.h> #include <sys/pattr.h> + #include <inet/dccp.h> + #include <inet/dccp_impl.h> + #include <inet/dccp_ip.h> #include <inet/ipclassifier.h> #include <inet/sctp_ip.h> #include <inet/sctp/sctp_impl.h> #include <inet/udp_impl.h> #include <inet/rawip_impl.h>
*** 1819,1828 **** --- 1822,1863 ---- */ if ((uchar_t *)ipha + hdr_length + ICMP_MIN_TP_HDR_LEN > mp->b_wptr) goto truncated; break; + case IPPROTO_DCCP: { + dccpha_t *dccpha; + + /* + * Verify we have at least ICMP_MIN_TP_HDR_LEN bytes of + * transport header. + */ + if ((uchar_t *)ipha + hdr_length + ICMP_MIN_TP_HDR_LEN > + mp->b_wptr) + goto truncated; + + cmn_err(CE_NOTE, "icmp_inbound_verify_v4"); + + dccpha = (dccpha_t *)((uchar_t *)ipha + hdr_length); + /* XXX:DCCP */ + /* + connp = ipcl_dccp_lookup_reversed_ipv4(ipha, dccpha, + DCCPS_LISTEN, ipst); + if (connp == NULL) { + goto discard_pkt; + } + + if ((connp->conn_verifyicmp != NULL) && + !connp->conn_verifyicmp(connp, dccpha, icmph, NULL, ira)) { + CONN_DEC_REF(connp); + goto discard_pkt; + } + + CONN_DEC_REF(connp); + */ + break; + } case IPPROTO_ESP: case IPPROTO_AH: break; case IPPROTO_ENCAP: if ((uchar_t *)ipha + hdr_length + sizeof (ipha_t) >
*** 2167,2176 **** --- 2202,2215 ---- ira->ira_flags |= IRAF_ICMP_ERROR; ip_fanout_sctp(mp, &ripha, NULL, ports, ira); ira->ira_flags &= ~IRAF_ICMP_ERROR; return; + case IPPROTO_DCCP: + cmn_err(CE_NOTE, "icmp_inbound_error_fanout_v4"); + return; + case IPPROTO_ESP: case IPPROTO_AH: if (!ipsec_loaded(ipss)) { ip_proto_not_sup(mp, ira); return;
*** 4309,4318 **** --- 4348,4358 ---- tnet_fini(); icmp_ddi_g_destroy(); rts_ddi_g_destroy(); udp_ddi_g_destroy(); + dccp_ddi_g_destroy(); sctp_ddi_g_destroy(); tcp_ddi_g_destroy(); ilb_ddi_g_destroy(); dce_g_destroy(); ipsec_policy_g_destroy();
*** 4545,4554 **** --- 4585,4595 ---- offsetof(th_hash_t, thh_link)); #endif ipsec_policy_g_init(); tcp_ddi_g_init(); sctp_ddi_g_init(); + dccp_ddi_g_init(); dce_g_init(); /* * We want to be informed each time a stack is created or * destroyed in the kernel, so we can maintain the
*** 9682,9694 **** --- 9723,9741 ---- return (1); if ((mpctl = sctp_snmp_get_mib2(q, mpctl, sctps)) == NULL) { return (1); } + if ((mpctl = ip_snmp_get_mib2_ip_dce(q, mpctl, ipst)) == NULL) { return (1); } + + if ((mpctl = dccp_snmp_get(q, mpctl, legacy_req)) == NULL) { + return (1); + } + freemsg(mpctl); return (1); } /* Get global (legacy) IPv4 statistics */
*** 15235,15244 **** --- 15282,15292 ---- case CPU_INIT: case CPU_CPUPART_IN: cpu_seqid = cpu[id]->cpu_seqid; netstack_next_init(&nh); while ((ns = netstack_next(&nh)) != NULL) { + dccp_stack_cpu_add(ns->netstack_dccp, cpu_seqid); tcp_stack_cpu_add(ns->netstack_tcp, cpu_seqid); sctp_stack_cpu_add(ns->netstack_sctp, cpu_seqid); udp_stack_cpu_add(ns->netstack_udp, cpu_seqid); netstack_rele(ns); }