debug("no corresponding data field or fixed data field");
debugf("No corresponding DataDataRecord field for RuleField of type %s", typeid2string(ruleField->type.id));
int dataTemplateDataMatchesRule(DataTemplateInfo* info, FieldData* data, Rule* rule) {	int i;	FieldInfo* fieldInfo;		/* for all patterns of this rule, check if they are matched */	for (i = 0; i < rule->fieldCount; i++) if (rule->field[i]->pattern) {		RuleField* ruleField = rule->field[i];			fieldInfo = getDataTemplateFieldInfo(info, &ruleField->type);		if (fieldInfo) {			/* corresponding data field found, check if it matches. If it doesn't the whole rule cannot be matched */			if (!matchesPattern(&fieldInfo->type, (data + fieldInfo->offset), &ruleField->type, ruleField->pattern)) return 0;			if (!checkAssociatedMask2(info, data, ruleField)) return 0;			continue;			}				/* no corresponding data field found, see if we find a corresponding fixed data field */		fieldInfo = getDataTemplateDataInfo(info, &ruleField->type);		if (fieldInfo) {			/* corresponding fixed data field found, check if it matches. If it doesn't the whole rule cannot be matched */			if (!matchesPattern(&fieldInfo->type, (info->data + fieldInfo->offset), &ruleField->type, ruleField->pattern)) return 0;			if (!checkAssociatedMask3(info, info->data, ruleField)) return 0;			continue;			}				/* no corresponding data field or fixed data field found, this flow cannot match */		debug("no corresponding data field or fixed data field");		return 0;		}		/* all rule fields were matched */	return 1;	}	