xref: /dragonfly/bin/cpdup/hcproto.h (revision 2b7dbe20)
1 /*
2  * HCPROTO.H
3  *
4  * $DragonFly: src/bin/cpdup/hcproto.h,v 1.4 2008/04/16 17:38:19 dillon Exp $
5  */
6 
7 #ifndef _HCPROTO_H_
8 #define _HCPROTO_H_
9 
10 #define HCPROTO_VERSION		6
11 #define HCPROTO_VERSION_COMPAT	2
12 #define HCPROTO_VERSION_LUCC	6	/* lutimes, lchflags, lchmod */
13 
14 #define HC_HELLO	0x0001
15 
16 #define HC_STAT		0x0010
17 #define HC_LSTAT	0x0011
18 #define HC_OPENDIR	0x0012
19 #define HC_READDIR	0x0013
20 #define HC_CLOSEDIR	0x0014
21 #define HC_OPEN		0x0015
22 #define HC_CLOSE	0x0016
23 #define HC_READ		0x0017
24 #define HC_WRITE	0x0018
25 #define HC_REMOVE	0x0019
26 #define HC_MKDIR	0x001A
27 #define HC_RMDIR	0x001B
28 #define HC_CHOWN	0x001C
29 #define HC_LCHOWN	0x001D
30 #define HC_CHMOD	0x001E
31 #define HC_LINK		0x001F
32 #define HC_CHFLAGS	0x0020
33 #define HC_READLINK	0x0021
34 #define HC_UMASK	0x0022
35 #define HC_SYMLINK	0x0023
36 #define HC_RENAME	0x0024
37 #define HC_UTIMES	0x0025
38 #define HC_MKNOD	0x0026
39 #define HC_GETEUID	0x0027
40 #define HC_GETGROUPS	0x0028
41 #define HC_SCANDIR	0x0029
42 #define HC_READFILE	0x002A
43 #define HC_LUTIMES	0x002B
44 #define HC_LCHFLAGS	0x002C
45 #define HC_LCHMOD	0x002D
46 
47 #define LC_HELLOSTR	(0x0001|LCF_STRING)
48 #define LC_PATH1	(0x0010|LCF_STRING)
49 #define LC_PATH2	(0x0011|LCF_STRING)
50 #define LC_OFLAGS	(0x0012|LCF_INT32)
51 #define LC_MODE		(0x0013|LCF_INT32)
52 #define LC_BYTES	(0x0014|LCF_INT32)
53 #define LC_OWNER	(0x0015|LCF_INT32)
54 #define LC_GROUP	(0x0016|LCF_INT32)
55 #define LC_DEV		(0x0017|LCF_INT32)
56 #define LC_INO		(0x0018|LCF_INT64)
57 #define LC_NLINK	(0x0019|LCF_INT32)
58 #define LC_UID		(0x001A|LCF_INT32)
59 #define LC_GID		(0x001B|LCF_INT32)
60 #define LC_RDEV		(0x001C|LCF_INT32)
61 #define LC_ATIME	(0x001D|LCF_INT64)
62 #define LC_MTIME	(0x001E|LCF_INT64)
63 #define LC_CTIME	(0x001F|LCF_INT64)
64 #define LC_FILESIZE	(0x0020|LCF_INT64)
65 #define LC_FILEBLKS	(0x0021|LCF_INT64)
66 #define LC_FILEFLAGS	(0x0022|LCF_INT64)
67 #define LC_FSMID	(0x0023|LCF_INT64)
68 #define LC_DESCRIPTOR	(0x0024|LCF_INT32)
69 #define LC_DATA		(0x0025|LCF_BINARY)
70 #define LC_TYPE		(0x0026|LCF_INT32)
71 #define LC_BLKSIZE	(0x0027|LCF_INT32)
72 #define LC_VERSION	(0x0028|LCF_INT32)
73 #define LC_COUNT	(0x0029|LCF_INT32)
74 #define LC_ATIMENSEC	(0x002A|LCF_INT32)
75 #define LC_MTIMENSEC	(0x002B|LCF_INT32)
76 #define LC_CTIMENSEC	(0x002C|LCF_INT32)
77 
78 #define XO_NATIVEMASK	3		/* passed through directly */
79 #define XO_CREAT	0x00010000
80 #define XO_EXCL		0x00020000
81 #define XO_TRUNC	0x00040000
82 
83 #define HC_DESC_DIR	1
84 #define HC_DESC_FD	2
85 
86 #ifndef MAXNAMLEN
87 #define MAXNAMLEN	255
88 #endif
89 
90 struct HCDirEntry {
91 	char d_name[MAXNAMLEN + 1];
92 };
93 
94 int hc_connect(struct HostConf *hc, int readonly);
95 void hc_slave(int fdin, int fdout);
96 
97 int hc_hello(struct HostConf *hc);
98 int hc_stat(struct HostConf *hc, const char *path, struct stat *st);
99 int hc_lstat(struct HostConf *hc, const char *path, struct stat *st);
100 DIR *hc_opendir(struct HostConf *hc, const char *path);
101 struct HCDirEntry *hc_readdir(struct HostConf *hc, DIR *dir, struct stat **statpp);
102 int hc_closedir(struct HostConf *hc, DIR *dir);
103 int hc_open(struct HostConf *hc, const char *path, int flags, mode_t mode);
104 int hc_close(struct HostConf *hc, int fd);
105 ssize_t hc_read(struct HostConf *hc, int fd, void *buf, size_t bytes);
106 ssize_t hc_write(struct HostConf *hc, int fd, const void *buf, size_t bytes);
107 int hc_remove(struct HostConf *hc, const char *path);
108 int hc_mkdir(struct HostConf *hc, const char *path, mode_t mode);
109 int hc_rmdir(struct HostConf *hc, const char *path);
110 int hc_chown(struct HostConf *hc, const char *path, uid_t owner, gid_t group);
111 int hc_lchown(struct HostConf *hc, const char *path, uid_t owner, gid_t group);
112 int hc_chmod(struct HostConf *hc, const char *path, mode_t mode);
113 int hc_lchmod(struct HostConf *hc, const char *path, mode_t mode);
114 int hc_mknod(struct HostConf *hc, const char *path, mode_t mode, dev_t rdev);
115 int hc_link(struct HostConf *hc, const char *name1, const char *name2);
116 int hc_chflags(struct HostConf *hc, const char *path, u_long flags);
117 int hc_lchflags(struct HostConf *hc, const char *path, u_long flags);
118 int hc_readlink(struct HostConf *hc, const char *path, char *buf, int bufsiz);
119 mode_t hc_umask(struct HostConf *hc, mode_t numask);
120 int hc_symlink(struct HostConf *hc, const char *name1, const char *name2);
121 int hc_rename(struct HostConf *hc, const char *name1, const char *name2);
122 int hc_utimes(struct HostConf *hc, const char *path, const struct timeval *times);
123 int hc_lutimes(struct HostConf *hc, const char *path, const struct timeval *times);
124 uid_t hc_geteuid(struct HostConf *hc);
125 int hc_getgroups(struct HostConf *hc, gid_t **gidlist);
126 
127 #endif
128 
129