]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - net/netfilter/nf_conntrack_proto_dccp.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next
[mirror_ubuntu-artful-kernel.git] / net / netfilter / nf_conntrack_proto_dccp.c
index b2e02dfe7fa8a0a53e6b7faab84c2a9fc3d459c4..b553fdd68816b98a0f6f58cba3bd7363959479cf 100644 (file)
@@ -609,6 +609,20 @@ out_invalid:
        return -NF_ACCEPT;
 }
 
+static bool dccp_can_early_drop(const struct nf_conn *ct)
+{
+       switch (ct->proto.dccp.state) {
+       case CT_DCCP_CLOSEREQ:
+       case CT_DCCP_CLOSING:
+       case CT_DCCP_TIMEWAIT:
+               return true;
+       default:
+               break;
+       }
+
+       return false;
+}
+
 static void dccp_print_tuple(struct seq_file *s,
                             const struct nf_conntrack_tuple *tuple)
 {
@@ -868,6 +882,7 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_dccp4 __read_mostly = {
        .packet                 = dccp_packet,
        .get_timeouts           = dccp_get_timeouts,
        .error                  = dccp_error,
+       .can_early_drop         = dccp_can_early_drop,
        .print_tuple            = dccp_print_tuple,
        .print_conntrack        = dccp_print_conntrack,
 #if IS_ENABLED(CONFIG_NF_CT_NETLINK)
@@ -902,6 +917,7 @@ struct nf_conntrack_l4proto nf_conntrack_l4proto_dccp6 __read_mostly = {
        .packet                 = dccp_packet,
        .get_timeouts           = dccp_get_timeouts,
        .error                  = dccp_error,
+       .can_early_drop         = dccp_can_early_drop,
        .print_tuple            = dccp_print_tuple,
        .print_conntrack        = dccp_print_conntrack,
 #if IS_ENABLED(CONFIG_NF_CT_NETLINK)