X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=include%2Fatalk%2Fserver_child.h;h=27ee305c7c85037058c4b04b655bc62a0a497d34;hb=3a84db87064922ad10ac10cc1d6833380e575995;hp=6f8f18a0b7933837cf03f656f8cda51c6721081e;hpb=1ae3c8a1f36c4f9d2a5272a0e700463817aaff1b;p=netatalk.git diff --git a/include/atalk/server_child.h b/include/atalk/server_child.h index 6f8f18a0..27ee305c 100644 --- a/include/atalk/server_child.h +++ b/include/atalk/server_child.h @@ -8,6 +8,7 @@ #include #include +#include /* useful stuff for child processes. most of this is hidden in * server_child.c to ease changes in implementation */ @@ -20,10 +21,13 @@ typedef struct afp_child { uid_t afpch_uid; /* user id of connected client (from the worker afpd process) */ int afpch_valid; /* 1 if we have a clientid */ int afpch_killed; /* 1 if we already tried to kill the client */ - uint32_t afpch_time; /* client boot time (from the mac client) */ + uint32_t afpch_boottime; /* client boot time (from the mac client) */ + time_t afpch_logintime; /* time the child was added */ uint32_t afpch_idlen; /* clientid len (from the Mac client) */ char *afpch_clientid; /* clientid (from the Mac client) */ int afpch_ipc_fd; /* socket for IPC bw afpd parent and childs */ + int16_t afpch_state; /* state of AFP session (eg active, sleeping, disconnected) */ + char *afpch_volumes; /* mounted volumes */ struct afp_child **afpch_prevp; struct afp_child *afpch_next; } afp_child_t; @@ -34,7 +38,6 @@ typedef struct { int servch_count; /* Current count of active AFP sessions */ int servch_nsessions; /* Number of allowed AFP sessions */ afp_child_t *servch_table[CHILD_HASHSIZE]; /* Hashtable with data of AFP sesssions */ - void (*servch_cleanup)(const pid_t); /* Cleanup handler */ } server_child_t; /* server_child.c */ @@ -42,6 +45,7 @@ extern server_child_t *server_child_alloc(int); extern afp_child_t *server_child_add(server_child_t *, pid_t, int ipc_fd); extern int server_child_remove(server_child_t *, pid_t); extern void server_child_free(server_child_t *); +extern afp_child_t *server_child_resolve(server_child_t *childs, id_t pid); extern void server_child_kill(server_child_t *, int); extern void server_child_kill_one_by_id(server_child_t *children, pid_t pid, uid_t,