- More fixing. Tinc daemons can now even create activated connections.
This commit is contained in:
		
							parent
							
								
									bb3d18d56f
								
							
						
					
					
						commit
						20301888b7
					
				
					 3 changed files with 30 additions and 17 deletions
				
			
		|  | @ -17,7 +17,7 @@ | |||
|     along with this program; if not, write to the Free Software | ||||
|     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| 
 | ||||
|     $Id: connlist.c,v 1.1.2.5 2000/10/16 16:33:29 guus Exp $ | ||||
|     $Id: connlist.c,v 1.1.2.6 2000/10/16 19:04:46 guus Exp $ | ||||
| */ | ||||
| 
 | ||||
| #include <syslog.h> | ||||
|  | @ -146,8 +146,9 @@ conn_list_t *lookup_id(char *name) | |||
|   conn_list_t *p; | ||||
| cp | ||||
|   for(p = conn_list; p != NULL; p = p->next) | ||||
|     if(strcmp(name, p->name) == 0) | ||||
|       break; | ||||
|     if(p->status.active) | ||||
|       if(strcmp(name, p->name) == 0) | ||||
|         break; | ||||
| cp | ||||
|   return p; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										33
									
								
								src/net.c
									
										
									
									
									
								
							
							
						
						
									
										33
									
								
								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. | ||||
| 
 | ||||
|     $Id: net.c,v 1.35.4.39 2000/10/16 16:33:29 guus Exp $ | ||||
|     $Id: net.c,v 1.35.4.40 2000/10/16 19:04:46 guus Exp $ | ||||
| */ | ||||
| 
 | ||||
| #include "config.h" | ||||
|  | @ -55,7 +55,7 @@ | |||
| #include "system.h" | ||||
| 
 | ||||
| int tap_fd = -1; | ||||
| 
 | ||||
| int taptype = 0; | ||||
| int total_tap_in = 0; | ||||
| int total_tap_out = 0; | ||||
| int total_socket_in = 0; | ||||
|  | @ -355,17 +355,20 @@ cp | |||
| cp | ||||
|   tap_fd = nfd; | ||||
| 
 | ||||
|   taptype = 0; | ||||
| 
 | ||||
| #ifdef HAVE_TUNTAP | ||||
|   /* Ok now check if this is an old ethertap or a new tun/tap thingie */ | ||||
|   memset(&ifr, 0, sizeof(ifr)); | ||||
| cp | ||||
|   ifr.ifr_flags = IFF_TAP; | ||||
|   ifr.ifr_flags = IFF_TAP | IFF_NO_PI; | ||||
|   if (netname) | ||||
|     strncpy(ifr.ifr_name, netname, IFNAMSIZ); | ||||
| cp | ||||
|   if (!ioctl(tap_fd, TUNSETIFF, (void *) &ifr)) | ||||
|   {  | ||||
|     syslog(LOG_INFO, _("%s is a new style tun/tap device"), tapfname); | ||||
|     taptype = 1; | ||||
|     if((cfg = get_config_val(config, tapsubnet)) == NULL) | ||||
|       syslog(LOG_INFO, _("tun/tap device will be left unconfigured")); | ||||
|     else | ||||
|  | @ -1111,10 +1114,24 @@ void handle_tap_input(void) | |||
|   int ether_type, lenin; | ||||
| cp   | ||||
|   memset(&vp, 0, sizeof(vp)); | ||||
|   if((lenin = read(tap_fd, &vp, MTU)) <= 0) | ||||
| 
 | ||||
|   if(taptype = 1) | ||||
|     { | ||||
|       syslog(LOG_ERR, _("Error while reading from tapdevice: %m")); | ||||
|       return; | ||||
|       if((lenin = read(tap_fd, vp.data, MTU)) <= 0) | ||||
|         { | ||||
|           syslog(LOG_ERR, _("Error while reading from tapdevice: %m")); | ||||
|           return; | ||||
|         } | ||||
|       vp.len = lenin; | ||||
|     } | ||||
|   else | ||||
|     { | ||||
|       if((lenin = read(tap_fd, &vp, MTU)) <= 0) | ||||
|         { | ||||
|           syslog(LOG_ERR, _("Error while reading from tapdevice: %m")); | ||||
|           return; | ||||
|         } | ||||
|       vp.len = lenin - 2; | ||||
|     } | ||||
| 
 | ||||
|   total_tap_in += lenin; | ||||
|  | @ -1137,10 +1154,6 @@ cp | |||
|   from = ntohl(*((unsigned long*)(&vp.data[26]))); | ||||
|   to = ntohl(*((unsigned long*)(&vp.data[30]))); | ||||
| 
 | ||||
|   vp.len = (length_t)lenin - 2; | ||||
| 
 | ||||
|   strip_mac_addresses(&vp); | ||||
| 
 | ||||
|   send_packet(to, &vp); | ||||
| cp | ||||
| } | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ | |||
|     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.41 2000/10/16 16:33:30 guus Exp $ | ||||
|     $Id: protocol.c,v 1.28.4.42 2000/10/16 19:04:47 guus Exp $ | ||||
| */ | ||||
| 
 | ||||
| #include "config.h" | ||||
|  | @ -157,14 +157,14 @@ int send_id(conn_list_t *cl) | |||
| cp | ||||
|   cl->allow_request = CHALLENGE; | ||||
| cp | ||||
|   return send_request(cl, "%d %s %d %lx", ID, myself->name, myself->protocol_version, myself->options); | ||||
|   return send_request(cl, "%d %s %d %lx %hd", ID, myself->name, myself->protocol_version, myself->options, myself->port); | ||||
| } | ||||
| 
 | ||||
| int id_h(conn_list_t *cl) | ||||
| { | ||||
|   conn_list_t *old; | ||||
| cp | ||||
|   if(sscanf(cl->buffer, "%*d %as %d %lx", &cl->name, &cl->protocol_version, &cl->options) != 3) | ||||
|   if(sscanf(cl->buffer, "%*d %as %d %lx %hd", &cl->name, &cl->protocol_version, &cl->options, &cl->port) != 4) | ||||
|     { | ||||
|        syslog(LOG_ERR, _("Got bad ID from %s"), cl->hostname); | ||||
|        return -1; | ||||
|  | @ -204,7 +204,6 @@ cp | |||
|   if(cl->status.outgoing) | ||||
|     { | ||||
|       if((old = lookup_id(cl->name))) | ||||
|        if(old != cl) | ||||
|         { | ||||
|           if(debug_lvl > DEBUG_CONNECTIONS) | ||||
|             syslog(LOG_NOTICE, _("Uplink %s (%s) is already in our connection list"), cl->name, cl->hostname); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue