along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: conf.c,v 1.9.4.2 2000/06/27 15:08:57 guus Exp $
+ $Id: conf.c,v 1.9.4.3 2000/06/27 20:10:47 guus Exp $
*/
config_t *
add_config_val(config_t **cfg, int argtype, char *val)
{
- config_t *p;
+ config_t *p, *r;
char *q;
p = (config_t*)xmalloc(sizeof(*p));
if(p->data.val)
{
- p->next = *cfg;
- *cfg = p;
+ if(*cfg)
+ {
+ r = *cfg;
+ while(r->next)
+ r = r->next;
+ r->next = p;
+ }
+ else
+ *cfg = p;
+ p->next = NULL;
return p;
}
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: conf.h,v 1.6.4.2 2000/06/27 15:08:57 guus Exp $
+ $Id: conf.h,v 1.6.4.3 2000/06/27 20:10:47 guus Exp $
*/
#ifndef __TINC_CONF_H__
extern config_t *config;
extern int debug_lvl;
extern int timeout;
+extern int upstreamindex;
extern config_t *add_config_val(config_t **, int, char *);
extern int read_config_file(const char *);
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.9 2000/06/27 15:08:58 guus Exp $
+ $Id: net.c,v 1.35.4.10 2000/06/27 20:10:48 guus Exp $
*/
#include "config.h"
int total_socket_in = 0;
int total_socket_out = 0;
+int upstreamindex = 0;
static int seconds_till_retry;
/* The global list of existing connections */
struct sockaddr_in a;
config_t const *cfg;
cp
+ if(debug_lvl > 0)
+ syslog(LOG_INFO, _("Trying to connect to %s"), cl->hostname);
+
if((cfg = get_config_val(upstreamport)) == NULL)
cl->port = 655;
else
sigalrm_handler(int a)
{
config_t const *cfg;
- int index = 1;
cp
- cfg = get_config_val(upstreamip);
+ cfg = get_next_config_val(upstreamip, upstreamindex++);
while(cfg)
{
signal(SIGALRM, SIG_IGN);
return;
}
- cfg = get_next_config_val(upstreamip, index++); /* Or else we try the next ConnectTo line */
+ cfg = get_next_config_val(upstreamip, upstreamindex++); /* Or else we try the next ConnectTo line */
}
signal(SIGALRM, sigalrm_handler);
+ upstreamindex = 0;
seconds_till_retry += 5;
if(seconds_till_retry>300) /* Don't wait more than 5 minutes. */
seconds_till_retry = 300;
int setup_network_connections(void)
{
config_t const *cfg;
- int index = 1;
cp
if((cfg = get_config_val(pingtimeout)) == NULL)
timeout = 5;
if(setup_myself() < 0)
return -1;
- if((cfg = get_config_val(upstreamip)) == NULL)
+ if((cfg = get_next_config_val(upstreamip, upstreamindex++)) == NULL)
/* No upstream IP given, we're listen only. */
return 0;
{
if(!setup_outgoing_connection(cfg->data.ip->ip)) /* function returns 0 when there are no problems */
return 0;
- cfg = get_next_config_val(upstreamip, index++); /* Or else we try the next ConnectTo line */
+ cfg = get_next_config_val(upstreamip, upstreamindex++); /* Or else we try the next ConnectTo line */
}
signal(SIGALRM, sigalrm_handler);
+ upstreamindex = 0;
seconds_till_retry = 300;
alarm(seconds_till_retry);
syslog(LOG_NOTICE, _("Trying to re-establish outgoing connection in 5 minutes"));
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: protocol.c,v 1.28.4.10 2000/06/27 12:58:04 guus Exp $
+ $Id: protocol.c,v 1.28.4.11 2000/06/27 20:10:48 guus Exp $
*/
#include "config.h"
{
syslog(LOG_ERR, _("Got bad BASIC_INFO from %s"),
cl->hostname);
- if(cl->status.outgoing)
- {
- /* If we get here, it means that our uplink uses the wrong protocol.
- If we don't do anything, we will reconnect every 5 seconds. Pretty dumb.
- So we disable the outgoing flag, so that we won't reconnect anymore.
- This still allows other tinc daemons to connect to us.
- */
- syslog(LOG_ERR, _("Warning: disabling uplink!"));
- cl->status.outgoing = 0;
- }
return -1;
}
cl->status.active = 1;
syslog(LOG_NOTICE, _("Connection with " IP_ADDR_S " (%s) activated"),
IP_ADDR_V(cl->vpn_ip), cl->hostname);
+ upstreamindex = 0;
cp
return 0;
}