along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: list.c,v 1.1.2.4 2000/11/22 22:05:36 guus Exp $
+ $Id: list.c,v 1.1.2.5 2000/11/22 22:18:03 guus Exp $
*/
#include "config.h"
Delete the element pointed to by idx from the list.
*/
-list_node_t *list_delete(list_t *list, list_node_t *idx)
+void list_delete(list_t *list, list_node_t *idx)
{
- list_node_t *res;
-
- if(!list)
- return NULL;
- if(!idx)
- return NULL;
+ if(!list || !idx)
+ return;
if(list->callbacks->delete != NULL)
if(list->callbacks->delete(idx->data))
if(idx->prev == NULL)
/* First element in list */
{
- res = idx->next;
list->head = idx->next;
}
if(idx->next == NULL)
/* Last element in list */
{
- res = NULL;
list->tail = idx->prev;
}
if(idx->prev != NULL && idx->next != NULL)
else
if(list->tail == NULL)
list->head = NULL;
+
free(idx);
- return res;
}
/*
*/
void list_forall_nodes(list_t *list, int (*function)(void *data))
{
- list_node_t *p;
+ list_node_t *p, *next;
int res;
if(!list) /* no list given */
return;
if(!list->head) /* list is empty */
return;
- for(p = list->head; p != NULL; p = p->next)
+ for(p = list->head; p != NULL; p = next)
{
+ next = p->next;
res = function(p->data);
if(res != 0)
- p = list_delete(list, p);
+ list_delete(list, p);
}
}
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: connection.c,v 1.1.2.4 2000/11/22 18:54:07 guus Exp $
+ $Id: connection.c,v 1.1.2.5 2000/11/22 22:18:03 guus Exp $
*/
#include "config.h"
connection_t *lookup_connection(ipv4_t address, short unsigned int port)
{
- connection_t cl, *p;
+ connection_t cl;
cp
cl.address = address;
cl.port = port;
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: connection.h,v 1.1.2.2 2000/11/20 22:13:03 guus Exp $
+ $Id: connection.h,v 1.1.2.3 2000/11/22 22:18:03 guus Exp $
*/
#ifndef __TINC_CONNECTION_H__
extern void init_connections(void);
extern connection_t *new_connection(void);
extern void free_connection(connection_t *);
+extern void id_add(connection_t *);
extern void connection_add(connection_t *);
extern void connection_del(connection_t *);
extern connection_t *lookup_id(char *);
+extern connection_t *lookup_connection(ipv4_t, short unsigned int);
extern void dump_connection_list(void);
extern int read_host_config(connection_t *);
extern void destroy_connection_tree(void);
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: process.c,v 1.1.2.11 2000/11/22 22:05:37 guus Exp $
+ $Id: process.c,v 1.1.2.12 2000/11/22 22:18:03 guus Exp $
*/
#include "config.h"
#include "conf.h"
#include "process.h"
+#include "subnet.h"
+#include "connection.h"
#include "system.h"
*/
int detach(void)
{
- int fd;
- pid_t pid;
cp
setup_signals();
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id: process.h,v 1.1.2.3 2000/11/20 22:13:13 guus Exp $
+ $Id: process.h,v 1.1.2.4 2000/11/22 22:18:03 guus Exp $
*/
#ifndef __TINC_PROCESS_H__
extern int execute_script(const char *);
extern void check_children(void);
extern int detach(void);
+extern int kill_other(void);
+extern void cleanup_and_exit(int);
#endif /* __TINC_PROCESS_H__ */