Create file link connect function handler
Prototype:
int (*link) ( resmgr_context_t *ctp,
io_link_t *msg,
RESMGR_HANDLE_T *handle,
io_link_extra_t *extra )
Classification:
ConnectDefault handler:
noneHelper functions:
iofunc_link()Client functions:
link(), linkat(), symlink(), symlinkat()Messages:
_IO_CONNECT with subtype _IO_CONNECT_LINKData structure:
struct _io_connect {
// internal fields (as described above)
uint16_t path_len;
uint8_t extra_type;
uint16_t extra_len;
char path [1];
};
struct _io_connect_link_reply {
uint32_t reserved1;
uint32_t file_type;
uint8_t eflag;
uint8_t reserved2[1];
uint16_t chroot_len;
uint32_t umask;
uint16_t nentries;
uint16_t path_len;
};
struct _io_connect_ftype_reply {
uint16_t status; /* Typically an errno */
uint16_t reserved;
uint32_t file_type; /* _FTYPE_? in sys/ftype.h */
};
typedef union {
struct _io_connect connect;
struct _io_connect_link_reply link_reply;
struct _io_connect_ftype_reply ftype_reply;
} io_link_t;
typedef union _io_link_extra {
struct _msg_info info;
void *ocb;
char path [1];
struct _io_resmgr_link_extra resmgr;
} io_link_extra_t;
Description:
Creates a new link with the name given in the path member of msg to the existing pathname specified by the path member of extra (passed to your function). For convenience, the ocb member of extra contains a pointer to the OCB for the existing pathname.Returns:
The status via the helper macro _RESMGR_STATUS().Referenced by:
resmgr_connect_funcs_t connect tablePermission checking:
The iofunc_link() function uses iofunc_check_access() with the S_ISUID, S_ISGID, and S_IREAD flags to check access on the OCB for the existing pathname.
Page updated:
