X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fvertex.h;h=b967a2ed30763d3f96b52d1252eb3e04041dae7b;hp=7425756d16f56bf51b56a9e600f9974b548b3544;hb=ac066bb057dcb187bf91670793ba5e6ca456e052;hpb=f22b9417510cca258785f8958c8dfed90e26d81b diff --git a/src/vertex.h b/src/vertex.h index 7425756d..b967a2ed 100644 --- a/src/vertex.h +++ b/src/vertex.h @@ -17,28 +17,46 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: vertex.h,v 1.1.2.2 2001/10/09 19:37:10 guus Exp $ + $Id: vertex.h,v 1.1.2.5 2001/10/27 12:13:17 guus Exp $ */ -typedef struct vertex_t { - struct halfconnection_t *from; - struct halfconnection_t *to; - long int options; /* options turned on for this connection */ -} vertex_t; +#ifndef __TINC_VERTEX_H__ +#define __TINC_VERTEX_H__ + +#include + +#include "node.h" +#include "connection.h" + +/* I don't know if halfconnection_t is useful... */ typedef struct halfconnection_t { - struct node_t *node; + struct node_t *node; /* node associated with this end of the connection */ ipv4_t address; /* real (internet) ip on this end of the meta connection */ short unsigned int port; /* port number of this end of the meta connection */ char *hostname; /* the hostname of real ip */ - - /* Following bits only used when this is a connection with ourself. */ - - RSA *rsa_key; /* RSA key used for authentication */ - EVP_CIPHER *cipher; /* Cipher type for meta protocol */ - EVP_CIPHER_CTX *ctx; /* Cipher state for meta protocol */ - char *key; /* Cipher key + iv */ - int keylength; /* Cipher keylength */ - char *challenge; /* Challenge sent to this end */ } halfconnection_t; + +typedef struct vertex_t { + struct node_t *from; + struct node_t *to; + + long int options; /* options turned on for this connection */ + int metric; /* weight of this vertex */ + + struct connection_t *connection; /* connection associated with this vertex, if available */ +} vertex_t; + +extern avl_tree_t *vertex_tree; /* Tree with all known vertices (replaces active_tree) */ + +extern void init_vertices(void); +extern void exit_vertices(void); +extern vertex_t *new_vertex(void); +extern void free_vertex(vertex_t *); +extern void vertex_add(vertex_t *); +extern void vertex_del(vertex_t *); +extern vertex_t *lookup_vertex(struct node_t *, struct node_t *); +extern void dump_vertices(void); + +#endif /* __TINC_VERTEX_H__ */