netatalk  4.4.0dev
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
server_child.c File Reference
#include <errno.h>
#include <pthread.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <atalk/errchk.h>
#include <atalk/logger.h>
#include <atalk/server_child.h>
#include <atalk/util.h>

Macros

#define WEXITSTATUS(stat_val)
#define WIFEXITED(stat_val)
#define WIFSTOPPED(status)
#define WIFSIGNALED(status)
#define WTERMSIG(status)
#define HASH(i)

Functions

static void hash_child (afp_child_t **htable, afp_child_t *child)
static void unhash_child (afp_child_t *child)
afp_child_tserver_child_resolve (server_child_t *childs, id_t pid)
server_child_tserver_child_alloc (int connections)
afp_child_tserver_child_add (server_child_t *children, pid_t pid, int ipc_fd)
int server_child_remove (server_child_t *children, pid_t pid)
void server_child_free (server_child_t *children)
void server_child_kill (server_child_t *children, int sig)
static int kill_child (afp_child_t *child)
int server_child_transfer_session (server_child_t *children, pid_t pid, uid_t uid, int afp_socket, uint16_t DSI_requestID)
void server_child_kill_one_by_id (server_child_t *children, pid_t pid, uid_t uid, uint32_t idlen, char *id, uint32_t boottime)
void server_child_login_done (server_child_t *children, pid_t pid, uid_t uid)
void server_reset_signal (void)

Macro Definition Documentation

◆ HASH

#define HASH ( i)
Value:
((((i) >> 8) ^ (i)) & (CHILD_HASHSIZE - 1))
#define CHILD_HASHSIZE
Definition server_child.h:16

◆ WEXITSTATUS

#define WEXITSTATUS ( stat_val)
Value:
((unsigned)(stat_val) >> 8)

◆ WIFEXITED

#define WIFEXITED ( stat_val)
Value:
(((stat_val) & 255) == 0)

◆ WIFSIGNALED

#define WIFSIGNALED ( status)
Value:
#define WIFEXITED(stat_val)
Definition cnid_metad.c:57
#define WIFSTOPPED(status)
Definition cnid_metad.c:60
static char * status
Definition pap.c:93

◆ WIFSTOPPED

#define WIFSTOPPED ( status)
Value:
(((status) & 0xff) == 0x7f)

◆ WTERMSIG

#define WTERMSIG ( status)
Value:
((status) & 0x7f)

Function Documentation

◆ hash_child()

void hash_child ( afp_child_t ** htable,
afp_child_t * child )
inlinestatic

◆ kill_child()

int kill_child ( afp_child_t * child)
static

◆ server_child_add()

afp_child_t * server_child_add ( server_child_t * children,
pid_t pid,
int ipc_fd )

add a child

Returns
pointer to struct server_child_data on success, NULL on error

◆ server_child_alloc()

server_child_t * server_child_alloc ( int connections)

◆ server_child_free()

void server_child_free ( server_child_t * children)

◆ server_child_kill()

void server_child_kill ( server_child_t * children,
int sig )

◆ server_child_kill_one_by_id()

void server_child_kill_one_by_id ( server_child_t * children,
pid_t pid,
uid_t uid,
uint32_t idlen,
char * id,
uint32_t boottime )

◆ server_child_login_done()

void server_child_login_done ( server_child_t * children,
pid_t pid,
uid_t uid )

◆ server_child_remove()

int server_child_remove ( server_child_t * children,
pid_t pid )

◆ server_child_resolve()

afp_child_t * server_child_resolve ( server_child_t * childs,
id_t pid )

◆ server_child_transfer_session()

int server_child_transfer_session ( server_child_t * children,
pid_t pid,
uid_t uid,
int afp_socket,
uint16_t DSI_requestID )

Try to find an old session and pass socket

Returns
-1 on error, 0 if no matching session was found, 1 if session was found and socket passed

◆ server_reset_signal()

void server_reset_signal ( void )

◆ unhash_child()

void unhash_child ( afp_child_t * child)
inlinestatic