/*
- protocol.h -- header for protocol.c
- Copyright (C) 1999,2000 Ivo Timmermans <itimmermans@bigfoot.com>,
- 2000 Guus Sliepen <guus@sliepen.warande.net>
+ meta.h -- header for meta.c
+ Copyright (C) 2000 Guus Sliepen <guus@sliepen.warande.net>,
+ 2000 Ivo Timmermans <itimmermans@bigfoot.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: meta.h,v 1.1.2.1 2000/09/26 14:06:04 guus Exp $
+ $Id: meta.h,v 1.1.2.2 2000/10/01 03:21:49 guus Exp $
*/
#ifndef __TINC_META_H__
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: net.h,v 1.9.4.12 2000/09/15 12:58:40 zarq Exp $
+ $Id: net.h,v 1.9.4.13 2000/10/01 03:21:49 guus Exp $
*/
#ifndef __TINC_NET_H__
struct conn_list_t;
-typedef struct subnet_t {
- ip_t netaddr;
- ip_t netmask;
- struct conn_list_t *owner;
- struct subnet_t *next;
- struct subnet_t *prev;
-} subnet_t;
-
typedef struct vpn_packet_t {
length_t len; /* the actual number of bytes in the `data' field */
unsigned char data[MAXSIZE];
typedef struct conn_list_t {
char *name; /* name of this connection */
- ip_t vpn_ip; /* his vpn ip */
- ip_t vpn_mask; /* his vpn network address */
ip_t real_ip; /* his real (internet) ip */
- char *hostname; /* the hostname of its real ip */
+ char *hostname; /* the hostname of its real ip */
short unsigned int port; /* his portnumber */
+ int protocol_version; /* used protocol */
+ int options; /* options turned on for this connection */
+
int flags; /* his flags */
int socket; /* our udp vpn socket */
int meta_socket; /* our tcp meta socket */
- int protocol_version; /* used protocol */
status_bits_t status; /* status info */
- int options; /* options turned on for this connection */
- passphrase_t *pp; /* encoded passphrase */
packet_queue_t *sq; /* pending outgoing packets */
packet_queue_t *rq; /* pending incoming packets (they have no
valid key to be decrypted with) */
enc_key_t *public_key; /* the other party's public key */
enc_key_t *datakey; /* encrypt data packets with this key */
- char *buffer; /* metadata input buffer */
+ enc_key_t *rsakey;
+
+ char *buffer; /* metadata input buffer */
int buflen; /* bytes read into buffer */
int reqlen; /* length of first request in buffer */
- int tcppacket; /* length of incoming TCP tunnelled packet */
- time_t last_ping_time; /* last time we saw some activity from the other end */
- int want_ping; /* 0 if there's no need to check for activity */
int allow_request; /* defined if there's only one request possible */
- char *chal_answer; /* answer to the given challenge */
- enc_key_t *rsakey;
- struct conn_list_t *nexthop; /* nearest meta-hop in this direction */
+
+ time_t last_ping_time; /* last time we saw some activity from the other end */
+ int want_ping; /* 0 if there's no need to check for activity. Shouldn't this go into status? (GS) */
+
+ char *mychallenge; /* challenge we received from him */
+ char *hischallenge; /* challenge we sent to him */
+
+ struct conn_list_t *nexthop; /* nearest meta-hop in this direction, will be changed to myuplink (GS) */
+ struct conn_list_t *hisuplink; /* his nearest meta-hop in our direction */
+ struct conn_list_t *myuplink; /* our nearest meta-hop in his direction */
+
+ struct subnet_t *subnets; /* Pointer to a list of subnets belonging to this connection */
+
struct conn_list_t *next; /* after all, it's a list of connections */
} conn_list_t;
--- /dev/null
+/*
+ subnet.c -- handle subnet lookups and lists
+ Copyright (C) 2000 Guus Sliepen <guus@sliepen.warande.net>,
+ 2000 Ivo Timmermans <itimmermans@bigfoot.com>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ $Id: subnet.c,v 1.1.2.1 2000/10/01 03:21:49 guus Exp $
+*/
+
+#include "config.h"
+#include "subnet.h"
+#include "net.h"
+
+/* Allocating and freeing space for subnets */
+
+subnet_t *new_subnet(void)
+{
+cp
+cp
+}
+
+void free_subnet(subnet_t *subnet)
+{
+cp
+cp
+}
+
+/* Linked list management */
+
+int subnet_add(conn_list_t *cl, subnet_t *subnet)
+{
+cp
+ subnet->next = cl->subnets->next;
+ subnet->prev = NULL;
+ subnet->next->prev = subnet
+ cl->subnets = subnet;
+cp
+ return 0;
+}
+
+int subnet_del(conn_list_t *cl, subnet_t *subnet)
+{
+cp
+ if(subnet->prev)
+ {
+ subnet->prev->next = subnet->next;
+ }
+ else
+ {
+ subnet->owner->subnets = subnet->next;
+ }
+
+ subnet->next->prev = subnet->prev;
+ free_subnet(subnet);
+cp
+ return 0;
+}
+
+/* Ascii representation of subnets */
+
+subnet_t *str2net(char *subnetstr)
+{
+cp
+cp
+}
+
+char *net2str(subnet_t *subnet)
+{
+cp
+cp
+}
+
+/* Subnet lookup routines */
--- /dev/null
+/*
+ subnet.h -- header for subnet.c
+ Copyright (C) 2000 Guus Sliepen <guus@sliepen.warande.net>,
+ 2000 Ivo Timmermans <itimmermans@bigfoot.com>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ $Id: subnet.h,v 1.1.2.1 2000/10/01 03:21:49 guus Exp $
+*/
+
+#ifndef __TINC_SUBNET_H__
+#define __TINC_SUBNET_H__
+
+enum{
+ SUBNET_MAC = 0,
+ SUBNET_IPv4,
+ SUBNET_IPv6,
+};
+
+typedef struct subnet_t {
+ struct conn_list_t *owner; /* the owner of this subnet */
+ struct conn_list_t *uplink; /* the uplink which we should send packets to for this subnet */
+
+ struct subnet_t *prev; /* previous subnet_t for this owner */
+ struct subnet_t *next; /* next subnet_t for this owner */
+
+ int type; /* subnet type (IPv4? IPv6? MAC? something even weirder?) */
+
+ /* Okay this is IPv4 specific because we are lazy and don't want to implement
+ other types just now. Type should always be SUBNET_IPv4 for now. */
+
+ ip_t netaddr;
+ ip_t netmask;
+} subnet_t;
+
+#endif /* __TINC_SUBNET_H__ */