Index: include/linux/dccp.h
===================================================================
--- include/linux/dccp.h	(revision 35)
+++ include/linux/dccp.h	(working copy)
@@ -339,6 +339,109 @@
 	struct tcp_listen_opt	*dccps_listen_opt;
 };
 
+/* DCCP options */
+enum {
+	DCCPO_PADDING = 0,
+	DCCPO_MANDATORY = 1,
+	DCCPO_SLOW_RECEIVER = 2,
+	DCCPO_MIN_RESERVED = 3,
+	DCCPO_MAX_RESERVED = 31,
+	DCCPO_CHANGE_L = 32,
+	DCCPO_CONFIRM_L = 33,
+	DCCPO_CHANGE_R = 34,
+	DCCPO_CONFIRM_R = 35,
+	DCCPO_INIT_COOKIE = 36,
+	DCCPO_NDP_COUNT = 37,
+	DCCPO_ACK_VECTOR_0 = 38,
+	DCCPO_ACK_VECTOR_1 = 39,
+	DCCPO_DATA_DROPPED = 40,
+	DCCPO_TIMESTAMP = 41,
+	DCCPO_TIMESTAMP_ECHO = 42,
+	DCCPO_ELAPSED_TIME = 43,
+	DCCPO_DATA_CHECKSUM = 44,
+	DCCPO_MAX = 45,
+	DCCPO_MIN_CCID_SPECIFIC = 128,
+	DCCPO_MAX_CCID_SPECIFIC = 255,
+};
+
+/* DCCP features */
+enum {
+	DCCPF_RESERVED = 0,
+	DCCPF_CCID = 1,
+	DCCPF_ALLOW_SHORT_SEQNOS = 2,
+	DCCPF_SEQUENCE_WINDOW = 3,
+	DCCPF_ECN_INCAPABLE = 4,
+	DCCPF_ACK_RATIO = 5,
+	DCCPF_SEND_ACK_VECTOR = 6,
+	DCCPF_SEND_NDP_COUNT = 7,
+	DCCPF_MIN_CRC_COVERAGE = 8,
+	DCCPF_CHECK_DATA = 9,
+	/* 10-127 reserved */
+	DCCPF_MIN_CCID_SPECIFIC = 128,
+	DCCPF_MAX_CCID_SPECIFIC = 255,
+};
+
+/* initial values for each feature */
+#define DCCPF_INITIAL_SEQUENCE_WINDOW		100
+#define DCCPF_INITIAL_ACK_RATIO			2
+#define DCCPF_INITIAL_CCID			2
+#define DCCPF_INITIAL_ALLOW_SHORT_SEQNOS	1
+#define DCCPF_INITIAL_ECN_INCAPABLE		0
+#define DCCPF_INITIAL_SEND_ACK_VECTOR		0
+#define DCCPF_INITIAL_SEND_NDP_COUNT		0
+#define DCCPF_INITIAL_MIN_CRC_COVERAGE		0
+#define DCCPF_INITIAL_CHECK_DATA		0
+
+/* reconciliation rules */
+enum dccp_reconciliation_rules {
+	DCCPF_RECON_SP,		/* Server Priority */
+	DCCPF_RECON_NN,		/* Non Negotiable */
+};
+
+/* reconciliation rules used by each feature */
+#define DCCPF_RECONR_SEQUENCE_WINDOW		DCCPF_RECON_SP
+#define DCCPF_RECONR_ACK_RATIO			DCCPF_RECON_SP
+#define DCCPF_RECONR_CCID			DCCPF_RECON_NN
+#define DCCPF_RECONR_ALLOW_SHORT_SEQNOS		DCCPF_RECON_SP
+#define DCCPF_RECONR_ECN_INCAPABLE		DCCPF_RECON_NN
+#define DCCPF_RECONR_SEND_ACK_VECTOR		DCCPF_RECON_SP
+#define DCCPF_RECONR_SEND_NDP_COUNT		DCCPF_RECON_SP
+#define DCCPF_RECONR_MIN_CRC_COVERAGE		DCCPF_RECON_SP
+#define DCCPF_RECONR_CHECK_DATA			DCCPF_RECON_SP
+
+/* possible states during negotiation */
+enum {
+	DCCPF_STATE_STABLE = 0,
+	DCCPF_STATE_CHANGING,
+	DCCPF_STATE_UNSTABLE,
+};
+
+/**
+  * struct dccp_options - option values for a DCCP connection
+  *	@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)
+  *	@dccpo_allow_short_seqnos - Allow Short Sequence Numbers (section 7.6.1)
+  *	@dccpo_ecn_incapable - ECN Incapable Host (section 12.1)
+  *	@dccpo_send_ack_vector - Send Ack Vector Feature (section 11.5)
+  *	@dccpo_send_ndp_count - Send NDP Count Feature (7.7.2)
+  *	@dccpo_min_crc_coverage - Minimum Checksum Coverage (9.2.1)
+  *	@dccpo_check_data - Check Data Checksum (9.3.1)
+  *	@dccpo_slow_receiver - receiver temporaly overloaded (11.6)
+  */
+struct dccp_options {
+	__u64			dccpo_sequence_window;
+	__u16			dccpo_ack_ratio;
+	__u8			dccpo_ccid;
+	__u8			dccpo_allow_short_seqnos;
+	__u8			dccpo_ecn_incapable;
+	__u8			dccpo_send_ack_vector;
+	__u8			dccpo_send_ndp_count;
+	__u8			dccpo_min_crc_coverage;
+	__u8			dccpo_check_data;
+	__u8			dccpo_slow_receiver:1;
+};
+
 static inline struct dccp_sock *dccp_sk(const struct sock *sk)
 {
 	return (struct dccp_sock *)sk;
