Merge branch 'milestone/monitoring' into jennifer/request_id
[trust_router.git] / include / tr_rp.h
index d022cca..4424c73 100644 (file)
 #ifndef TR_RP_H
 #define TR_RP_H
 
-#include <tr.h>
+#include <talloc.h>
+#include <tr_name_internal.h>
 
-#define TR_MAX_GSS_NAMES 5
-
-typedef struct tr_instance TR_INSTANCE;
-
-typedef struct tr_rp_client {
-  struct tr_rp_client *next;
-  struct tr_rp_client *comm_next;
-  TR_NAME *rp_match;
-  TR_NAME *gss_names[TR_MAX_GSS_NAMES];
-  // TR_FILTER *filters;
-} TR_RP_CLIENT;
-
-/* Structure to make a link list of RP realms by name for community config */
+/* Structure to make a linked list of RP realms by name for community config */
 typedef struct tr_rp_realm {
   struct tr_rp_realm *next;
-  TR_NAME *realm_name;
+  TR_NAME *realm_id;
+  unsigned int refcount; /* how many TR_COMM_MEMBs refer to this realm */
 } TR_RP_REALM;
 
-TR_RP_CLIENT *tr_rp_client_lookup(TR_INSTANCE *tr, TR_NAME *gss_name);
+/* prototypes */
+TR_RP_REALM *tr_rp_realm_new(TALLOC_CTX *mem_ctx);
+void tr_rp_realm_free(TR_RP_REALM *rp);
+TR_NAME *tr_rp_realm_get_id(TR_RP_REALM *rp);
+TR_NAME *tr_rp_realm_dup_id(TR_RP_REALM *rp);
+void tr_rp_realm_set_id(TR_RP_REALM *rp, TR_NAME *id);
+TR_RP_REALM *tr_rp_realm_lookup(TR_RP_REALM *rp_realms, TR_NAME *rp_name);
+TR_RP_REALM *tr_rp_realm_add_func(TR_RP_REALM *head, TR_RP_REALM *new);
+#define tr_rp_realm_add(head,new) ((head)=tr_rp_realm_add_func((head),(new)))
+TR_RP_REALM *tr_rp_realm_remove_func(TR_RP_REALM *head, TR_RP_REALM *remove);
+#define tr_rp_realm_remove(head,remove) ((head)=tr_rp_realm_remove_func((head),(remove)))
+TR_RP_REALM *tr_rp_realm_sweep_func(TR_RP_REALM *head);
+#define tr_rp_realm_sweep(head) ((head)=tr_rp_realm_sweep_func((head)))
+void tr_rp_realm_incref(TR_RP_REALM *realm);
+void tr_rp_realm_decref(TR_RP_REALM *realm);
+
+char *tr_rp_realm_to_str(TALLOC_CTX *mem_ctx, TR_RP_REALM *rp);
 
 #endif