--- domainaddtest/baselib/oh_client_conf.c	2010-09-15 13:43:22.000000000 +0200
+++ did/baselib/oh_client_conf.c	2010-09-16 13:36:41.000000000 +0200
@@ -110,11 +110,19 @@
     GList *keys = 0;
     g_hash_table_foreach(ohc_domains, extract_keys, &keys);
     keys = g_list_sort(keys, (GCompareFunc)compare_keys);
+    GList *item;
+    SaHpiDomainIdT item_did, prev_did = 0;
+
+    if (*did!=OH_DEFAULT_DOMAIN_ID && *did!=SAHPI_UNSPECIFIED_DOMAIN_ID){
+        for (item = keys; item != NULL; item = item->next) {
+            if (*did == *(const SaHpiDomainIdT *)(item->data)) 
+               return SA_ERR_HPI_INVALID_DOMAIN;
+        }
+    }
+    else { //assign a free value for did
 
     // found prev = a gap in domain ids list or max domain id
     // so that new did will be prev + 1
-    SaHpiDomainIdT prev_did = 0;
-    GList *item;
     for (item = keys; item != NULL; item = item->next) {
         SaHpiDomainIdT item_did = *(const SaHpiDomainIdT *)(item->data);
         if ((prev_did + 1) < item_did) {
@@ -135,6 +143,8 @@
     }
 
     *did = prev_did + 1;
+    }
+
     add_domain_conf(*did, host, port);
 
     g_static_rec_mutex_unlock(&ohc_lock);
