/* dccp_feat_register_sp - Register requests to change SP feature values @sk: client or listening socket @feat: one of dccp_feature_numbers @is_local: whether the local (1) or remote (0) @feat is meant @list: array of preferred values, in descending order of preference @len: length of @list in bytes  */
int dccp_feat_register_sp(struct sock *sk, u8 feat, u8 is_local, u8 const *list, u8 len)
/* dccp_feat_register_sp - Register requests to change SP feature values @sk: client or listening socket @feat: one of dccp_feature_numbers @is_local: whether the local (1) or remote (0) @feat is meant @list: array of preferred values, in descending order of preference @len: length of @list in bytes  */
int dccp_feat_register_sp(struct sock *sk, u8 feat, u8 is_local, u8 const *list, u8 len)
{
	if (sk->sk_state != DCCP_CLOSED)
		return -EISCONN;
	if (dccp_feat_type(feat) != FEAT_SP)
		return -EINVAL;
	return __feat_register_sp(&dccp_sk(sk)->dccps_featneg, feat, is_local,
				  0, list, len);
}