linux/net/netfilter/nf_conntrack_proto_udp.c
/* Returns verdict for packet, and may modify conntracktype */
Returns verdict for packet, and may modify conntracktype
Returns verdict for packet and may modify conntracktype
static int udp_packet(struct nf_conn *ct,
		      const struct sk_buff *skb,
		      unsigned int dataoff,
		      enum ip_conntrack_info ctinfo)
{
	unsigned int *timeouts;
	timeouts = nf_ct_timeout_lookup(ct);
	if (!timeouts)
		timeouts = udp_get_timeouts(nf_ct_net(ct));
	if (test_bit(IPS_SEEN_REPLY_BIT, &ct->status)) {
		nf_ct_refresh_acct(ct, ctinfo, skb,
				   timeouts[UDP_CT_REPLIED]);
		if (!test_and_set_bit(IPS_ASSURED_BIT, &ct->status))
			nf_conntrack_event_cache(IPCT_ASSURED, ct);
	} else {
		nf_ct_refresh_acct(ct, ctinfo, skb,
				   timeouts[UDP_CT_UNREPLIED]);
	}
	return NF_ACCEPT;
}
static int udp_packet ( struct nf_conn * ct , const struct sk_buff * skb , unsigned int dataoff , enum ip_conntrack_info ctinfo ) { unsigned int * timeouts ; timeouts = nf_ct_timeout_lookup ( ct ) ; if ( ! timeouts ) timeouts = udp_get_timeouts ( nf_ct_net ( ct ) ) ; if ( test_bit ( IPS_SEEN_REPLY_BIT , & ct -> status ) ) { nf_ct_refresh_acct ( ct , ctinfo , skb , timeouts [ UDP_CT_REPLIED ] ) ; if ( ! test_and_set_bit ( IPS_ASSURED_BIT , & ct -> status ) ) nf_conntrack_event_cache ( IPCT_ASSURED , ct ) ; } else { nf_ct_refresh_acct ( ct , ctinfo , skb , timeouts [ UDP_CT_UNREPLIED ] ) ; } return NF_ACCEPT ; }
Returns verdict for packet, and may modify conntracktype
Returns verdict for packet and may modify conntracktype
/* If we've seen traffic both ways, this is some kind of UDP
	   stream.  Extend timeout. */ /* Also, more likely to be important, and not a probe */