Annotation of embedaddon/bird2/proto/rpki/transport.h, revision 1.1.1.1

1.1       misho       1: /*
                      2:  *     BIRD -- The Resource Public Key Infrastructure (RPKI) to Router Protocol
                      3:  *
                      4:  *     (c) 2015 CZ.NIC
                      5:  *     (c) 2015 Pavel Tvrdik <pawel.tvrdik@gmail.com>
                      6:  *
                      7:  *     This file was a part of RTRlib: http://rpki.realmv6.org/
                      8:  *
                      9:  *     Can be freely distributed and used under the terms of the GNU GPL.
                     10:  */
                     11: 
                     12: /*
                     13:  * The RPKI transport sockets implement the communication channel
                     14:  * (e.g., SSH, TCP, TCP-AO) between an RPKI server and client.
                     15:  *
                     16:  * Before using the transport socket, a tr_socket must be
                     17:  * initialized based on a protocol-dependent init function (e.g.,
                     18:  * rpki_tr_tcp_init()).
                     19:  *
                     20:  * The rpki_tr_* functions call the corresponding function pointers, which are
                     21:  * passed in the rpki_tr_sock structure, and forward the remaining arguments.
                     22:  */
                     23: 
                     24: #ifndef _BIRD_RPKI_TRANSPORT_H_
                     25: #define _BIRD_RPKI_TRANSPORT_H_
                     26: 
                     27: #include <time.h>
                     28: 
                     29: /* The return values for rpki_tr_ functions */
                     30: enum rpki_tr_rtvals {
                     31:   RPKI_TR_SUCCESS              = 0,    /* Operation was successful */
                     32:   RPKI_TR_ERROR                = -1,   /* Error occurred */
                     33:   RPKI_TR_WOULDBLOCK           = -2,   /* No data is available on the socket */
                     34:   RPKI_TR_INTR                         = -3,   /* Call was interrupted from a signal */
                     35:   RPKI_TR_CLOSED               = -4    /* Connection closed */
                     36: };
                     37: 
                     38: /* A transport socket structure */
                     39: struct rpki_tr_sock {
                     40:   sock *sk;                            /* Standard BIRD socket */
                     41:   struct rpki_cache *cache;            /* Cache server */
                     42:   int (*open_fp)(struct rpki_tr_sock *);         /* Function that establishes the socket connection */
                     43:   const char *(*ident_fp)(struct rpki_tr_sock *); /* Function that returns an identifier for the socket endpoint */
                     44:   const char *ident;                   /* Internal. Use ident_fp() hook instead of this pointer */
                     45: };
                     46: 
                     47: int rpki_tr_open(struct rpki_tr_sock *tr);
                     48: void rpki_tr_close(struct rpki_tr_sock *tr);
                     49: const char *rpki_tr_ident(struct rpki_tr_sock *tr);
                     50: 
                     51: /* Types of supported transports */
                     52: enum rpki_tr_type {
                     53:   RPKI_TR_TCP,                         /* Unprotected transport over TCP */
                     54:   RPKI_TR_SSH,                         /* Protected transport by SSHv2 connection */
                     55: };
                     56: 
                     57: /* Common configure structure for transports */
                     58: struct rpki_tr_config {
                     59:   enum rpki_tr_type type;              /* RPKI_TR_TCP or RPKI_TR_SSH */
                     60:   const void *spec;                    /* Specific transport configuration, i.e. rpki_tr_tcp_config or rpki_tr_ssh_config */
                     61: };
                     62: 
                     63: struct rpki_tr_tcp_config {
                     64:   /* No internal configuration data */
                     65: };
                     66: 
                     67: struct rpki_tr_ssh_config {
                     68:   const char *bird_private_key;                /* Filepath to the BIRD server private key */
                     69:   const char *cache_public_key;                /* Filepath to the public key of cache server, can be file known_hosts */
                     70:   const char *user;                    /* Username for SSH connection */
                     71: };
                     72: 
                     73: /* ssh_transport.c */
                     74: void rpki_tr_ssh_init(struct rpki_tr_sock *tr);
                     75: 
                     76: /* tcp_transport.c */
                     77: void rpki_tr_tcp_init(struct rpki_tr_sock *tr);
                     78: 
                     79: #endif /* _BIRD_RPKI_TRANSPORT_H_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>