12#define _ATALK_UTIL_H 1
16#include <sys/socket.h>
40#define EXITERR_CLOSED 4
43#define AFP_PANIC(why) \
45 netatalk_panic(why); \
51#define AFP_ASSERT(b) \
58#define AFP_ASSERT(b) do {} while(0)
62#define MIN(a, b) ((a) < (b) ? (a) : (b))
66#define MAX(a, b) ((a) > (b) ? (a) : (b))
69#define STRCMP(a,b,c) (strcmp(a,c) b 0)
70#define ZERO_STRUCT(a) memset(&(a), 0, sizeof(a))
71#define ZERO_STRUCTP(a) memset((a), 0, sizeof(a))
77#define hton64(x) ((uint64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \
78 (uint64_t) ((htonl(x) & 0xffffffffLL) << 32))
79#define ntoh64(x) (hton64(x))
83#define SAFE_FREE(x) do { if ((x) != NULL) {free(x); x=NULL;} } while(0)
87extern ssize_t sys_sendfile(
int __out_fd,
int __in_fd, off_t *__offset,
96#define diatolower(x) _dialowermap[(unsigned char) (x)]
97#define diatoupper(x) _diacasemap[(unsigned char) (x)]
101extern void bprint(
char *,
int);
109#define server_unlock(x) (unlink(x))
115#define mod_error() ""
127#define mod_open(a) dlopen(a, RTLD_LAZY)
128#elif defined(__OpenBSD__)
129#define mod_open(a) dlopen(a, DL_LAZY)
131#define mod_open(a) dlopen(a, RTLD_NOW)
134#define mod_symbol(a, b) dlsym(a, b)
135#define mod_error() dlerror()
136#define mod_close(a) dlclose(a)
140#define strequal(a,b) (strcmp((a),(b)) == 0)
143#define cfrombstr(b) ((char *)((b)->data))
146#define BSTRING_STRIP_SLASH(a) \
148 while (bchar((a), blength(a) - 1) == '/') \
149 bdelete((a), blength(a) - 1, 1); \
156extern int lock_reg(
int fd,
int cmd,
int type, off_t offest,
int whence,
158#define read_lock(fd, offset, whence, len) \
159 lock_reg((fd), F_SETLK, F_RDLCK, (offset), (whence), (len))
160#define write_lock(fd, offset, whence, len) \
161 lock_reg((fd), F_SETLK, F_WRLCK, (offset), (whence), (len))
162#define unlock(fd, offset, whence, len) \
163 lock_reg((fd), F_SETLK, F_UNLCK, (offset), (whence), (len))
170extern ssize_t
readt(
int socket,
void *
data,
const size_t length,
171 int setnonblocking,
int timeout);
172extern ssize_t
writet(
int socket,
void *
data,
const size_t length,
173 int setnonblocking,
int timeout);
175extern unsigned int getip_port(
const struct sockaddr *
sa);
177extern int compare_ip(
const struct sockaddr *sa1,
const struct sockaddr *sa2);
206 void *
private,
int protocol);
209extern int send_fd(
int socket,
int fd);
210extern int recv_fd(
int fd,
int nonblocking);
221extern int run_cmd(
const char *cmd,
char **cmd_argv);
225extern const char *
tmpdir(
void);
227extern int ochdir(
const char *
dir,
int options);
228extern int ostat(
const char *
path,
struct stat *
buf,
int options);
229extern int ostatat(
int dirfd,
const char *
path,
struct stat *st,
int options);
230extern int ochown(
const char *
path, uid_t owner, gid_t group,
int options);
231extern int ochmod(
char *
path, mode_t mode,
const struct stat *st,
int options);
uint32_t cnid_t
Definition adouble.h:156
static char buf[MAXPATHLEN+1]
Definition afppasswd.c:66
static struct savedt sa
Definition appl.c:32
C implementaion of bstring functions.
struct tagbstring * bstring
Definition bstrlib.h:82
static char * pidfile
Definition etc/atalkd/main.c:93
#define data
Definition hash.c:37
void freeifacelist(char **)
Definition getiface.c:141
const char * tmpdir(void)
Definition libatalk/util/unix.c:269
ssize_t readt(int socket, void *data, const size_t length, int setnonblocking, int timeout)
Definition socket.c:88
const char * getip_string(const struct sockaddr *sa)
convert an IPv4 or IPv6 address to a static string using inet_ntop
Definition socket.c:327
const char * getcwdpath(void)
get cwd in static buffer
Definition libatalk/util/unix.c:204
int parseline(int, char *)
Definition gettok.c:32
pid_t server_lock(char *, char *, int)
Definition server_lock.c:33
bstring rel_path_in_vol(const char *path, const char *volpath)
Definition util/cnid.c:71
char * stripped_slashes_basename(char *p)
Definition libatalk/util/unix.c:251
int ochmod(char *path, mode_t mode, const struct stat *st, int options)
Definition libatalk/util/unix.c:404
int ochown(const char *path, uid_t owner, gid_t group, int options)
Definition libatalk/util/unix.c:382
int compare_ip(const struct sockaddr *sa1, const struct sockaddr *sa2)
compare IP addresses for equality
Definition socket.c:460
asev_fdtype
Definition include/atalk/util.h:182
@ IPC_FD
Definition include/atalk/util.h:182
@ LISTEN_FD
Definition include/atalk/util.h:182
const int _dialowermap[]
Definition include/atalk/util.h:91
int lock_reg(int fd, int cmd, int type, off_t offest, int whence, off_t len)
lock a file with fctnl
Definition locking.c:86
char * realpath_safe(const char *path)
Definition libatalk/util/unix.c:594
int ochdir(const char *dir, int options)
symlink safe chdir replacement
Definition libatalk/util/unix.c:459
int ostat(const char *path, struct stat *buf, int options)
Definition libatalk/util/unix.c:373
int tokenize_ip_port(const char *ipurl, char **address, char **port)
Definition socket.c:491
const char * fullpathname(const char *)
Request absolute path.
Definition libatalk/util/unix.c:221
int strdiacasecmp(const char *, const char *)
Definition strdicasecmp.c:527
const int _diacasemap[]
Definition strdicasecmp.c:7
bool asev_add_fd(struct asev *sev, int fd, enum asev_fdtype fdtype, void *private, int protocol)
Definition socket.c:593
unsigned int getip_port(const struct sockaddr *sa)
return port number from struct sockaddr
Definition socket.c:373
char * strtok_quote(char *s, const char *delim)
Definition libatalk/util/unix.c:645
void * mod_symbol(void *, const char *)
struct asev * asev_init(int max)
Definition socket.c:563
int create_lockfile(const char *program, const char *pidfile)
Definition server_lock.c:138
int run_cmd(const char *cmd, char **cmd_argv)
Definition libatalk/util/unix.c:62
void * mod_open(const char *)
void apply_ip_mask(struct sockaddr *ai, int maskbits)
apply netmask to IP (v4 or v6)
Definition socket.c:397
int ostatat(int dirfd, const char *path, struct stat *st, int options)
Definition libatalk/util/unix.c:441
int send_fd(int socket, int fd)
Definition socket.c:745
const char * basename_safe(const char *path)
Definition libatalk/util/unix.c:634
int daemonize(void)
Definition libatalk/util/unix.c:121
void netatalk_panic(const char *why)
void initline(int, char *)
Definition gettok.c:21
void fault_setup(void(*fn)(void *))
Definition fault.c:157
int check_lockfile(const char *program, const char *pidfile)
Definition server_lock.c:111
void bprint(char *, int)
Definition bprint.c:17
cnid_t cnid_for_path(struct _cnid_db *cdb, const char *volpath, const char *path, cnid_t *did)
Definition util/cnid.c:170
char ** getifacelist(void)
Definition getiface.c:120
ssize_t writet(int socket, void *data, const size_t length, int setnonblocking, int timeout)
Definition socket.c:217
void randombytes(void *buf, int n)
Definition libatalk/util/unix.c:549
int recv_fd(int fd, int nonblocking)
Definition socket.c:681
bool asev_del_fd(struct asev *sev, int fd)
Definition socket.c:621
int strndiacasecmp(const char *, const char *, size_t)
Definition strdicasecmp.c:540
int atalk_aton(char *, struct at_addr *)
Definition atalk_addr.c:31
int setnonblock(int fd, int cmd)
set or unset non-blocking IO on a fd
Definition socket.c:53
cnid_t did
Definition nad_cp.c:92
static enum op type
Definition nad_cp.c:95
static unsigned char port
Definition pap.c:504
Definition include/atalk/util.h:187
int protocol
Definition include/atalk/util.h:191
enum asev_fdtype fdtype
Definition include/atalk/util.h:188
Definition include/atalk/util.h:197
int max
Definition include/atalk/util.h:200
int used
Definition include/atalk/util.h:201
struct asev_data * data
Definition include/atalk/util.h:199
struct pollfd * fdset
Definition include/atalk/util.h:198
Definition include/atalk/directory.h:62
Definition include/atalk/directory.h:97
static gcry_mpi_t p
Definition uams_dhx2_pam.c:39