Annotation of embedaddon/bird2/proto/rpki/transport.h, revision 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>