cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
From: lhh@sourceware.org <lhh@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/reslist.c
Date: 26 Apr 2007 20:42:02 -0000	[thread overview]
Message-ID: <20070426204202.6406.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	lhh at sourceware.org	2007-04-26 21:42:02

Modified files:
	rgmanager      : ChangeLog 
	rgmanager/src/daemons: reslist.c 

Log message:
	Fix #231521

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/ChangeLog.diff?cvsroot=cluster&r1=1.37&r2=1.38
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/reslist.c.diff?cvsroot=cluster&r1=1.17&r2=1.18

--- cluster/rgmanager/ChangeLog	2007/04/26 16:43:41	1.37
+++ cluster/rgmanager/ChangeLog	2007/04/26 20:42:02	1.38
@@ -1,3 +1,7 @@
+2007-04-26 Lon Hohberger <lhh@redhat.com>
+	* src/daemons/reslist.c: Try all direct ancestors while 
+	performing run-time inheritance resolution #231521
+
 2007-04-26 Fabio M. Di Nitto <fabbione@ubuntu.com>
 	* src/daemons/Makefile: use resrules-noccs in dtest build
 	target.
--- cluster/rgmanager/src/daemons/reslist.c	2007/03/22 23:46:58	1.17
+++ cluster/rgmanager/src/daemons/reslist.c	2007/04/26 20:42:02	1.18
@@ -79,17 +79,27 @@
 
    @param node		Resource tree node to look examine
    @param attrname	Attribute to retrieve.
+   @param ptype		Resource type to look for (if inheritance)
    @return 		value of attribute or NULL if not found
  */
-char *
-attr_value(resource_node_t *node, char *attrname)
+static char *
+_attr_value(resource_node_t *node, char *attrname, char *ptype)
 {
-	resource_t *res = node->rn_resource;
+	resource_t *res;
 	resource_attr_t *ra;
-	char *c, *p_type;
+	char *c, p_type[32];
 	ssize_t len;
 	int x;
 
+	if (!node)
+		return NULL;
+
+	res = node->rn_resource;
+
+	/* Go up the tree if it's not the right parent type */
+	if (ptype && strcmp(res->r_rule->rr_type, ptype))
+		return _attr_value(node->rn_parent, attrname, ptype);
+
 	for (x = 0; res->r_attrs && res->r_attrs[x].ra_name; x++) {
 		if (strcmp(attrname, res->r_attrs[x].ra_name))
 			continue;
@@ -108,28 +118,29 @@
 		if (!c) {
 			/* Someone doesn't care or uses older
 			   semantics on inheritance */
-			return attr_value(node->rn_parent, ra->ra_value);
+			return _attr_value(node->rn_parent, ra->ra_value,
+					   NULL);
 		}
-
-		p_type = node->rn_parent->rn_resource->r_rule->rr_type;
+		
 		len = (c - ra->ra_value);
-
-		/* Different sizes? */
-		if (strlen(p_type) != len)
-			return NULL;
-
-		/* Check for parent type match */
-		if (strncmp(p_type, ra->ra_value, len) != 0)
-			return NULL;
-
+		memset(p_type, 0, sizeof(p_type));
+		memcpy(p_type, ra->ra_value, len);
+		
 		/* Skip the "%" and recurse */
-		return attr_value(node->rn_parent, ++c);
+		return _attr_value(node->rn_parent, ++c, p_type);
 	}
 
 	return NULL;
 }
 
 
+char *
+attr_value(resource_node_t *node, char *attrname)
+{
+	return _attr_value(node, attrname, NULL);
+}
+
+
 /**
   Run to the top of the tree.  Used to determine certain attributes of the
   resource group in-line, during resource tree operations.



             reply	other threads:[~2007-04-26 20:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-26 20:42 lhh [this message]
  -- strict thread matches above, loose matches on Subject: below --
2007-06-22  8:40 [Cluster-devel] cluster/rgmanager ChangeLog src/daemons/reslist.c mgrac
2007-04-26 20:40 lhh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070426204202.6406.qmail@sourceware.org \
    --to=lhh@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).