Lines Matching refs:ct

386 dccp_new(struct nf_conn *ct, const struct sk_buff *skb,  in dccp_new()  argument
390 struct net *net = nf_ct_net(ct); in dccp_new()
411 ct->proto.dccp.role[IP_CT_DIR_ORIGINAL] = CT_DCCP_ROLE_CLIENT; in dccp_new()
412 ct->proto.dccp.role[IP_CT_DIR_REPLY] = CT_DCCP_ROLE_SERVER; in dccp_new()
413 ct->proto.dccp.state = CT_DCCP_NONE; in dccp_new()
414 ct->proto.dccp.last_pkt = DCCP_PKT_REQUEST; in dccp_new()
415 ct->proto.dccp.last_dir = IP_CT_DIR_ORIGINAL; in dccp_new()
416 ct->proto.dccp.handshake_seq = 0; in dccp_new()
420 nf_ct_l4proto_log_invalid(skb, ct, hook_state, "%s", msg); in dccp_new()
467 state->net->ct.sysctl_checksum && in dccp_error()
514 int nf_conntrack_dccp_packet(struct nf_conn *ct, struct sk_buff *skb, in nf_conntrack_dccp_packet() argument
539 if (!nf_ct_is_confirmed(ct) && !dccp_new(ct, skb, dh, state)) in nf_conntrack_dccp_packet()
543 !test_bit(IPS_SEEN_REPLY_BIT, &ct->status)) { in nf_conntrack_dccp_packet()
545 nf_ct_kill_acct(ct, ctinfo, skb); in nf_conntrack_dccp_packet()
549 spin_lock_bh(&ct->lock); in nf_conntrack_dccp_packet()
551 role = ct->proto.dccp.role[dir]; in nf_conntrack_dccp_packet()
552 old_state = ct->proto.dccp.state; in nf_conntrack_dccp_packet()
561 ct->proto.dccp.role[dir] = CT_DCCP_ROLE_CLIENT; in nf_conntrack_dccp_packet()
562 ct->proto.dccp.role[!dir] = CT_DCCP_ROLE_SERVER; in nf_conntrack_dccp_packet()
567 ct->proto.dccp.handshake_seq = dccp_hdr_seq(dh); in nf_conntrack_dccp_packet()
572 dccp_ack_seq(dh) == ct->proto.dccp.handshake_seq) in nf_conntrack_dccp_packet()
573 set_bit(IPS_ASSURED_BIT, &ct->status); in nf_conntrack_dccp_packet()
581 if (ct->proto.dccp.last_dir == !dir && in nf_conntrack_dccp_packet()
582 ct->proto.dccp.last_pkt == DCCP_PKT_REQUEST && in nf_conntrack_dccp_packet()
584 ct->proto.dccp.role[!dir] = CT_DCCP_ROLE_CLIENT; in nf_conntrack_dccp_packet()
585 ct->proto.dccp.role[dir] = CT_DCCP_ROLE_SERVER; in nf_conntrack_dccp_packet()
586 ct->proto.dccp.handshake_seq = dccp_hdr_seq(dh); in nf_conntrack_dccp_packet()
590 ct->proto.dccp.last_dir = dir; in nf_conntrack_dccp_packet()
591 ct->proto.dccp.last_pkt = type; in nf_conntrack_dccp_packet()
593 spin_unlock_bh(&ct->lock); in nf_conntrack_dccp_packet()
594 nf_ct_l4proto_log_invalid(skb, ct, state, "%s", "invalid packet"); in nf_conntrack_dccp_packet()
597 spin_unlock_bh(&ct->lock); in nf_conntrack_dccp_packet()
598 nf_ct_l4proto_log_invalid(skb, ct, state, "%s", "invalid state transition"); in nf_conntrack_dccp_packet()
602 ct->proto.dccp.last_dir = dir; in nf_conntrack_dccp_packet()
603 ct->proto.dccp.last_pkt = type; in nf_conntrack_dccp_packet()
604 ct->proto.dccp.state = new_state; in nf_conntrack_dccp_packet()
605 spin_unlock_bh(&ct->lock); in nf_conntrack_dccp_packet()
608 nf_conntrack_event_cache(IPCT_PROTOINFO, ct); in nf_conntrack_dccp_packet()
610 timeouts = nf_ct_timeout_lookup(ct); in nf_conntrack_dccp_packet()
612 timeouts = nf_dccp_pernet(nf_ct_net(ct))->dccp_timeout; in nf_conntrack_dccp_packet()
613 nf_ct_refresh_acct(ct, ctinfo, skb, timeouts[new_state]); in nf_conntrack_dccp_packet()
618 static bool dccp_can_early_drop(const struct nf_conn *ct) in dccp_can_early_drop() argument
620 switch (ct->proto.dccp.state) { in dccp_can_early_drop()
633 static void dccp_print_conntrack(struct seq_file *s, struct nf_conn *ct) in dccp_print_conntrack() argument
635 seq_printf(s, "%s ", dccp_state_names[ct->proto.dccp.state]); in dccp_print_conntrack()
641 struct nf_conn *ct, bool destroy) in dccp_to_nlattr() argument
645 spin_lock_bh(&ct->lock); in dccp_to_nlattr()
649 if (nla_put_u8(skb, CTA_PROTOINFO_DCCP_STATE, ct->proto.dccp.state)) in dccp_to_nlattr()
656 ct->proto.dccp.role[IP_CT_DIR_ORIGINAL]) || in dccp_to_nlattr()
658 cpu_to_be64(ct->proto.dccp.handshake_seq), in dccp_to_nlattr()
663 spin_unlock_bh(&ct->lock); in dccp_to_nlattr()
668 spin_unlock_bh(&ct->lock); in dccp_to_nlattr()
685 static int nlattr_to_dccp(struct nlattr *cda[], struct nf_conn *ct) in nlattr_to_dccp() argument
706 spin_lock_bh(&ct->lock); in nlattr_to_dccp()
707 ct->proto.dccp.state = nla_get_u8(tb[CTA_PROTOINFO_DCCP_STATE]); in nlattr_to_dccp()
709 ct->proto.dccp.role[IP_CT_DIR_ORIGINAL] = CT_DCCP_ROLE_CLIENT; in nlattr_to_dccp()
710 ct->proto.dccp.role[IP_CT_DIR_REPLY] = CT_DCCP_ROLE_SERVER; in nlattr_to_dccp()
712 ct->proto.dccp.role[IP_CT_DIR_ORIGINAL] = CT_DCCP_ROLE_SERVER; in nlattr_to_dccp()
713 ct->proto.dccp.role[IP_CT_DIR_REPLY] = CT_DCCP_ROLE_CLIENT; in nlattr_to_dccp()
716 ct->proto.dccp.handshake_seq = in nlattr_to_dccp()
719 spin_unlock_bh(&ct->lock); in nlattr_to_dccp()