/* dccp_feat_push_change - Add/overwrite a Change option in the list @fn_list: feature-negotiation list to update @feat: one of dccp_feature_numbers @local: whether local (1) or remote (0) @feat_num is meant @needs_mandatory: whether to use Mandatory feature negotiation options @fval: pointer to NN/SP value to be inserted (will be copied)  */
static int dccp_feat_push_change(struct list_head *fn_list, u8 feat, u8 local, u8 mandatory, dccp_feat_val *fval)
/* dccp_feat_push_change - Add/overwrite a Change option in the list @fn_list: feature-negotiation list to update @feat: one of dccp_feature_numbers @local: whether local (1) or remote (0) @feat_num is meant @needs_mandatory: whether to use Mandatory feature negotiation options @fval: pointer to NN/SP value to be inserted (will be copied)  */
static int dccp_feat_push_change(struct list_head *fn_list, u8 feat, u8 local, u8 mandatory, dccp_feat_val *fval)
{
	struct dccp_feat_entry *new = dccp_feat_entry_new(fn_list, feat, local);
	if (new == NULL)
		return -ENOMEM;
	new->feat_num	     = feat;
	new->is_local	     = local;
	new->state	     = FEAT_INITIALISING;
	new->needs_confirm   = 0;
	new->empty_confirm   = 0;
	new->val	     = *fval;
	new->needs_mandatory = mandatory;
	return 0;
}