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.143 2001/10/30 16:34:32 guus Exp $
+ $Id: net.c,v 1.35.4.148 2001/11/05 19:09:08 guus Exp $
*/
#include "config.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>
int nfd, flags;
struct sockaddr_in a;
int option;
- char *interface;
char *address;
ip_mask_t *ipmask;
+#ifdef HAVE_LINUX
+ char *interface;
+#endif
cp
if((nfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
int setup_outgoing_connection(char *name)
{
connection_t *c;
+ node_t *n;
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);
FILE *fp;
char *fname;
char *key;
- void *result;
cp
if(!c->rsa_key)
c->rsa_key = RSA_new();
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);
- if(!result)
+ if(!c->rsa_key)
{
syslog(LOG_ERR, _("Reading RSA public key file `%s' failed: %m"),
fname);
/* 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")))
{
- result = PEM_read_RSAPublicKey(fp, &c->rsa_key, NULL, NULL);
+ c->rsa_key = PEM_read_RSAPublicKey(fp, &c->rsa_key, NULL, NULL);
fclose(fp);
- free(fname);
}
free(fname);
- if(result)
+ if(c->rsa_key)
return 0;
else
{
int read_rsa_private_key(void)
{
FILE *fp;
- void *result;
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))
{
+ myself->connection->rsa_key = RSA_new();
BN_hex2bn(&myself->connection->rsa_key->d, key);
BN_hex2bn(&myself->connection->rsa_key->e, "FFFF");
}
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);
- if(!result)
+ if(!myself->connection->rsa_key)
{
syslog(LOG_ERR, _("Reading RSA private key file `%s' failed: %m"),
fname);
terminate_connection(myself->connection, 0);
-// destroy_trees();
+ close(udp_socket);
+ close(tcp_socket);
+
exit_edges();
exit_subnets();
exit_nodes();
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->hostname, htons(ci.sin_port));
+ c->hostname, c->port);
c->allow_request = ID;
cp
/* Deactivate */
c->status.active = 0;
- c->node->connection = NULL;
+ if(c->node)
+ c->node->connection = NULL;
do_prune = 1;
cp
}
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;