Index: include/linux/dccp.h
===================================================================
--- include/linux/dccp.h.orig	2005-05-09 11:46:16.000000000 -0300
+++ include/linux/dccp.h	2005-05-09 11:47:21.000000000 -0300
@@ -342,6 +342,7 @@
 	DCCPF_MIN_CRC_COVERAGE = 8,
 	DCCPF_CHECK_DATA = 9,
 	/* 10-127 reserved */
+	DCCPF_FIRST_RESERVED = 10,
 	DCCPF_MIN_CCID_SPECIFIC = 128,
 	DCCPF_MAX_CCID_SPECIFIC = 255,
 };
@@ -360,14 +361,35 @@
 #define DCCPF_INITIAL_CHECK_DATA		0
 
 /* possible states during negotiation */
-enum {
+enum dccp_feature_state {
 	DCCPF_STATE_STABLE = 0,
 	DCCPF_STATE_CHANGING,
 	DCCPF_STATE_UNSTABLE,
 };
 
 /**
+  * struct dccp_features - holds old feature values before change and the
+  * 			   state of each feature
+  *
+  *	@dccpf_old_$i - old feature $i value before change
+  *	@dccpf_state - array with current features' states
+  */
+struct dccp_features {
+	__u64			dccpf_old_sequence_window;
+	__u16			dccpf_old_ack_ratio;
+	char			*dccpf_old_ccid;
+	__u8			dccpf_old_allow_short_seqnos;
+	__u8			dccpf_old_ecn_incapable;
+	__u8			dccpf_old_send_ack_vector;
+	__u8			dccpf_old_send_ndp_count;
+	__u8			dccpf_old_min_crc_coverage;
+	__u8			dccpf_old_check_data;
+	enum dccp_feature_state	dccpf_state[DCCPF_FIRST_RESERVED];
+};
+
+/**
   * struct dccp_options - option values for a DCCP connection
+  *	@dccpo_features - old features' values and their current state
   *	@dccpo_sequence_window - Sequence Window Feature (section 7.5.2)
   *	@dccpo_ack_ratio - Ack Ratio Feature (section 11.3)
   *	@dccpo_ccid - Congestion Control Id (CCID) (section 10)
@@ -380,6 +402,7 @@
   *	@dccpo_slow_receiver - receiver temporaly overloaded (11.6)
   */
 struct dccp_options {
+	struct dccp_features	dccpo_features;
 	__u64			dccpo_sequence_window;
 	__u16			dccpo_ack_ratio;
 	__u8			dccpo_ccid;
