X-Git-Url: http://git.meshlink.io/?p=meshlink;a=blobdiff_plain;f=src%2Fconnection.h;h=25e122d05f0726de19da9d04f665e7b11a975b31;hp=ca934a4976412eba97d346dc259cf50f76d559a6;hb=963c5055505f2fc117cd5efa06eaa02c9b2bf85d;hpb=0d133a5ff230ad78da3208d32521d7549836187e diff --git a/src/connection.h b/src/connection.h index ca934a49..25e122d0 100644 --- a/src/connection.h +++ b/src/connection.h @@ -31,21 +31,16 @@ #define OPTION_VERSION(x) ((x) >> 24) /* Top 8 bits are for protocol minor version */ typedef struct connection_status_t { - unsigned int pinged: 1; /* sent ping */ - unsigned int active: 1; /* 1 if active.. */ - unsigned int connecting: 1; /* 1 if we are waiting for a non-blocking connect() to finish */ - unsigned int unused_termreq: 1; /* the termination of this connection was requested */ - unsigned int remove_unused: 1; /* Set to 1 if you want this connection removed */ - unsigned int timeout_unused: 1; /* 1 if gotten timeout */ - unsigned int unused_encryptout: 1; /* 1 if we can encrypt outgoing traffic */ - unsigned int unused_decryptin: 1; /* 1 if we have to decrypt incoming traffic */ - unsigned int mst: 1; /* 1 if this connection is part of a minimum spanning tree */ - unsigned int control: 1; /* 1 if this is a control connection */ - unsigned int pcap: 1; /* 1 if this is a control connection requesting packet capture */ - unsigned int log: 1; /* 1 if this is a control connection requesting log dump */ - unsigned int invitation: 1; /* 1 if this is an invitation */ - unsigned int invitation_used: 1; /* 1 if the invitation has been consumed */ - unsigned int unused: 19; + uint16_t pinged: 1; /* sent ping */ + uint16_t active: 1; /* 1 if active.. */ + uint16_t connecting: 1; /* 1 if we are waiting for a non-blocking connect() to finish */ + uint16_t unused: 1; + uint16_t control: 1; /* 1 if this is a control connection */ + uint16_t pcap: 1; /* 1 if this is a control connection requesting packet capture */ + uint16_t log: 1; /* 1 if this is a control connection requesting log dump */ + uint16_t invitation: 1; /* 1 if this is an invitation */ + uint16_t invitation_used: 1; /* 1 if the invitation has been consumed */ + uint16_t initiator: 1; /* 1 if we initiated this connection */ } connection_status_t; #include "ecdsa.h" @@ -56,36 +51,32 @@ typedef struct connection_status_t { typedef struct connection_t { char *name; /* name he claims to have */ + struct node_t *node; /* node associated with the other end */ - union sockaddr_t address; /* his real (internet) ip */ - int protocol_major; /* used protocol */ - int protocol_minor; /* used protocol */ - - int socket; /* socket used for this connection */ - uint32_t options; /* options for this connection */ connection_status_t status; /* status info */ - struct outgoing_t *outgoing; /* used to keep track of outgoing connections */ + int socket; /* socket used for this connection */ + union sockaddr_t address; /* his real (internet) ip */ struct meshlink_handle *mesh; /* the mesh this connection belongs to */ - struct node_t *node; /* node associated with the other end */ - struct edge_t *edge; /* edge associated with this connection */ - ecdsa_t *ecdsa; /* his public ECDSA key */ + // I/O sptps_t sptps; - struct submesh_t *submesh; /* his submesh handle if available in invitation file */ - - int incompression; - int outcompression; - struct buffer_t inbuf; struct buffer_t outbuf; io_t io; /* input/output event on this metadata connection */ int tcplen; /* length of incoming TCPpacket */ int allow_request; /* defined if there's only one request possible */ - time_t last_ping_time; /* last time we saw some activity from the other end or pinged them */ - splay_tree_t *config_tree; /* Pointer to configuration tree belonging to him */ + struct outgoing_t *outgoing; /* used to keep track of outgoing connections */ + + struct edge_t *edge; /* edge associated with this connection */ + struct submesh_t *submesh; /* his submesh handle if available in invitation file */ + + // Only used during authentication + ecdsa_t *ecdsa; /* his public ECDSA key */ + int protocol_major; /* used protocol */ + int protocol_minor; /* used protocol */ } connection_t; extern void init_connections(struct meshlink_handle *mesh);