summaryrefslogtreecommitdiff
path: root/lib9p/include
diff options
context:
space:
mode:
Diffstat (limited to 'lib9p/include')
-rw-r--r--lib9p/include/lib9p/9p.generated.h156
-rw-r--r--lib9p/include/lib9p/9p.h17
-rw-r--r--lib9p/include/lib9p/srv.h12
3 files changed, 152 insertions, 33 deletions
diff --git a/lib9p/include/lib9p/9p.generated.h b/lib9p/include/lib9p/9p.generated.h
index cf30e00..f41b3ca 100644
--- a/lib9p/include/lib9p/9p.generated.h
+++ b/lib9p/include/lib9p/9p.generated.h
@@ -45,8 +45,6 @@ enum lib9p_version {
LIB9P_VER_NUM,
};
-const char *lib9p_version_str(enum lib9p_version);
-
/* enum msg_type **************************************************************/
enum lib9p_msg_type { /* uint8_t */
@@ -146,28 +144,33 @@ enum lib9p_msg_type { /* uint8_t */
/* payload types **************************************************************/
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 2 */
typedef uint16_t lib9p_tag_t;
#define LIB9P_TAG_NOTAG ((lib9p_tag_t)UINT16_C(~0))
+/* size = 4 */
typedef uint32_t lib9p_fid_t;
#define LIB9P_FID_NOFID ((lib9p_fid_t)UINT32_C(~0))
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* min_size = 4 ; max_size = 2,147,483,651 */
struct lib9p_d {
- uint32_t len;
- char *dat;
+ uint32_t len;
+ [[gnu::nonstring]] char *dat;
};
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* min_size = 2 ; max_size = 65,537 */
struct lib9p_s {
- uint16_t len;
- char *utf8;
+ uint16_t len;
+ [[gnu::nonstring]] char *utf8;
};
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 4 */
typedef uint32_t lib9p_dm_t;
#define LIB9P_DM_DIR ((lib9p_dm_t)(1<<31))
@@ -211,6 +214,7 @@ typedef uint32_t lib9p_dm_t;
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 1 */
typedef uint8_t lib9p_qt_t;
#define LIB9P_QT_DIR ((lib9p_qt_t)(1<<7))
@@ -228,11 +232,13 @@ typedef uint8_t lib9p_qt_t;
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_u
+/* size = 4 */
typedef uint32_t lib9p_nuid_t;
#define LIB9P_NUID_NONUID ((lib9p_nuid_t)UINT32_C(~0))
#endif /* CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 1 */
typedef uint8_t lib9p_o_t;
/* unused ((lib9p_o_t)(1<<7)) */
@@ -253,6 +259,7 @@ typedef uint8_t lib9p_o_t;
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000_L
+/* size = 8 */
typedef uint64_t lib9p_getattr_t;
/* unused ((lib9p_getattr_t)(1<<63)) */
@@ -323,6 +330,7 @@ typedef uint64_t lib9p_getattr_t;
#define LIB9P_GETATTR_BASIC ((lib9p_getattr_t)(0x000007ff))
#define LIB9P_GETATTR_ALL ((lib9p_getattr_t)(0x00003fff))
+/* size = 4 */
typedef uint32_t lib9p_setattr_t;
/* unused ((lib9p_setattr_t)(1<<31)) */
@@ -359,11 +367,13 @@ typedef uint32_t lib9p_setattr_t;
#define LIB9P_SETATTR_MODE ((lib9p_setattr_t)(1<<0))
+/* size = 1 */
typedef uint8_t lib9p_lock_type_t;
#define LIB9P_LOCK_TYPE_RDLCK ((lib9p_lock_type_t)UINT8_C(0))
#define LIB9P_LOCK_TYPE_WRLCK ((lib9p_lock_type_t)UINT8_C(1))
#define LIB9P_LOCK_TYPE_UNLCK ((lib9p_lock_type_t)UINT8_C(2))
+/* size = 4 */
typedef uint32_t lib9p_lock_flags_t;
/* unused ((lib9p_lock_flags_t)(1<<31)) */
@@ -400,6 +410,7 @@ typedef uint32_t lib9p_lock_flags_t;
#define LIB9P_LOCK_FLAGS_BLOCK ((lib9p_lock_flags_t)(1<<0))
+/* size = 1 */
typedef uint8_t lib9p_lock_status_t;
#define LIB9P_LOCK_STATUS_SUCCESS ((lib9p_lock_status_t)UINT8_C(0))
#define LIB9P_LOCK_STATUS_BLOCKED ((lib9p_lock_status_t)UINT8_C(1))
@@ -407,16 +418,27 @@ typedef uint8_t lib9p_lock_status_t;
#define LIB9P_LOCK_STATUS_GRACE ((lib9p_lock_status_t)UINT8_C(3))
#endif /* CONFIG_9P_ENABLE_9P2000_L */
+#if CONFIG_9P_ENABLE_9P2000_e
+/* min_size = 4 ; max_size = 4,294,967,299 (warning: >UINT32_MAX) */
+struct lib9p_d_e {
+ uint32_t len;
+ uint8_t *dat;
+};
+
+#endif /* CONFIG_9P_ENABLE_9P2000_e */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 9 */
struct lib9p_msg_Tflush {
lib9p_tag_t tag;
uint16_t oldtag;
};
+/* size = 7 */
struct lib9p_msg_Rflush {
lib9p_tag_t tag;
};
+/* size = 11 */
struct lib9p_msg_Rwrite {
lib9p_tag_t tag;
uint32_t count;
@@ -424,29 +446,34 @@ struct lib9p_msg_Rwrite {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 7 */
struct lib9p_msg_Rclunk {
lib9p_tag_t tag;
};
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 7 */
struct lib9p_msg_Rremove {
lib9p_tag_t tag;
};
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 7 */
struct lib9p_msg_Rwstat {
lib9p_tag_t tag;
};
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000_L
+/* size = 11 */
struct lib9p_msg_Rlerror {
lib9p_tag_t tag;
uint32_t ecode;
};
+/* size = 67 */
struct lib9p_msg_Rstatfs {
lib9p_tag_t tag;
uint32_t type;
@@ -460,56 +487,68 @@ struct lib9p_msg_Rstatfs {
uint32_t namelen;
};
+/* size = 7 */
struct lib9p_msg_Rrename {
lib9p_tag_t tag;
};
+/* size = 7 */
struct lib9p_msg_Rsetattr {
lib9p_tag_t tag;
};
+/* size = 15 */
struct lib9p_msg_Rxattrwalk {
lib9p_tag_t tag;
uint64_t attr_size;
};
+/* size = 7 */
struct lib9p_msg_Rxattrcreate {
lib9p_tag_t tag;
};
+/* min_size = 11 ; max_size = 4,294,967,306 (warning: >UINT32_MAX) */
struct lib9p_msg_Rreaddir {
lib9p_tag_t tag;
uint32_t count;
uint8_t *data;
};
+/* size = 7 */
struct lib9p_msg_Rfsync {
lib9p_tag_t tag;
};
+/* size = 7 */
struct lib9p_msg_Rlink {
lib9p_tag_t tag;
};
+/* size = 7 */
struct lib9p_msg_Rrenameat {
lib9p_tag_t tag;
};
+/* size = 7 */
struct lib9p_msg_Runlinkat {
lib9p_tag_t tag;
};
#endif /* CONFIG_9P_ENABLE_9P2000_L */
#if CONFIG_9P_ENABLE_9P2000_e
+/* size = 15 */
struct lib9p_msg_Tsession {
lib9p_tag_t tag;
uint64_t key;
};
+/* size = 7 */
struct lib9p_msg_Rsession {
lib9p_tag_t tag;
};
+/* size = 11 */
struct lib9p_msg_Rswrite {
lib9p_tag_t tag;
uint32_t count;
@@ -517,6 +556,7 @@ struct lib9p_msg_Rswrite {
#endif /* CONFIG_9P_ENABLE_9P2000_e */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 23 */
struct lib9p_msg_Tread {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -524,11 +564,13 @@ struct lib9p_msg_Tread {
uint32_t count;
};
+/* size = 11 */
struct lib9p_msg_Tclunk {
lib9p_tag_t tag;
lib9p_fid_t fid;
};
+/* size = 11 */
struct lib9p_msg_Tremove {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -536,6 +578,7 @@ struct lib9p_msg_Tremove {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 11 */
struct lib9p_msg_Tstat {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -543,22 +586,26 @@ struct lib9p_msg_Tstat {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000_L
+/* size = 11 */
struct lib9p_msg_Tstatfs {
lib9p_tag_t tag;
lib9p_fid_t fid;
};
+/* size = 15 */
struct lib9p_msg_Tlopen {
lib9p_tag_t tag;
lib9p_fid_t fid;
uint32_t flags;
};
+/* size = 11 */
struct lib9p_msg_Treadlink {
lib9p_tag_t tag;
lib9p_fid_t fid;
};
+/* size = 23 */
struct lib9p_msg_Treaddir {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -566,6 +613,7 @@ struct lib9p_msg_Treaddir {
uint32_t count;
};
+/* size = 15 */
struct lib9p_msg_Tfsync {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -574,11 +622,19 @@ struct lib9p_msg_Tfsync {
#endif /* CONFIG_9P_ENABLE_9P2000_L */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* LIB9P_VER_9P2000 : min_size = 11 ; max_size = 2,147,483,658 */
+/* LIB9P_VER_9P2000_L: size = 7 */
+/* LIB9P_VER_9P2000_e: min_size = 11 ; max_size = 2,147,483,658 */
+/* LIB9P_VER_9P2000_u: min_size = 11 ; max_size = 2,147,483,658 */
struct lib9p_msg_Rread {
lib9p_tag_t tag;
struct lib9p_d data;
};
+/* LIB9P_VER_9P2000 : min_size = 23 ; max_size = 2,147,483,670 */
+/* LIB9P_VER_9P2000_L: size = 19 */
+/* LIB9P_VER_9P2000_e: min_size = 23 ; max_size = 2,147,483,670 */
+/* LIB9P_VER_9P2000_u: min_size = 23 ; max_size = 2,147,483,670 */
struct lib9p_msg_Twrite {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -586,21 +642,14 @@ struct lib9p_msg_Twrite {
struct lib9p_d data;
};
-#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
-#if CONFIG_9P_ENABLE_9P2000_e
-struct lib9p_msg_Rsread {
- lib9p_tag_t tag;
- struct lib9p_d data;
-};
-
-#endif /* CONFIG_9P_ENABLE_9P2000_e */
-#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* min_size = 13 ; max_size = 65,548 */
struct lib9p_msg_Tversion {
lib9p_tag_t tag;
uint32_t max_msg_size;
struct lib9p_s version;
};
+/* min_size = 13 ; max_size = 65,548 */
struct lib9p_msg_Rversion {
lib9p_tag_t tag;
uint32_t max_msg_size;
@@ -609,6 +658,9 @@ struct lib9p_msg_Rversion {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* LIB9P_VER_9P2000 : min_size = 9 ; max_size = 65,544 */
+/* LIB9P_VER_9P2000_e: min_size = 9 ; max_size = 65,544 */
+/* LIB9P_VER_9P2000_u: min_size = 13 ; max_size = 65,548 */
struct lib9p_msg_Rerror {
lib9p_tag_t tag;
struct lib9p_s ename;
@@ -619,6 +671,7 @@ struct lib9p_msg_Rerror {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* min_size = 17 ; max_size = 1,048,609 */
struct lib9p_msg_Twalk {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -629,6 +682,7 @@ struct lib9p_msg_Twalk {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000_L
+/* min_size = 17 ; max_size = 65,552 */
struct lib9p_msg_Trename {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -636,11 +690,13 @@ struct lib9p_msg_Trename {
struct lib9p_s name;
};
+/* min_size = 9 ; max_size = 65,544 */
struct lib9p_msg_Rreadlink {
lib9p_tag_t tag;
struct lib9p_s target;
};
+/* min_size = 17 ; max_size = 65,552 */
struct lib9p_msg_Txattrwalk {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -648,6 +704,7 @@ struct lib9p_msg_Txattrwalk {
struct lib9p_s name;
};
+/* min_size = 25 ; max_size = 65,560 */
struct lib9p_msg_Txattrcreate {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -656,6 +713,7 @@ struct lib9p_msg_Txattrcreate {
uint32_t flags;
};
+/* min_size = 34 ; max_size = 65,569 */
struct lib9p_msg_Tgetlock {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -666,6 +724,7 @@ struct lib9p_msg_Tgetlock {
struct lib9p_s client_id;
};
+/* min_size = 30 ; max_size = 65,565 */
struct lib9p_msg_Rgetlock {
lib9p_tag_t tag;
uint8_t type;
@@ -675,6 +734,7 @@ struct lib9p_msg_Rgetlock {
struct lib9p_s client_id;
};
+/* min_size = 17 ; max_size = 65,552 */
struct lib9p_msg_Tlink {
lib9p_tag_t tag;
lib9p_fid_t dfid;
@@ -682,6 +742,7 @@ struct lib9p_msg_Tlink {
struct lib9p_s name;
};
+/* min_size = 19 ; max_size = 131,089 */
struct lib9p_msg_Trenameat {
lib9p_tag_t tag;
lib9p_fid_t olddirfid;
@@ -690,6 +751,7 @@ struct lib9p_msg_Trenameat {
struct lib9p_s newname;
};
+/* min_size = 17 ; max_size = 65,552 */
struct lib9p_msg_Tunlinkat {
lib9p_tag_t tag;
lib9p_fid_t dirfd;
@@ -699,6 +761,7 @@ struct lib9p_msg_Tunlinkat {
#endif /* CONFIG_9P_ENABLE_9P2000_L */
#if CONFIG_9P_ENABLE_9P2000_e
+/* min_size = 13 ; max_size = 4,294,967,308 (warning: >UINT32_MAX) */
struct lib9p_msg_Tsread {
lib9p_tag_t tag;
uint32_t fid;
@@ -706,22 +769,19 @@ struct lib9p_msg_Tsread {
struct lib9p_s *wname;
};
-struct lib9p_msg_Tswrite {
- lib9p_tag_t tag;
- uint32_t fid;
- uint16_t nwname;
- struct lib9p_s *wname;
- struct lib9p_d data;
-};
-
#endif /* CONFIG_9P_ENABLE_9P2000_e */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 13 */
struct lib9p_qid {
lib9p_qt_t type;
uint32_t vers;
uint64_t path;
};
+/* LIB9P_VER_9P2000 : min_size = 15 ; max_size = 131,085 */
+/* LIB9P_VER_9P2000_L: min_size = 19 ; max_size = 131,089 */
+/* LIB9P_VER_9P2000_e: min_size = 15 ; max_size = 131,085 */
+/* LIB9P_VER_9P2000_u: min_size = 19 ; max_size = 131,089 */
struct lib9p_msg_Tauth {
lib9p_tag_t tag;
lib9p_fid_t afid;
@@ -732,6 +792,10 @@ struct lib9p_msg_Tauth {
#endif /* CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_u */
};
+/* LIB9P_VER_9P2000 : min_size = 19 ; max_size = 131,089 */
+/* LIB9P_VER_9P2000_L: min_size = 23 ; max_size = 131,093 */
+/* LIB9P_VER_9P2000_e: min_size = 19 ; max_size = 131,089 */
+/* LIB9P_VER_9P2000_u: min_size = 23 ; max_size = 131,093 */
struct lib9p_msg_Tattach {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -745,6 +809,7 @@ struct lib9p_msg_Tattach {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000_L
+/* min_size = 25 ; max_size = 65,560 */
struct lib9p_msg_Tlcreate {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -754,6 +819,7 @@ struct lib9p_msg_Tlcreate {
lib9p_nuid_t gid;
};
+/* min_size = 19 ; max_size = 131,089 */
struct lib9p_msg_Tsymlink {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -762,6 +828,7 @@ struct lib9p_msg_Tsymlink {
lib9p_nuid_t gid;
};
+/* min_size = 29 ; max_size = 65,564 */
struct lib9p_msg_Tmknod {
lib9p_tag_t tag;
lib9p_fid_t dfid;
@@ -774,12 +841,14 @@ struct lib9p_msg_Tmknod {
#endif /* CONFIG_9P_ENABLE_9P2000_L */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 12 */
struct lib9p_msg_Topen {
lib9p_tag_t tag;
lib9p_fid_t fid;
lib9p_o_t mode;
};
+/* min_size = 18 ; max_size = 65,553 */
struct lib9p_msg_Tcreate {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -790,12 +859,14 @@ struct lib9p_msg_Tcreate {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000_L
+/* size = 19 */
struct lib9p_msg_Tgetattr {
lib9p_tag_t tag;
lib9p_fid_t fid;
lib9p_getattr_t request_mask;
};
+/* size = 67 */
struct lib9p_msg_Tsetattr {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -810,6 +881,7 @@ struct lib9p_msg_Tsetattr {
uint64_t mtime_nsec;
};
+/* min_size = 38 ; max_size = 65,573 */
struct lib9p_msg_Tlock {
lib9p_tag_t tag;
lib9p_fid_t fid;
@@ -821,13 +893,34 @@ struct lib9p_msg_Tlock {
struct lib9p_s client_id;
};
+/* size = 8 */
struct lib9p_msg_Rlock {
lib9p_tag_t tag;
lib9p_lock_status_t status;
};
#endif /* CONFIG_9P_ENABLE_9P2000_L */
+#if CONFIG_9P_ENABLE_9P2000_e
+/* min_size = 11 ; max_size = 4,294,967,306 (warning: >UINT32_MAX) */
+struct lib9p_msg_Rsread {
+ lib9p_tag_t tag;
+ struct lib9p_d_e data;
+};
+
+/* min_size = 17 ; max_size = 8,589,934,607 (warning: >UINT32_MAX) */
+struct lib9p_msg_Tswrite {
+ lib9p_tag_t tag;
+ uint32_t fid;
+ uint16_t nwname;
+ struct lib9p_s *wname;
+ struct lib9p_d_e data;
+};
+
+#endif /* CONFIG_9P_ENABLE_9P2000_e */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* LIB9P_VER_9P2000 : min_size = 49 ; max_size = 262,189 */
+/* LIB9P_VER_9P2000_e: min_size = 49 ; max_size = 262,189 */
+/* LIB9P_VER_9P2000_u: min_size = 63 ; max_size = 327,738 */
struct lib9p_stat {
uint16_t kern_type;
uint32_t kern_dev;
@@ -850,16 +943,19 @@ struct lib9p_stat {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 20 */
struct lib9p_msg_Rauth {
lib9p_tag_t tag;
struct lib9p_qid aqid;
};
+/* size = 20 */
struct lib9p_msg_Rattach {
lib9p_tag_t tag;
struct lib9p_qid qid;
};
+/* min_size = 9 ; max_size = 217 */
struct lib9p_msg_Rwalk {
lib9p_tag_t tag;
uint16_t nwqid;
@@ -868,12 +964,14 @@ struct lib9p_msg_Rwalk {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_L || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* size = 24 */
struct lib9p_msg_Ropen {
lib9p_tag_t tag;
struct lib9p_qid qid;
uint32_t iounit;
};
+/* size = 24 */
struct lib9p_msg_Rcreate {
lib9p_tag_t tag;
struct lib9p_qid qid;
@@ -882,28 +980,33 @@ struct lib9p_msg_Rcreate {
#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */
#if CONFIG_9P_ENABLE_9P2000_L
+/* size = 24 */
struct lib9p_msg_Rlopen {
lib9p_tag_t tag;
struct lib9p_qid qid;
uint32_t iounit;
};
+/* size = 24 */
struct lib9p_msg_Rlcreate {
lib9p_tag_t tag;
struct lib9p_qid qid;
uint32_t iounit;
};
+/* size = 20 */
struct lib9p_msg_Rsymlink {
lib9p_tag_t tag;
struct lib9p_qid qid;
};
+/* size = 20 */
struct lib9p_msg_Rmknod {
lib9p_tag_t tag;
struct lib9p_qid qid;
};
+/* size = 160 */
struct lib9p_msg_Rgetattr {
lib9p_tag_t tag;
uint64_t valid;
@@ -928,6 +1031,7 @@ struct lib9p_msg_Rgetattr {
uint64_t data_version;
};
+/* size = 20 */
struct lib9p_msg_Tmkdir {
lib9p_tag_t tag;
struct lib9p_qid qid;
@@ -935,11 +1039,17 @@ struct lib9p_msg_Tmkdir {
#endif /* CONFIG_9P_ENABLE_9P2000_L */
#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u
+/* LIB9P_VER_9P2000 : min_size = 58 ; max_size = 262,198 */
+/* LIB9P_VER_9P2000_e: min_size = 58 ; max_size = 262,198 */
+/* LIB9P_VER_9P2000_u: min_size = 72 ; max_size = 327,747 */
struct lib9p_msg_Rstat {
lib9p_tag_t tag;
struct lib9p_stat stat;
};
+/* LIB9P_VER_9P2000 : min_size = 62 ; max_size = 262,202 */
+/* LIB9P_VER_9P2000_e: min_size = 62 ; max_size = 262,202 */
+/* LIB9P_VER_9P2000_u: min_size = 76 ; max_size = 327,751 */
struct lib9p_msg_Twstat {
lib9p_tag_t tag;
lib9p_fid_t fid;
diff --git a/lib9p/include/lib9p/9p.h b/lib9p/include/lib9p/9p.h
index 21c10e0..d4764a2 100644
--- a/lib9p/include/lib9p/9p.h
+++ b/lib9p/include/lib9p/9p.h
@@ -19,6 +19,17 @@
#error config.h must define CONFIG_9P_MAX_ERR_SIZE
#endif
+/* strings ********************************************************************/
+
+const char *lib9p_version_str(enum lib9p_version);
+const char *lib9p_msgtype_str(enum lib9p_version, enum lib9p_msg_type);
+
+struct lib9p_s lib9p_str(char *s);
+struct lib9p_s lib9p_strn(char *s, size_t maxlen);
+struct lib9p_s lib9p_str_slice(struct lib9p_s s, uint16_t beg, uint16_t end);
+#define lib9p_str_sliceleft(s, beg) lib9p_str_slice(s, beg, (s).len)
+bool lib9p_str_eq(struct lib9p_s a, struct lib9p_s b);
+
/* ctx ************************************************************************/
struct lib9p_ctx {
@@ -30,7 +41,7 @@ struct lib9p_ctx {
#ifdef CONFIG_9P_ENABLE_9P2000_u
uint32_t err_num;
#endif
- char err_msg[CONFIG_9P_MAX_ERR_SIZE];
+ [[gnu::nonstring]] char err_msg[CONFIG_9P_MAX_ERR_SIZE];
};
void lib9p_ctx_clear_error(struct lib9p_ctx *ctx);
@@ -42,8 +53,6 @@ int lib9p_error(struct lib9p_ctx *ctx, uint32_t linux_errno, char const *msg);
/** Write a printf-style error into ctx, return -1. */
int lib9p_errorf(struct lib9p_ctx *ctx, uint32_t linux_errno, char const *fmt, ...);
-const char *lib9p_msg_type_str(struct lib9p_ctx *, enum lib9p_msg_type);
-
/* main T-message functions ***************************************************/
/**
@@ -52,7 +61,7 @@ const char *lib9p_msg_type_str(struct lib9p_ctx *, enum lib9p_msg_type);
*
* Return how much space the message will take when unmarshaled. This
* number may be larger than net_bytes due to (1) struct padding, (2)
- * nul-terminator bytes for strings.
+ * array pointers.
*
* Emits an error (return -1, set ctx->err_num and ctx->err_msg) if
* either the message type is unknown, or if net_bytes is too short
diff --git a/lib9p/include/lib9p/srv.h b/lib9p/include/lib9p/srv.h
index eb0e4f4..55cf5db 100644
--- a/lib9p/include/lib9p/srv.h
+++ b/lib9p/include/lib9p/srv.h
@@ -1,6 +1,6 @@
/* lib9p/srv.h - 9P server
*
- * Copyright (C) 2024 Luke T. Shumaker <lukeshu@lukeshu.com>
+ * Copyright (C) 2024-2025 Luke T. Shumaker <lukeshu@lukeshu.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
@@ -22,7 +22,7 @@ CR_CHAN_DECLARE(_lib9p_srv_flushch, bool)
struct lib9p_srv_ctx {
struct lib9p_ctx basectx;
uint32_t uid;
- char *uname;
+ struct lib9p_s uname;
BEGIN_PRIVATE(LIB9P_SRV_H)
_lib9p_srv_flushch_t _flushch;
@@ -67,9 +67,9 @@ struct lib9p_srv_file_vtable {
/* directories - base */
implements_lib9p_srv_file *(*dopen )(implements_lib9p_srv_file *, struct lib9p_srv_ctx *,
- char *childname);
+ struct lib9p_s childname);
implements_lib9p_srv_file *(*dcreate)(implements_lib9p_srv_file *, struct lib9p_srv_ctx *,
- char *childname,
+ struct lib9p_s childname,
lib9p_dm_t perm, lib9p_o_t flags);
/* directories - once opened */
@@ -95,8 +95,8 @@ CR_RPC_DECLARE(_lib9p_srv_reqch, struct _lib9p_srv_req *, bool)
struct lib9p_srv {
/* Things you provide */
- void /*TODO*/ (*auth )(struct lib9p_srv_ctx *, char *treename); /* optional */
- implements_lib9p_srv_file *(*rootdir)(struct lib9p_srv_ctx *, char *treename);
+ void /*TODO*/ (*auth )(struct lib9p_srv_ctx *, struct lib9p_s treename); /* optional */
+ implements_lib9p_srv_file *(*rootdir)(struct lib9p_srv_ctx *, struct lib9p_s treename);
/* For internal use */
BEGIN_PRIVATE(LIB9P_SRV_H)