Lines Matching defs:prop_pattern
55 * single prop_pattern name with differing types on the same
60 * E. If a prop_pattern has a required attribute with a value
62 * F. If a prop_pattern has an include_values element make sure
74 * imposed by the prop_pattern.
139 * looking for the ones that define a pg_pattern or a prop_pattern. To be
335 pgroup_t *ite_prop_pattern; /* Violated prop_pattern */
427 * constraint element of a prop_pattern. The structure is returned by
485 * Structure of information about a pg_pattern or a prop_pattern. It is
500 /* the prop_pattern defined by this */
1068 * prop_pattern. This function returns the name specification from the
1069 * pg_pattern or prop_pattern.
1078 * pattern is a property group representing a pg_pattern or a prop_pattern.
1080 * prop_pattern.
1116 * prop_pattern points to a prop_pattern. This function finds the
1117 * cardinality specification in the prop_pattern and returns the minimum
1124 get_cardinality(pgroup_t *prop_pattern, uint64_t *min, uint64_t *max)
1129 assert(strcmp(prop_pattern->sc_pgroup_type,
1132 prop = property_find(prop_pattern,
1140 prop = property_find(prop_pattern,
1241 * prop_pattern information for the property. The address of the generated
1400 * prop_pattern at pattern. Always print the name and type of the pattern.
1417 name_string = gettext("prop_pattern name");
1418 type_string = gettext("prop_pattern type");
1444 pgroup_t *prop_pattern = i->ite_prop_pattern;
1451 if (prop_pattern != NULL) {
1452 im_perror_pattern_info(out, prop_pattern, flags, srcflag);
1488 * error occurs if a prop_pattern has an invalid type specification. Thus,
1498 (void) fprintf(out, gettext("%sInvalid type in prop_pattern"), prefix);
1503 im_perror_item(out, gettext("prop_pattern name"),
1674 pgroup_t *pg_pattern, pgroup_t *pg, pgroup_t *prop_pattern,
1697 if (prop_pattern != NULL) {
1698 ed[ED_TMPL_FMRI] = prop_pattern->sc_parent->sc_fmri;
1705 if (prop_pattern != NULL) {
1706 ed[ED_TMPL_PROP_NAME] = find_name_specification(prop_pattern);
1707 ed[ED_TMPL_PROP_TYPE] = find_type_specification(prop_pattern);
1819 pgroup_t *pg_pattern, pgroup_t *pg, pgroup_t *prop_pattern,
1834 ite->ite_prop_pattern = prop_pattern;
1845 * pattern must point to a pg_pattern or a prop_pattern. This function
2056 * holds this prop_pattern.
2174 * Possible conflicting prop_pattern. See if the
2473 * Find the prop_pattern's type sepcification and convert it to the
2577 * pinfo contains information about a prop_pattern. An include_values
2578 * element with a type of type has been included in the prop_pattern
2579 * specification. We need to determine if the prop_pattern also contains
2581 * search the prop_pattern for properties whose names start with the
2611 * Now see if the prop_pattern has a property whose name starts
2642 * prop_pattern has constraint or values declarations as specified by the
2676 * prop_pattern. Two patterns are said to be in conflict if they have the
2887 * prop_pattern name with differing types on the same target
2893 * - If a prop_pattern has a required attribute with a value of true,
2896 * - If a prop_pattern has an include values make sure that the
2955 * If a prop_pattern has required attribute with a value of true,
3078 * This function finds the prop_pattern for the property, prop. e is the
3079 * instance where the search for the prop_pattern will start. pg_pattern
3080 * is the address of the pg_pattern that holds the prop_pattern.
3084 property_t *prop, pgroup_t **prop_pattern)
3092 * Get the name of the property group that holds the prop_pattern
3116 *prop_pattern = candidate;
3273 * Use the cardinality specification in the prop_pattern to verify the
3282 tmpl_validate_cardinality(pgroup_t *prop_pattern, property_t *prop,
3291 assert(strcmp(prop_pattern->sc_pgroup_type,
3294 rc = get_cardinality(prop_pattern, &min, &max);
3319 pg_pattern, pg, prop_pattern, prop, NULL, &einfo);
3388 * for all prop_patterns. When we find a prop_pattern, we look at the
3390 * pg_pattern. If they match, this is a prop_pattern that is of interest
3393 * When we find an interesting prop_pattern, we see if it's required
3405 pgroup_t *prop_pattern;
3417 for (prop_pattern = next_pattern_pg(iter);
3418 prop_pattern != NULL;
3419 prop_pattern = next_pattern_pg(iter)) {
3421 * Find the pg_pattern property in this prop_pattern.
3425 prop_pg_pattern_name = find_astring_value_in_pg(prop_pattern,
3434 if (is_required(prop_pattern) == 0)
3436 prop_name = find_astring_value_in_pg(prop_pattern,
3445 prop_pattern, NULL, NULL, &einfo) != 0) {
3489 * If the template prop_pattern at pattern contains a constraint_range
3566 * If the prop_pattern has value constraints, verify that all the values
3574 tmpl_validate_values(pgroup_t *prop_pattern, property_t *prop, pgroup_t *pg,
3585 r = av_get_values(prop_pattern, SCF_PROPERTY_TM_CONSTRAINT_NAME,
3590 pg, prop_pattern, prop, NULL, NULL);
3636 prop_pattern, prop, v, NULL) != 0) {
3654 * - The values all have the type specified by the prop_pattern at
3657 * - If the prop_pattern has one or more value constraints, validate
3683 * the prop_pattern template, tmpl.
3776 pgroup_t *prop_pattern;
3847 r = tmpl_find_prop_pattern(e, pg_pattern, prop, &prop_pattern);
3859 gettext("prop_pattern name too long");
3867 r = tmpl_validate_prop(prop, prop_pattern, pg, pg_pattern,