projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Removed definitions of ipv4_t, ipv6_t, port_t
[tinc]
/
src
/
net.c
diff --git
a/src/net.c
b/src/net.c
index
1895bc1
..
320c684
100644
(file)
--- a/
src/net.c
+++ b/
src/net.c
@@
-17,7
+17,7
@@
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.
- $Id: net.c,v 1.35.4.14
3 2001/10/30 16:34:32
guus Exp $
+ $Id: net.c,v 1.35.4.14
8 2001/11/05 19:09:08
guus Exp $
*/
#include "config.h"
*/
#include "config.h"
@@
-33,6
+33,7
@@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <signal.h>
#include <sys/signal.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/signal.h>
#include <sys/time.h>
#include <sys/types.h>
@@
-250,9
+251,11
@@
int setup_listen_socket(int port)
int nfd, flags;
struct sockaddr_in a;
int option;
int nfd, flags;
struct sockaddr_in a;
int option;
- char *interface;
char *address;
ip_mask_t *ipmask;
char *address;
ip_mask_t *ipmask;
+#ifdef HAVE_LINUX
+ char *interface;
+#endif
cp
if((nfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
cp
if((nfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
@@
-439,8
+442,19
@@
cp
int setup_outgoing_connection(char *name)
{
connection_t *c;
int setup_outgoing_connection(char *name)
{
connection_t *c;
+ node_t *n;
struct hostent *h;
cp
struct hostent *h;
cp
+ n = lookup_node(name);
+
+ if(n)
+ if(n->connection)
+ {
+ if(debug_lvl >= DEBUG_CONNECTIONS)
+ syslog(LOG_INFO, _("Already connected to %s"), name);
+ return 0;
+ }
+
c = new_connection();
c->name = xstrdup(name);
c = new_connection();
c->name = xstrdup(name);
@@
-494,7
+508,6
@@
int read_rsa_public_key(connection_t *c)
FILE *fp;
char *fname;
char *key;
FILE *fp;
char *fname;
char *key;
- void *result;
cp
if(!c->rsa_key)
c->rsa_key = RSA_new();
cp
if(!c->rsa_key)
c->rsa_key = RSA_new();
@@
-520,9
+533,9
@@
cp
fname);
return -1;
}
fname);
return -1;
}
-
result
= PEM_read_RSAPublicKey(fp, &c->rsa_key, NULL, NULL);
+
c->rsa_key
= PEM_read_RSAPublicKey(fp, &c->rsa_key, NULL, NULL);
fclose(fp);
fclose(fp);
- if(!
result
)
+ if(!
c->rsa_key
)
{
syslog(LOG_ERR, _("Reading RSA public key file `%s' failed: %m"),
fname);
{
syslog(LOG_ERR, _("Reading RSA public key file `%s' failed: %m"),
fname);
@@
-536,19
+549,16
@@
cp
/* Else, check if a harnessed public key is in the config file */
/* Else, check if a harnessed public key is in the config file */
- result = NULL;
-
asprintf(&fname, "%s/hosts/%s", confbase, c->name);
if((fp = fopen(fname, "r")))
{
asprintf(&fname, "%s/hosts/%s", confbase, c->name);
if((fp = fopen(fname, "r")))
{
-
result
= PEM_read_RSAPublicKey(fp, &c->rsa_key, NULL, NULL);
+
c->rsa_key
= PEM_read_RSAPublicKey(fp, &c->rsa_key, NULL, NULL);
fclose(fp);
fclose(fp);
- free(fname);
}
free(fname);
}
free(fname);
- if(
result
)
+ if(
c->rsa_key
)
return 0;
else
{
return 0;
else
{
@@
-560,14
+570,11
@@
cp
int read_rsa_private_key(void)
{
FILE *fp;
int read_rsa_private_key(void)
{
FILE *fp;
- void *result;
char *fname, *key;
cp
char *fname, *key;
cp
- if(!myself->connection->rsa_key)
- myself->connection->rsa_key = RSA_new();
-
if(get_config_string(lookup_config(config_tree, "PrivateKey"), &key))
{
if(get_config_string(lookup_config(config_tree, "PrivateKey"), &key))
{
+ myself->connection->rsa_key = RSA_new();
BN_hex2bn(&myself->connection->rsa_key->d, key);
BN_hex2bn(&myself->connection->rsa_key->e, "FFFF");
}
BN_hex2bn(&myself->connection->rsa_key->d, key);
BN_hex2bn(&myself->connection->rsa_key->e, "FFFF");
}
@@
-579,9
+586,9
@@
cp
fname);
return -1;
}
fname);
return -1;
}
-
result = PEM_read_RSAPrivateKey(fp, &myself->connection->rsa_key
, NULL, NULL);
+
myself->connection->rsa_key = PEM_read_RSAPrivateKey(fp, NULL
, NULL, NULL);
fclose(fp);
fclose(fp);
- if(!
result
)
+ if(!
myself->connection->rsa_key
)
{
syslog(LOG_ERR, _("Reading RSA private key file `%s' failed: %m"),
fname);
{
syslog(LOG_ERR, _("Reading RSA private key file `%s' failed: %m"),
fname);
@@
-807,7
+814,9
@@
cp
terminate_connection(myself->connection, 0);
terminate_connection(myself->connection, 0);
-// destroy_trees();
+ close(udp_socket);
+ close(tcp_socket);
+
exit_edges();
exit_subnets();
exit_nodes();
exit_edges();
exit_subnets();
exit_nodes();
@@
-842,13
+851,13
@@
cp
c->address = ntohl(ci.sin_addr.s_addr);
c->hostname = hostlookup(ci.sin_addr.s_addr);
c->address = ntohl(ci.sin_addr.s_addr);
c->hostname = hostlookup(ci.sin_addr.s_addr);
- c->port = htons(ci.sin_port);
/* This one will be overwritten later */
+ c->port = htons(ci.sin_port);
c->socket = sfd;
c->last_ping_time = time(NULL);
if(debug_lvl >= DEBUG_CONNECTIONS)
syslog(LOG_NOTICE, _("Connection from %s port %d"),
c->socket = sfd;
c->last_ping_time = time(NULL);
if(debug_lvl >= DEBUG_CONNECTIONS)
syslog(LOG_NOTICE, _("Connection from %s port %d"),
- c->hostname,
htons(ci.sin_port)
);
+ c->hostname,
c->port
);
c->allow_request = ID;
cp
c->allow_request = ID;
cp
@@
-975,7
+984,8
@@
cp
/* Deactivate */
c->status.active = 0;
/* Deactivate */
c->status.active = 0;
- c->node->connection = NULL;
+ if(c->node)
+ c->node->connection = NULL;
do_prune = 1;
cp
}
do_prune = 1;
cp
}
@@
-1095,6
+1105,12
@@
cp
get_config_string(cfg, &name);
cfg = lookup_config_next(config_tree, cfg); /* Next time skip to next ConnectTo line */
get_config_string(cfg, &name);
cfg = lookup_config_next(config_tree, cfg); /* Next time skip to next ConnectTo line */
+ if(check_id(name))
+ {
+ syslog(LOG_ERR, _("Invalid name for outgoing connection in %s line %d"), cfg->file, cfg->line);
+ continue;
+ }
+
if(setup_outgoing_connection(name)) /* function returns 0 when there are no problems */
retry = 1;
if(setup_outgoing_connection(name)) /* function returns 0 when there are no problems */
retry = 1;