00-README.conf                                             |  11 ++-
 osaf/services/infrastructure/nid/scripts/configure_tipc.in |  51 ++++++++-----
 2 files changed, 39 insertions(+), 23 deletions(-)


Issue:
In some OS like Montavista, TIPC is built in kernel module,
the default  node address will be  <0.0.0>.

Fix :
This patch determines such OS which has TIPC is built in kernel module
and configures the TIPC node address to OpenSAF requirements.

Notes :

1) In OS like Montavista where TIPC is built in kernel module,
once TIPC has joined a network with a network id & address
it cannot change node address once assigned, until node reboots,
in other words opensafd stop  will not Reset tipc link/link Lost.
the only way to get Reset tipc link/link Lost is rebooting node.

2 ) As If once TIPC has joined a network with a network-id & address
  it is not possible to change node address  until node reboots,
  so duplicate node verification is not possible and enable disable
  duplicate node verification (TIPC_DUPLICATE_NODE_DETECT=YES/NO)
  has NO effect.

diff --git a/00-README.conf b/00-README.conf
--- a/00-README.conf
+++ b/00-README.conf
@@ -171,7 +171,14 @@ Notes:
 
 (i) To use TIPC duplicate node address detection in cluster, while starting 
Opensaf
     we needs to enabled TIPC_DUPLICATE_NODE_DETECT=YES in
-    `/usr/lib(64)/opensaf/configure_tipc`  script.  
+    `/usr/lib(64)/opensaf/configure_tipc`  script. 
+
+    Note: In OS like Montavista where TIPC is built in kernel module,
+    once TIPC has joined a network with a network-id & address
+    it is not possible to change node address  until node reboots,
+    so duplicate node verification is not possible and enable disable
+    duplicate node verification (TIPC_DUPLICATE_NODE_DETECT=YES/NO)
+    has NO effect.
 
 *******************************************************************************
 nodeinit.conf.<node_type>
@@ -584,4 +591,4 @@ Update the opensaf_reboot script:
 #export FMS_FENCE_ACTION="reset"
 
 Environment variable OPENSAF_REBOOT_TIMEOUT can be set as a fallback if
-the remote fencing fails and instead trigger a reboot of the local node.
\ No newline at end of file
+the remote fencing fails and instead trigger a reboot of the local node.
diff --git a/osaf/services/infrastructure/nid/scripts/configure_tipc.in 
b/osaf/services/infrastructure/nid/scripts/configure_tipc.in
--- a/osaf/services/infrastructure/nid/scripts/configure_tipc.in
+++ b/osaf/services/infrastructure/nid/scripts/configure_tipc.in
@@ -43,6 +43,12 @@ TIPC_MAX_NODES=4095
 # at Opensaf start-up , it is per-verified whether any duplicate node
 # exist in the cluster, set TIPC_DUPLICATE_NODE_DETECT set to NO to disable
 # per-verification of duplicate node.
+#
+# Note: In OS like Montavista where TIPC is built in kernel module,
+#       once TIPC has joined a network with a network id & address
+#       it cannot change node address once assigned, until node reboots,
+#       so duplicate node verification is not possible and enable disable
+#       duplicate node verification has NO effect.
 DUPLICATE_NODE_DETECT=${TIPC_DUPLICATE_NODE_DETECT:-"NO"}
 
 # constants
@@ -258,31 +264,34 @@ function tipc_configure ()
 # Consider that TIPC could be statically linked
 if ! grep TIPC /proc/net/protocols >& /dev/null; then
     if [ "$DUPLICATE_NODE_DETECT" = "YES" ]; then
-       tipc_duplicate_node_detect 
+        tipc_duplicate_node_detect
     fi
     tipc_configure
 else
     # TIPC is already present, is it configured properly?
-    configured_tipc_addr=`tipc-config -addr | tr -s '<>' % | cut -d% -f2`
-    opensaf_tipc_addr=1.1.$TIPC_NODEID
-    if [ $configured_tipc_addr != $opensaf_tipc_addr ]; then
-        logger -t opensaf -s "TIPC node address not configured to OpenSAF 
requirements, exiting..."
-        exit 1
-    fi
-
-    configured_net_id=`tipc-config -netid | cut -d: -f2`
-    opensaf_net_id=$TIPC_NETID
-    if [ $configured_net_id != $opensaf_net_id ]; then
-        logger -t opensaf -s "TIPC network ID not configured to OpenSAF 
requirements, exiting..."
-        exit 1
-    fi
-
-    configured_bearers=$(${tipc_config} -b | grep -v Bearer | cut -d: -f2 | 
sort)
-    opensaf_bearers=$(echo "$ETH_NAME" | tr "," "\n" | sort)
-    if [ "$configured_bearers" != "$opensaf_bearers" ]; then
-        logger -t opensaf -s "TIPC bearer not configured to OpenSAF 
requirements, exiting..."
-        exit 1
+    configured_tipc_addr=$(${tipc_config} -addr | tr -s '<>' % | cut -d% -f2)
+    opensaf_tipc_addr=1.1."$TIPC_NODEID"
+    if [ "$configured_tipc_addr" != "$opensaf_tipc_addr" ]; then
+        if [ "$configured_tipc_addr" != "0.0.0" ]; then
+            logger -t opensaf -s "TIPC node address not configured to OpenSAF 
requirements, Exiting..."
+            exit 1
+        else
+            logger -t opensaf -s "TIPC node address not yet configured , 
Configuring..."
+            tipc_configure
+        fi
+    else
+        configured_net_id=$(${tipc_config} -netid | cut -d: -f2)
+        opensaf_net_id="$TIPC_NETID"
+        if [ "$configured_net_id" -ne "$opensaf_net_id" ]; then
+            logger -t opensaf -s "TIPC network ID not configured to OpenSAF 
requirements, exiting..."
+            exit 1
+        fi
+        configured_bearers=$(${tipc_config} -b | grep -v Bearer | cut -d: -f2 
| sort)
+        opensaf_bearers=$(echo "$ETH_NAME" | tr "," "\n" | sort)
+        if [ "$configured_bearers" != "$opensaf_bearers" ]; then
+            logger -t opensaf -s "TIPC bearer not configured to OpenSAF 
requirements, exiting..."
+            exit 1
+        fi
     fi
 fi
 
-

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to