Merge branch 'master' into jennifer/trp-devel
[trust_router.git] / common / tr_comm.c
index 660ed4b..2dda3a7 100644 (file)
  *
  */
 
+#include <tr_rp.h>
 #include <trust_router/tr_name.h>
-#include <tr.h>
 #include <tr_comm.h>
+#include <tr_debug.h>
 
-TR_COMM *tr_comm_lookup(TR_INSTANCE *tr, TR_NAME *comm) 
+TR_IDP_REALM *tr_find_comm_idp (TR_COMM *comm, TR_NAME *idp_realm)
 {
+  TR_IDP_REALM *idp;
+
+  if ((!comm) || (!idp_realm)) {
+    return NULL;
+  }
+
+  for (idp = comm->idp_realms; NULL != idp; idp = idp->comm_next) {
+    if (!tr_name_cmp (idp_realm, idp->realm_id)) {
+      tr_debug("tr_find_comm_idp: Found IdP %s in community %s.", idp_realm->buf, comm->id->buf);
+      return idp;
+    }
+  }
+  /* if we didn't find one, return NULL */ 
+  return NULL;
+}
+
+TR_RP_REALM *tr_find_comm_rp (TR_COMM *comm, TR_NAME *rp_realm)
+{
+  TR_RP_REALM *rp;
+
+  if ((!comm) || (!rp_realm)) {
+    return NULL;
+  }
+
+  for (rp = comm->rp_realms; NULL != rp; rp = rp->next) {
+    if (!tr_name_cmp (rp_realm, rp->realm_name)) {
+      tr_debug("tr_find_comm_rp: Found RP %s in community %s.", rp_realm->buf, comm->id->buf);
+      return rp;
+    }
+  }
+  /* if we didn't find one, return NULL */ 
+  return NULL;
+}
+
+TR_COMM *tr_comm_lookup(TR_COMM *comms, TR_NAME *comm_name) 
+{
+  TR_COMM *cfg_comm = NULL;
+
+  for (cfg_comm = comms; NULL != cfg_comm; cfg_comm = cfg_comm->next) {
+    if ((cfg_comm->id->len == comm_name->len) &&
+       (!strncmp(cfg_comm->id->buf, comm_name->buf, comm_name->len)))
+      return cfg_comm;
+  }
   return NULL;
 }