X-Git-Url: http://www.project-moonshot.org/gitweb/?p=trust_router.git;a=blobdiff_plain;f=include%2Fmon_internal.h;h=29ea5146826163a5d4347935f1be2e40aebc9d44;hp=171ce1810dcbfa71a8f4f75329e13d753a2b5f08;hb=86f808dde0595769d045eb82ef414174953ab67e;hpb=3b59db3c5565b707e745d58f7ec1df1bdc7c1895 diff --git a/include/mon_internal.h b/include/mon_internal.h index 171ce18..29ea514 100644 --- a/include/mon_internal.h +++ b/include/mon_internal.h @@ -40,10 +40,14 @@ #include #include #include +#include +#include #include #include +#include #include -#include +#include +#include /* Typedefs */ typedef struct mon_req MON_REQ; @@ -58,9 +62,11 @@ typedef enum mon_opt_type MON_OPT_TYPE; typedef enum mon_rc MON_RC; typedef struct mons_instance MONS_INSTANCE; +typedef struct monc_instance MONC_INSTANCE; typedef int (MONS_REQ_FUNC)(MONS_INSTANCE *, MON_REQ *, MON_RESP *, void *); typedef int (MONS_AUTH_FUNC)(gss_name_t client_name, TR_NAME *display_name, void *cookie); +typedef int (MONC_RESP_FUNC)(MONS_INSTANCE *, MON_REQ *, MON_RESP *, void *); /* Struct and enum definitions */ enum mon_rc { @@ -85,19 +91,24 @@ enum mon_resp_code { enum mon_opt_type { OPT_TYPE_UNKNOWN=0, + OPT_TYPE_ANY, // System information OPT_TYPE_SHOW_VERSION, - OPT_TYPE_SHOW_SERIAL, + OPT_TYPE_SHOW_CONFIG_FILES, // System statistics OPT_TYPE_SHOW_UPTIME, OPT_TYPE_SHOW_TID_REQ_COUNT, + OPT_TYPE_SHOW_TID_REQ_ERR_COUNT, OPT_TYPE_SHOW_TID_REQ_PENDING, // Dynamic trust router state OPT_TYPE_SHOW_ROUTES, - OPT_TYPE_SHOW_COMMUNITIES + OPT_TYPE_SHOW_PEERS, + OPT_TYPE_SHOW_COMMUNITIES, + OPT_TYPE_SHOW_REALMS, + OPT_TYPE_SHOW_RP_CLIENTS }; struct mon_opt { @@ -110,7 +121,6 @@ struct mon_req { }; struct mon_resp { - MON_REQ *req; // request this responds to MON_RESP_CODE code; TR_NAME *message; json_t *payload; @@ -126,6 +136,13 @@ struct mons_instance { MONS_REQ_FUNC *req_handler; MONS_AUTH_FUNC *auth_handler; void *cookie; + GPtrArray *handlers; + GArray *pids; /* PIDs of active mons processes */ +}; + +/* Client instance */ +struct monc_instance { + TR_GSSC_INSTANCE *gssc; }; /* Prototypes */ @@ -146,23 +163,33 @@ MON_OPT *mon_req_opt_index(MON_REQ *req, size_t index); json_t *mon_req_encode(MON_REQ *req); /* mon_req_decode.c */ -MON_REQ *mon_req_decode(TALLOC_CTX *mem_ctx, const char *req_json); +MON_REQ *mon_req_decode(TALLOC_CTX *mem_ctx, json_t *req_json); +MON_REQ *mon_req_parse(TALLOC_CTX *mem_ctx, const char *input); /* mon_resp.c */ -MON_RESP *mon_resp_new(TALLOC_CTX *mem_ctx, - MON_REQ *req, - MON_RESP_CODE code, - const char *msg, - json_t *payload); +MON_RESP *mon_resp_new(TALLOC_CTX *mem_ctx, MON_RESP_CODE code, const char *msg, json_t *payload); void mon_resp_free(MON_RESP *resp); +int mon_resp_set_message(MON_RESP *resp, const char *new_msg); +void mon_resp_set_payload(MON_RESP *resp, json_t *new_payload); /* mon_resp_encode.c */ json_t *mon_resp_encode(MON_RESP *resp); +/* mon_resp_decode.c */ +MON_RESP * mon_resp_decode(TALLOC_CTX *mem_ctx, json_t *resp_json); + /* mons.c */ MONS_INSTANCE *mons_new(TALLOC_CTX *mem_ctx); int mons_get_listener(MONS_INSTANCE *mons, MONS_REQ_FUNC *req_handler, MONS_AUTH_FUNC *auth_handler, const char *hostname, unsigned int port, void *cookie, int *fd_out, size_t max_fd); int mons_accept(MONS_INSTANCE *mons, int listen); +/* monc.c */ +MONC_INSTANCE *monc_new(TALLOC_CTX *mem_ctx); +void monc_free(MONC_INSTANCE *monc); +DH *monc_get_dh(MONC_INSTANCE *inst); +DH *monc_set_dh(MONC_INSTANCE *inst, DH *dh); +int monc_open_connection(MONC_INSTANCE *monc, const char *server, unsigned int port); +MON_RESP *monc_send_request(TALLOC_CTX *mem_ctx, MONC_INSTANCE *monc, MON_REQ *req); + #endif //TRUST_ROUTER_MON_REQ_H