*
*/
+#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;
}