X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=include%2Ftr_rp.h;h=4424c730cba12bb70d97a347814aac3cc18feab1;hb=fc7fb82d2661d977e7bacb4ffe469f3857a06b63;hp=afb4175a44c767b255917bffd44b19e5101ab0cc;hpb=319c080f87aad7075352e256b89bbb723bdae279;p=trust_router.git diff --git a/include/tr_rp.h b/include/tr_rp.h index afb4175..4424c73 100644 --- a/include/tr_rp.h +++ b/include/tr_rp.h @@ -35,19 +35,32 @@ #ifndef TR_RP_H #define TR_RP_H -#define TR_MAX_GSS_NAMES 5 +#include +#include -typedef struct tr_rp_client { - struct tr_rp_client *next; - struct tr_rp_client *comm_next; - 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; +/* 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