dccp_pr_debug_cat(", ack=%llu\n", DCCP_SKB_CB(skb)->dccpd_ack_seq); 
dccp_pr_debug_cat(", ack=%llu\n", (unsigned long long) DCCP_SKB_CB(skb)->dccpd_ack_seq); 
int dccp_v4_rcv(struct sk_buff *skb){	const struct dccp_hdr *dh;	struct sock *sk;	int rc;	/* Step 1: Check header basics: */	if (dccp_invalid_packet(skb))		goto discard_it;	dh = dccp_hdr(skb);#if 0	/*	 * Use something like this to simulate some DATA/DATAACK loss to test	 * dccp_ackpkts_add, you'll get something like this on a session that	 * sends 10 DATA/DATAACK packets:	 *	 * dccp_ackpkts_print: 281473596467422 |0,0|3,0|0,0|3,0|0,0|3,0|0,0|3,0|0,1|	 *	 * 0, 0 means: DCCP_ACKPKTS_STATE_RECEIVED, RLE == just this packet	 * 0, 1 means: DCCP_ACKPKTS_STATE_RECEIVED, RLE == two adjacent packets with the same state	 * 3, 0 means: DCCP_ACKPKTS_STATE_NOT_RECEIVED, RLE == just this packet	 *	 * So...	 *	 * 281473596467422 was received	 * 281473596467421 was not received	 * 281473596467420 was received	 * 281473596467419 was not received	 * 281473596467418 was received	 * 281473596467417 was not received	 * 281473596467416 was received	 * 281473596467415 was not received	 * 281473596467414 was received	 * 281473596467413 was received (this one was the 3way handshake RESPONSE)	 *	 */	if (dh->dccph_type == DCCP_PKT_DATA || dh->dccph_type == DCCP_PKT_DATAACK) {		static int discard = 0;		if (discard) {			discard = 0;			goto discard_it;		}		discard = 1;	}#endif	DCCP_SKB_CB(skb)->dccpd_seq  = dccp_hdr_seq(skb);	DCCP_SKB_CB(skb)->dccpd_type = dh->dccph_type;	dccp_pr_debug("%8.8s "		      "src=%u.%u.%u.%u@%-5d "		      "dst=%u.%u.%u.%u@%-5d seq=%llu",		      dccp_packet_name(dh->dccph_type),		      NIPQUAD(skb->nh.iph->saddr), ntohs(dh->dccph_sport),		      NIPQUAD(skb->nh.iph->daddr), ntohs(dh->dccph_dport),		      DCCP_SKB_CB(skb)->dccpd_seq);	if (dccp_packet_without_ack(skb)) {		DCCP_SKB_CB(skb)->dccpd_ack_seq = DCCP_PKT_WITHOUT_ACK_SEQ;		dccp_pr_debug_cat("\n");	} else {		DCCP_SKB_CB(skb)->dccpd_ack_seq = dccp_hdr_ack_seq(skb);		dccp_pr_debug_cat(", ack=%llu\n", DCCP_SKB_CB(skb)->dccpd_ack_seq);	}	/* Step 2:	 * 	Look up flow ID in table and get corresponding socket */	sk = __inet_lookup(&dccp_hashinfo,			   skb->nh.iph->saddr, dh->dccph_sport,			   skb->nh.iph->daddr, ntohs(dh->dccph_dport),			   inet_iif(skb));	/* 	 * Step 2:	 * 	If no socket ...	 *		Generate Reset(No Connection) unless P.type == Reset	 *		Drop packet and return	 */	if (sk == NULL) {		dccp_pr_debug("failed to look up flow ID in table and "			      "get corresponding socket\n");		goto no_dccp_socket;	}	/* 	 * Step 2:	 * 	... or S.state == TIMEWAIT,	 *		Generate Reset(No Connection) unless P.type == Reset	 *		Drop packet and return	 */	       	if (sk->sk_state == DCCP_TIME_WAIT) {		dccp_pr_debug("sk->sk_state == DCCP_TIME_WAIT: discard_and_relse\n");                goto discard_and_relse;	}	if (!xfrm4_policy_check(sk, XFRM_POLICY_IN, skb)) {		dccp_pr_debug("xfrm4_policy_check failed\n");		goto discard_and_relse;	}        if (sk_filter(sk, skb, 0)) {		dccp_pr_debug("sk_filter failed\n");                goto discard_and_relse;	}	skb->dev = NULL;	bh_lock_sock(sk);	rc = 0;	if (!sock_owned_by_user(sk))		rc = dccp_v4_do_rcv(sk, skb);	else		sk_add_backlog(sk, skb);	bh_unlock_sock(sk);	sock_put(sk);	return rc;no_dccp_socket:	if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb))		goto discard_it;	/*	 * Step 2:	 *		Generate Reset(No Connection) unless P.type == Reset	 *		Drop packet and return	 */	if (dh->dccph_type != DCCP_PKT_RESET) {		DCCP_SKB_CB(skb)->dccpd_reset_code = DCCP_RESET_CODE_NO_CONNECTION;		dccp_v4_ctl_send_reset(skb);	}discard_it:	/* Discard frame. */	kfree_skb(skb);	return 0;discard_and_relse:	sock_put(sk);	goto discard_it;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f6ccf55419c4f0021e7382f000f2fd14a29f3d3c/ipv4.c/clean/net/dccp/ipv4.c