/* dccp_feat_push_confirm - Add a Confirm entry to the FN list @fn_list: feature-negotiation list to add to @feat: one of dccp_feature_numbers @local: whether local (1) or remote (0) @feat_num is being confirmed @fval: pointer to NN/SP value to be inserted or NULL Returns 0 on success, a Reset code for further processing otherwise.  */
static int dccp_feat_push_confirm(struct list_head *fn_list, u8 feat, u8 local, dccp_feat_val *fval)
/* dccp_feat_push_confirm - Add a Confirm entry to the FN list @fn_list: feature-negotiation list to add to @feat: one of dccp_feature_numbers @local: whether local (1) or remote (0) @feat_num is being confirmed @fval: pointer to NN/SP value to be inserted or NULL Returns 0 on success, a Reset code for further processing otherwise.  */
static int dccp_feat_push_confirm(struct list_head *fn_list, u8 feat, u8 local, dccp_feat_val *fval)
{
	struct dccp_feat_entry *new = dccp_feat_entry_new(fn_list, feat, local);
	if (new == NULL)
		return DCCP_RESET_CODE_TOO_BUSY;
	new->feat_num	     = feat;
	new->is_local	     = local;
	new->state	     = FEAT_STABLE;
	new->needs_confirm   = 1;
	new->empty_confirm   = (fval == NULL);
	new->val.nn	     = 0;
	if (!new->empty_confirm)
		new->val     = *fval;
	new->needs_mandatory = 0;
	return 0;
}