X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=include%2Ftr_trp.h;h=80c9a61c23faae3e2805d0c17f6d21004913782c;hb=1a3ad555c6b58de28efb85e7ab07c2f35208ab0d;hp=f96f211c0df0f43f2f221f6a33712bb678c4dc56;hpb=9aec821b9c185cbb646402cbd97cc2ba3b16c058;p=trust_router.git diff --git a/include/tr_trp.h b/include/tr_trp.h index f96f211..80c9a61 100644 --- a/include/tr_trp.h +++ b/include/tr_trp.h @@ -1,56 +1,83 @@ +/* + * Copyright (c) 2016, JANET(UK) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * 3. Neither the name of JANET(UK) nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + #ifndef TR_TRP_H #define TR_TRP_H +#include #include +#include +#include +#include #include +#include #include -#include - -#define TRP_PORT 12310 - -typedef struct trp_req { - int msg; -} TRP_REQ; - -typedef struct trp_resp { - int msg; -} TRP_RESP; - -typedef struct trps_instance TRPS_INSTANCE; +#include -typedef int (TRPS_REQ_FUNC)(TRPS_INSTANCE *, TRP_REQ *, TRP_RESP *, void *); -typedef void (TRPS_RESP_FUNC)(TRPS_INSTANCE *, TRP_REQ *, TRP_RESP *, void *); -typedef int (trps_auth_func)(gss_name_t client_name, TR_NAME *display_name, void *cookie); +typedef struct tr_trps_events { + struct event *trps_ev; + struct tr_socket_event *listen_ev; + struct event *mq_ev; + struct event *connect_ev; + struct event *update_ev; + struct event *sweep_ev; +} TR_TRPS_EVENTS; - -/* TRP Client Instance Data */ -typedef struct trpc_instance { - DH *client_dh; /* Client's DH struct with priv and pub keys */ -} TRPC_INSTANCE; - -/* TRP Server Instance Data */ -struct trps_instance { - char *hostname; - unsigned int port; - TRPS_REQ_FUNC *req_handler; - trps_auth_func *auth_handler; - void *cookie; - struct tr_rp_client *rp_gss; /* Client matching GSS name, TBD -- FIX ME (??) */ +/* typedef'ed as TR_INSTANCE in tr.h */ +struct tr_instance { + TR_CFG_MGR *cfg_mgr; + TIDS_INSTANCE *tids; + TRPS_INSTANCE *trps; + MONS_INSTANCE *mons; + TR_CFGWATCH *cfgwatch; + TR_TRPS_EVENTS *events; }; +/* messages between threads */ +#define TR_MQMSG_MSG_RECEIVED "msg received" +#define TR_MQMSG_TRPC_DISCONNECTED "trpc disconnected" +#define TR_MQMSG_TRPC_CONNECTED "trpc connected" +#define TR_MQMSG_TRPS_DISCONNECTED "trps disconnected" +#define TR_MQMSG_TRPS_CONNECTED "trps connected" +#define TR_MQMSG_ABORT "abort" /* prototypes */ -TRPC_INSTANCE *trpc_create (TALLOC_CTX *mem_ctx); -void trpc_destroy (TRPC_INSTANCE *trpc); -int trpc_open_connection (TRPC_INSTANCE *trpc, char *server, unsigned int port, gss_ctx_id_t *gssctx); -int trpc_send_msg (TRPC_INSTANCE *trpc, int conn, gss_ctx_id_t gssctx, const char *msg_content, - int *resp_handler(), void *cookie); - -TRPS_INSTANCE *trps_create (TALLOC_CTX *mem_ctx); -void trps_destroy (TRPS_INSTANCE *trps); -int tr_trps_event_init(struct event_base *base, TRPS_INSTANCE *trps, TR_CFG_MGR *cfg_mgr, - struct tr_socket_event *trps_ev); -int trps_accept(TRPS_INSTANCE *trps, int listen); - +TRP_RC tr_trps_event_init(struct event_base *base, struct tr_instance *tr); +TRP_RC tr_add_local_routes(TRPS_INSTANCE *trps, TR_CFG *cfg); +TRP_RC tr_trpc_initiate(TRPS_INSTANCE *trps, TRP_PEER *peer, struct event *ev); +void tr_config_changed(TR_CFG *new_cfg, void *cookie); +TRP_RC tr_connect_to_peers(TRPS_INSTANCE *trps, struct event *ev); +void tr_peer_status_change(TRP_PEER *peer, void *cookie); #endif /* TR_TRP_H */