mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2025-01-23 09:21:53 +00:00
4cf229a0b5
Add the RPKI protocol (RFC 6810) using the RTRLib (http://rpki.realmv6.org/) that is integrated inside the BIRD's code. Implemeted transports are: - unprotected transport over TCP - secure transport over SSHv2 The code should work properly with one cache server per protocol. A compilation has to be hacked with: $ ./configure LIBS='-lssh' ... Example configuration of bird.conf: ... roa table roatable; protocol rpki { roa table roatable; cache "rpki-validator.realmv6.org"; } protocol rpki { roa table roatable; cache "localhost" { port 2222; ssh encryption { bird private key "/home/birdgeek/.ssh/id_rsa"; cache public key "/home/birdgeek/.ssh/known_hosts"; user "birdgeek"; }; }; } ... TODO list: - load libssh2 using dlopen - support more cache servers per protocol
56 lines
1.5 KiB
C
56 lines
1.5 KiB
C
/*
|
|
* BIRD -- The Resource Public Key Infrastructure (RPKI) to Router Protocol
|
|
*
|
|
* (c) 2015 CZ.NIC
|
|
*
|
|
* This file was part of RTRlib: http://rpki.realmv6.org/
|
|
*
|
|
* Can be freely distributed and used under the terms of the GNU GPL.
|
|
*/
|
|
|
|
/**
|
|
* @defgroup mod_tcp_transport_h TCP transport socket
|
|
* @ingroup mod_transport_h
|
|
* @brief An implementation of the TCP protocol for the RTR transport.
|
|
* See @ref mod_transport_h "transport interface" for a list of supported operations.
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
#ifndef RTR_TCP_TRANSPORT_H
|
|
#define RTR_TCP_TRANSPORT_H
|
|
#include "transport.h"
|
|
#include "nest/bird.h"
|
|
#include "lib/ip.h"
|
|
|
|
/**
|
|
* @brief A tr_tcp_config struct holds configuration for a TCP connection.
|
|
* @param host Hostname or IP address to connect to.
|
|
* @param port Port to connect to.
|
|
* @param bindaddr Hostname or IP address to connect from. NULL for
|
|
* determination by OS.
|
|
* to use the source address of the system's default route to the server
|
|
*/
|
|
struct tr_tcp_config {
|
|
ip_addr ip; char *host; /* at least one of @ip or @host must be defined */
|
|
uint port;
|
|
char *bindaddr; /* TODO: NEED THIS? */
|
|
};
|
|
|
|
struct tr_tcp_socket {
|
|
struct rpki_cache *cache;
|
|
struct tr_tcp_config config;
|
|
char *ident;
|
|
};
|
|
|
|
/**
|
|
* @brief Initializes the tr_socket struct for a TCP connection.
|
|
* @param[in] config TCP configuration for the connection.
|
|
* @param[out] socket Initialized transport socket.
|
|
* @returns TR_SUCCESS On success.
|
|
* @returns TR_ERROR On error.
|
|
*/
|
|
int tr_tcp_init(struct rpki_cache *cache);
|
|
#endif
|
|
/* @} */
|