Lines Matching defs:pg_pattern

49  *	    A.  No conflicting definitions of "pg_pattern" are allowed
57 * D. If a pg_pattern has a required attribute with a value of
67 * A. Verify that the types of the PG and the pg_pattern are
139 * looking for the ones that define a pg_pattern or a prop_pattern. To be
333 pgroup_t *ite_pg_pattern; /* Violated pg_pattern */
485 * Structure of information about a pg_pattern or a prop_pattern. It is
499 pgroup_t *pi_enc_pgp; /* PG of the pg_pattern that holds */
524 * Pool for trees of pg_pattern info structures (ptrn_info_t).
1067 * pattern is a property group representing a pg_pattern or a
1069 * pg_pattern or prop_pattern.
1078 * pattern is a property group representing a pg_pattern or a prop_pattern.
1079 * This function returns the type specification from the pg_pattern or
1246 gen_prop_pattern_pg_name(pgroup_t *pg_pattern, const char *prop_name,
1257 /* Get the unique part of the pg_pattern's property group name. */
1259 assert(strncmp(pg_pattern->sc_pgroup_name, SCF_PG_TM_PG_PAT_BASE,
1261 unique = pg_pattern->sc_pgroup_name + prefix_size;
1399 * If srcflag is 1, print the template source of the pg_pattern or
1413 name_string = gettext("pg_pattern name");
1414 type_string = gettext("pg_pattern type");
1443 pgroup_t *pg_pattern = i->ite_pg_pattern;
1447 if (pg_pattern != NULL) {
1448 im_perror_pattern_info(out, pg_pattern, flags, srcflag);
1525 im_perror_item(out, gettext("Type specified in pg_pattern"),
1674 pgroup_t *pg_pattern, pgroup_t *pg, pgroup_t *prop_pattern,
1696 if (pg_pattern == NULL) {
1701 ed[ED_TMPL_FMRI] = pg_pattern->sc_parent->sc_fmri;
1702 ed[ED_TMPL_PG_NAME] = find_name_specification(pg_pattern);
1703 ed[ED_TMPL_PG_TYPE] = find_type_specification(pg_pattern);
1737 if (pg_pattern != NULL) {
1738 ev1 = find_type_specification(pg_pattern);
1819 pgroup_t *pg_pattern, pgroup_t *pg, pgroup_t *prop_pattern,
1832 ite->ite_pg_pattern = pg_pattern;
1845 * pattern must point to a pg_pattern or a prop_pattern. This function
2055 * Find the property group that defines the pg_pattern that
2176 * pg_pattern.
2381 * The target of a pg_pattern in combination with the level at which the
2382 * pg_pattern was defined determines whether or not it should be applied.
2389 * "this" only applies if the pg_pattern was defined
2402 * 1 apply the pg_pattern
2403 * 0 ignore the pg_pattern
2451 pg_target_check(pgroup_t *pg_pattern, tmpl_level_t level)
2455 target = find_astring_value_in_pg(pg_pattern, SCF_PROPERTY_TM_TARGET);
2457 switch (pg_pattern->sc_parent->sc_etype) {
2509 * pg_pattern. The name and type of the pg_pattern are used to construct
2543 * part of the pg_pattern property group name.
2553 * As long as the pg_pattern has a name, it becomes part of
2554 * the name of the pg_pattern property group name. We
2675 * Verify that there are no conflicting definitions of pg_pattern or
2716 * For pg_pattern both name and type are optional unless
2763 * Look for pg_pattern definitions in general. general is either the
2766 * For each general pg_pattern, see if the instance contains an overriding
2795 /* Not a pg_pattern */
2803 /* See if global pg_pattern is targeted at us. */
2809 * be a restarter, the pg_pattern could have a
2849 * tree contains the pg_pattern definitions for the instance at inst. See
2879 * - No conflicting definitions of `pg_pattern` are allowed within a
2890 * - If a pg_pattern has a required attribute with a value of true,
2920 * Check to see if they override any pg_pattern definitions in the
2938 * If the pg_pattern has a required attribute with a value of true,
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.
3083 tmpl_find_prop_pattern(entity_t *inst, pgroup_t *pg_pattern,
3095 rc = gen_prop_pattern_pg_name(pg_pattern,
3113 if (strcmp(pg_pattern->sc_pgroup_name, c) == 0)
3127 * Indexes for pg_pattern property group names. Indexes are arranged
3138 * instance; return the address of the pg_pattern for the property group.
3139 * The address of the pg_pattern is placed at pgp. NULL indicates that no
3140 * pg_pattern was specified.
3155 /* Generate candidate names for pg_pattern property groups. */
3184 * pg_pattern, keep it.
3193 /* Find the most specific pg_pattern. */
3235 uu_die(gettext("pg_pattern info pool creation failed: %s\n"),
3277 * pg is the property group that holds prop, and pg_pattern is the
3278 * pg_pattern for the property group. pg and pg_pattern are only used for
3283 pgroup_t *pg, pgroup_t *pg_pattern, tmpl_errors_t *errs)
3319 pg_pattern, pg, prop_pattern, prop, NULL, &einfo);
3327 * Iterate over pg_patterns in the entity, e. If the pg_pattern's required
3389 * value of its pg_pattern property to see if it matches the name of the
3390 * pg_pattern. If they match, this is a prop_pattern that is of interest
3398 tmpl_required_props_present(entity_t *e, pgroup_t *pg, pgroup_t *pg_pattern,
3421 * Find the pg_pattern property in this prop_pattern.
3423 * pg_pattern.
3428 if (strcmp(pg_pattern->sc_pgroup_name,
3444 if (add_scf_error(errs, ec, pg_pattern, pg,
3493 * pg is the property group that holds prop, and pg_pattern is the
3494 * pg_pattern for the property group. pg and pg_pattern are only used for
3499 pgroup_t *pg_pattern, tmpl_errors_t *errs)
3523 (void) tmpl_errors_add_im(errs, rc, pg_pattern->sc_parent,
3524 pg_pattern, pg, pattern, prop, NULL, &einfo);
3534 (void) tmpl_errors_add_im(errs, rc, pg_pattern->sc_parent,
3535 pg_pattern, pg, pattern, prop, NULL, &einfo);
3556 if (add_scf_error(errs, SCF_TERR_RANGE_VIOLATION, pg_pattern,
3569 * pg is the property group that holds prop, and pg_pattern is the
3570 * pg_pattern for the property group. pg and pg_pattern are only used for
3575 pgroup_t *pg_pattern, tmpl_errors_t *errs)
3589 (void) tmpl_errors_add_im(errs, r, pg->sc_parent, pg_pattern,
3635 SCF_TERR_VALUE_CONSTRAINT_VIOLATED, pg_pattern, pg,
3660 * pg is the property group that holds prop, and pg_pattern is the
3661 * pg_pattern for the property group. pg and pg_pattern are only used for
3666 pgroup_t *pg, pgroup_t *pg_pattern, tmpl_errors_t *errs)
3671 rc = tmpl_validate_value_range(pattern, prop, pg, pg_pattern, errs);
3672 r = tmpl_validate_values(pattern, prop, pg, pg_pattern, errs);
3688 * pg is the property group that holds prop, and pg_pattern is the
3689 * pg_pattern for the property group. pg and pg_pattern are only used for
3694 pgroup_t *pg_pattern, tmpl_errors_t *errs)
3727 pg_pattern, pg, tmpl, prop, NULL, &einfo);
3749 r = tmpl_validate_cardinality(tmpl, prop, pg, pg_pattern, errs);
3754 r = tmpl_validate_value_constraints(tmpl, prop, pg, pg_pattern, errs);
3764 * - Verify that the types of the pg and the pg_pattern are
3773 const char *pg_pattern_type; /* Type declared by pg_pattern. */
3774 pgroup_t *pg_pattern; /* Prop. group for pg_pattern */
3782 * See if there is a pg_pattern for this property group. If it
3784 * pg_pattern, then there is no validation to do.
3786 rc = tmpl_find_pg_pattern(e, pg, &pg_pattern);
3802 if (pg_pattern == NULL)
3806 * If the pg_pattern declares a type, verify that the PG has the
3809 pg_pattern_type = find_type_specification(pg_pattern);
3818 SCF_TERR_WRONG_PG_TYPE, pg_pattern, pg,
3831 r = tmpl_errors_add_im(errs, rc, e, pg_pattern, pg,
3847 r = tmpl_find_prop_pattern(e, pg_pattern, prop, &prop_pattern);
3867 r = tmpl_validate_prop(prop, prop_pattern, pg, pg_pattern,
3876 r = tmpl_required_props_present(e, pg, pg_pattern, errs);
3893 * - Verify that the PG is in conformance with the pg_pattern