diff options
author | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-01-19 15:53:46 -0700 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-01-19 15:53:46 -0700 |
commit | 104ea21b497171f5a1c4ba80d82337da3f7c2632 (patch) | |
tree | 9b5a167833b9caa4f8f829c9bc7a3711a1cd837a /lib9p/include | |
parent | a35db3be439c9a27f0763036cf3d4992ccf893eb (diff) | |
parent | 0ab9da9bc3c6cdaef00b7202ba03eff917b44c95 (diff) |
Merge branch 'lukeshu/9p-tidy'
Diffstat (limited to 'lib9p/include')
-rw-r--r-- | lib9p/include/lib9p/9p.generated.h | 156 | ||||
-rw-r--r-- | lib9p/include/lib9p/9p.h | 17 | ||||
-rw-r--r-- | lib9p/include/lib9p/srv.h | 12 |
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) |