iofunc_acl()
Handle an _IO_ACL message
Synopsis:
#include <sys/iofunc.h>
int iofunc_acl( resmgr_context_t *ctp,
io_acl_t *msg,
iofunc_ocb_t *ocb );
iofunc_attr_t *attr );
Arguments:
- ctp
- A pointer to a resmgr_context_t structure that the resource-manager library uses to pass context information between functions.
- msg
- A pointer to a io_acl_t structure that contains the message that the resource manager received; see below.
- ocb
- A pointer to the iofunc_ocb_t structure for the Open Control Block that was created when the client opened the resource.
- attr
- A pointer to the iofunc_attr_t structure that describes the characteristics of the device that's associated with your resource manager.
Library:
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
Description:
The iofunc_acl() helper function implements handling of _IO_ACL (access control list) messages. It's called by the default handler, iofunc_acl_default().
For more information about ACLs, see Working with Access Control Lists (ACLs) in the QNX OS Programmer's Guide.
io_acl_t structure
The io_acl_t structure holds the _IO_ACL message received by the resource manager:
struct _io_acl {
uint16_t type;
uint16_t combine_len;
uint32_t subtype;
int32_t zero[2];
/* struct _acl_header hdr; */
/* void acl_data */
};
enum _io_acl_subtypes {
_IO_ACL_GET,
_IO_ACL_SET,
_IO_ACL_CHK
};
struct _io_acl_reply {
uint32_t zero[4];
/* struct _acl_header hdr; */
/* void acl_data */
};
typedef union {
struct _io_acl i;
struct _io_acl_reply o;
} io_acl_t;
The I/O message structures are unions of an input message (coming to the resource manager) and an output or reply message (going back to the client).
The i member is a structure of type _io_acl that contains the following members:
- type
- _IO_ACL.
- combine_len
- If the message is a combine message, _IO_COMBINE_FLAG is set in this member. For more information, see the Combine Messages chapter of Writing a Resource Manager.
- subtype
- One of the following:
- _IO_ACL_GET — We're requesting (querying) the ACL. This setting is used by the getfacl utility.
- _IO_ACL_SET — We're creating, modifying, or deleting the ACL. Before doing the operation, a buffer sanity check is performed. This setting is used by the setfacl utility.
- _IO_ACL_CHK — Starts out similar to _IO_ACL_SET, but stops after performing the sanity check.
The commented-out declaration for acl_data indicates that the _io_acl structure is immediately followed by data.
The o member of the io_acl_t message is a structure of type _io_acl_reply that currently contains no useful data. The commented-out declarations for hdr and acl_data indicate that an _acl_header structure and additional data immediately follow the _io_acl_reply structure.
Returns:
- EOK
- Success.
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |