along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
typedef struct connection_t {
char *name; /* name of this connection */
ipv4_t address; /* his real (internet) ip */
typedef struct connection_t {
char *name; /* name of this connection */
ipv4_t address; /* his real (internet) ip */
char *hostname; /* the hostname of its real ip */
int protocol_version; /* used protocol */
short unsigned int port; /* port number for UDP traffic */
long int options; /* options turned on for this connection */
char *hostname; /* the hostname of its real ip */
int protocol_version; /* used protocol */
short unsigned int port; /* port number for UDP traffic */
long int options; /* options turned on for this connection */
int socket; /* our udp vpn socket */
int meta_socket; /* our tcp meta socket */
status_bits_t status; /* status info */
int socket; /* our udp vpn socket */
int meta_socket; /* our tcp meta socket */
status_bits_t status; /* status info */
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 */
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 */
char *mychallenge; /* challenge we received from him */
char *hischallenge; /* challenge we sent to him */
char *mychallenge; /* challenge we received from him */
char *hischallenge; /* challenge we sent to him */
- struct connection_t *nexthop; /* nearest meta-hop in this direction */
+ struct connection_t *nexthop; /* nearest meta-hop from us to him */
+ struct connection_t *prevhop; /* nearest meta-hop from him to us */
+ struct connection_t *via; /* next hop for UDP packets */
extern connection_t *myself;
extern void init_connections(void);
extern connection_t *new_connection(void);
extern void free_connection(connection_t *);
extern void id_add(connection_t *);
extern connection_t *myself;
extern void init_connections(void);
extern connection_t *new_connection(void);
extern void free_connection(connection_t *);
extern void id_add(connection_t *);