Index: include/corosync/totem/totem.h
===================================================================
--- include/corosync/totem/totem.h	(revision 1701)
+++ include/corosync/totem/totem.h	(working copy)
@@ -84,6 +84,7 @@
 	struct totem_interface *interfaces;
 	int interface_count;
 	unsigned int node_id;
+	unsigned int clear_node_high_bit;
 
 	/*
 	 * key information
Index: exec/totemnet.c
===================================================================
--- exec/totemnet.c	(revision 1701)
+++ exec/totemnet.c	(working copy)
@@ -709,7 +709,12 @@
 	 * field is only 32 bits.
 	 */
 	if (bound_to->family == AF_INET && bound_to->nodeid == 0) {
-		memcpy (&bound_to->nodeid, bound_to->addr, sizeof (int));
+		int32_t nodeid = 0;
+		memcpy (&nodeid, bound_to->addr, sizeof (int));
+		if(nodeid < 0 && instance->totem_config->clear_node_high_bit) {
+			nodeid = 0 - nodeid;
+		}
+		bound_to->nodeid = nodeid;
 	}
 
 	return (res);
Index: exec/totemconfig.c
===================================================================
--- exec/totemconfig.c	(revision 1701)
+++ exec/totemconfig.c	(working copy)
@@ -217,6 +217,13 @@
 	 */
 	objdb_get_int (objdb, object_totem_handle, "nodeid", &totem_config->node_id);
 
+	totem_config->clear_node_high_bit = 0;
+	if (!objdb_get_string (objdb,object_totem_handle, "clear_node_high_bit", &str)) {
+	    if (strcmp (str, "yes") == 0) {
+		totem_config->clear_node_high_bit = 1;
+	    }
+	}
+	
 	objdb_get_int (objdb,object_totem_handle, "threads", &totem_config->threads);
 
 
Index: man/corosync.conf.5
===================================================================
--- man/corosync.conf.5	(revision 1701)
+++ man/corosync.conf.5	(working copy)
@@ -132,6 +132,17 @@
 reserved and should not be used.
 
 .TP
+clear_node_high_bit
+This configuration option is optional and is only relevant when no nodeid is
+specified.  Some openais clients require a signed 32 bit nodeid that is greater
+than zero however by default openais uses all 32 bits of the IPv4 address space
+when generating a nodeid.  Set this option to yes to force the high bit to be
+zero and therefor ensure the nodeid is a positive signed 32 bit integer.
+
+WARNING: The clusters behavior is undefined if this option is enabled on only
+a subset of the cluster (for example during a rolling upgrade).
+
+.TP
 secauth
 This specifies that HMAC/SHA1 authentication should be used to authenticate
 all messages.  It further specifies that all data should be encrypted with the
