21#include <sys/socket.h>
23#ifndef __has_attribute
24 #define __has_attribute(x) 0
27#if !defined(ARANYA_ALIGNED)
28 #if __has_attribute(aligned)
29 #define ARANYA_ALIGNED(n) __attribute__((aligned(n)))
31 #error "compiler must support `aligned` attribute"
35#if !defined(ARANYA_DESIGNATED_INIT)
36 #if __has_attribute(designated_init)
37 #define ARANYA_DESIGNATED_INIT __attribute__((designated_init))
39 #define ARANYA_DESIGNATED_INIT
43#if !defined(ARANYA_MUST_USE)
44 #if __has_attribute(warn_unused_result)
45 #define ARANYA_MUST_USE __attribute__((warn_unused_result))
47 #define ARANYA_MUST_USE
51#if !defined(ARANYA_NO_RETURN)
52 #if __has_attribute(noreturn)
53 #define ARANYA_NO_RETURN __attribute__((noreturn))
55 #define ARANYA_NO_RETURN
59#if !defined(ARANYA_NON_NULL)
61 #if __has_attribute(nonnull)
62 #define ARANYA_NON_NULL __attribute__((nonnull))
64 #elif defined(__clang__)
65 #define ARANYA_NON_NULL _Nonnull
67 #define ARANYA_NON_NULL
71#if !defined(ARANYA_PACKED)
72 #if __has_attribute(packed)
73 #define ARANYA_PACKED __attribute__((packed))
80#define ARANYA_DURATION_SECONDS (1000 * ARANYA_DURATION_MILLISECONDS)
82#define ARANYA_DURATION_MILLISECONDS (1000 * ARANYA_DURATION_MICROSECONDS)
84#define ARANYA_DURATION_MICROSECONDS (1000 * ARANYA_DURATION_NANOSECONDS)
86#define ARANYA_DURATION_NANOSECONDS 1
154 ARANYA_ERROR_RUNTIME,
198 uint8_t __for_size_only[72];
210 uint8_t __for_size_only[2624];
284 uint8_t __for_size_only[64];
296 uint8_t __for_size_only[64];
332 uint8_t __for_size_only[16];
371const char *aranya_error_to_str(uint32_t err);
1175 const uint8_t *data,
1190 const uint8_t *data,
struct AranyaAfcConfig AranyaAfcConfig
Aranya Fast Channels (AFC) config.
struct AranyaClientConfig AranyaClientConfig
Aranya client configuration.
struct AranyaTeamId AranyaTeamId
Team ID.
uint64_t AranyaDuration
A type to represent a span of time.
Definition aranya-client.h:309
const char * AranyaAddr
A network socket address for an Aranya client.
Definition aranya-client.h:304
AranyaError aranya_init_logging(void)
Initializes logging.
uint32_t AranyaLabel
Label is an Aranya Fast Channel label.
Definition aranya-client.h:321
struct AranyaAfcMsgInfo AranyaAfcMsgInfo
Aranya Fast Channels (AFC) message info.
const char * AranyaNetIdentifier
A network identifier for an Aranya client.
Definition aranya-client.h:316
AranyaError aranya_init_logging_ext(struct AranyaExtError *__ext_err)
Initializes logging.
struct AranyaChannelId AranyaChannelId
Channel ID for a fast channel.
struct AranyaKeyBundle AranyaKeyBundle
Public Key bundle for a device.
struct AranyaExtError AranyaExtError
Extended error information.
AranyaError
An error code.
Definition aranya-client.h:97
@ ARANYA_ERROR_INVALID_ARGUMENT
Invalid argument.
Definition aranya-client.h:117
@ ARANYA_ERROR_AFC_SHM
AFC shared memory error.
Definition aranya-client.h:149
@ ARANYA_ERROR_DAEMON
Daemon reported error.
Definition aranya-client.h:145
@ ARANYA_ERROR_INVALID_UTF8
Invalid UTF-8.
Definition aranya-client.h:125
@ ARANYA_ERROR_TIMEOUT
Timed out.
Definition aranya-client.h:109
@ ARANYA_ERROR_BUFFER_TOO_SMALL
Buffer is too small.
Definition aranya-client.h:121
@ ARANYA_ERROR_BUG
Internal bug discovered.
Definition aranya-client.h:105
@ ARANYA_ERROR_CONNECTING
Error connecting to daemon.
Definition aranya-client.h:133
@ ARANYA_ERROR_INVALID_ADDR
Invalid Address.
Definition aranya-client.h:129
@ ARANYA_ERROR_LOG_INIT
Logging initialization failure.
Definition aranya-client.h:113
@ ARANYA_ERROR_SUCCESS
Success.
Definition aranya-client.h:101
@ ARANYA_ERROR_AFC
AFC library error.
Definition aranya-client.h:153
@ ARANYA_ERROR_AFC_ROUTER
AFC router error.
Definition aranya-client.h:137
@ ARANYA_ERROR_RPC
Could not send request to daemon.
Definition aranya-client.h:141
struct AranyaDeviceId AranyaDeviceId
Device ID.
struct sockaddr_storage AranyaSocketAddr
Network socket address.
Definition aranya-client.h:338
struct AranyaClient AranyaClient
A handle to an Aranya Client.
AranyaRole
An enum containing team roles defined in the Aranya policy.
Definition aranya-client.h:167
@ ARANYA_ROLE_ADMIN
Admin role.
Definition aranya-client.h:175
@ ARANYA_ROLE_OWNER
Owner role.
Definition aranya-client.h:171
@ ARANYA_ROLE_MEMBER
Member role.
Definition aranya-client.h:183
@ ARANYA_ROLE_OPERATOR
Operator role.
Definition aranya-client.h:179
Aranya Fast Channels (AFC) config.
Definition aranya-client.h:216
const char * shm_path
Shared memory path.
Definition aranya-client.h:220
size_t max_channels
Maximum number of channels to store in shared-memory.
Definition aranya-client.h:224
const char * addr
Address to bind AFC server to.
Definition aranya-client.h:228
Aranya Fast Channels (AFC) message info.
Definition aranya-client.h:343
AranyaSocketAddr addr
Peer's network socket address.
Definition aranya-client.h:355
struct AranyaChannelId channel
AFC channel ID.
Definition aranya-client.h:347
AranyaLabel label
AFC channel label.
Definition aranya-client.h:351
Channel ID for a fast channel.
Definition aranya-client.h:326
Aranya client configuration.
Definition aranya-client.h:234
const char * daemon_sock
Daemon API unix domain socket path.
Definition aranya-client.h:238
A handle to an Aranya Client.
Definition aranya-client.h:204
AranyaError aranya_client_cleanup_ext(struct AranyaClient *ptr, struct AranyaExtError *__ext_err)
Releases any resources associated with ptr.
AranyaError aranya_revoke_label(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaLabel label)
Revoke an AFC label from a device.
AranyaError aranya_send_data(struct AranyaClient *client, struct AranyaChannelId chan, const uint8_t *data, size_t data_len)
Send Aranya Fast Channels (AFC) data.
AranyaError aranya_poll_data_ext(struct AranyaClient *client, AranyaDuration timeout, struct AranyaExtError *__ext_err)
Poll for new Aranya Fast Channels (AFC) data.
AranyaError aranya_revoke_role_ext(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaRole role, struct AranyaExtError *__ext_err)
Revoke a role from a device.
AranyaError aranya_recv_data(struct AranyaClient *client, uint8_t *buf, size_t *buf_len, struct AranyaAfcMsgInfo *info)
Receive Aranya Fast Channels (AFC) data.
AranyaError aranya_remove_net_identifier_ext(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaNetIdentifier net_identifier, struct AranyaExtError *__ext_err)
Disassociate a network identifier from a device.
AranyaError aranya_delete_label_ext(struct AranyaClient *client, const struct AranyaTeamId *team, AranyaLabel label, struct AranyaExtError *__ext_err)
Delete an AFC label.
AranyaError aranya_add_device_to_team(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaKeyBundle *keys)
Add a device to the team with the default role.
AranyaError aranya_recv_data_ext(struct AranyaClient *client, uint8_t *buf, size_t *buf_len, struct AranyaAfcMsgInfo *info, struct AranyaExtError *__ext_err)
Receive Aranya Fast Channels (AFC) data.
AranyaError aranya_close_team(struct AranyaClient *client, const struct AranyaTeamId *team)
Close the team and stop all operations on the graph.
AranyaError aranya_create_label(struct AranyaClient *client, const struct AranyaTeamId *team, AranyaLabel label)
Create an AFC label.
AranyaError aranya_delete_channel(struct AranyaClient *client, struct AranyaChannelId chan)
Delete an Aranya Fast Channel (AFC).
AranyaError aranya_close_team_ext(struct AranyaClient *client, const struct AranyaTeamId *team, struct AranyaExtError *__ext_err)
Close the team and stop all operations on the graph.
AranyaError aranya_assign_role_ext(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaRole role, struct AranyaExtError *__ext_err)
Assign a role to a device.
AranyaError aranya_remove_team(struct AranyaClient *client, const struct AranyaTeamId *team)
Remove a team from the local device store.
AranyaError aranya_client_cleanup(struct AranyaClient *ptr)
Releases any resources associated with ptr.
AranyaError aranya_assign_net_identifier(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaNetIdentifier net_identifier)
Associate a network identifier to a device for use with AFC.
AranyaError aranya_create_team_ext(struct AranyaClient *client, struct AranyaTeamId *__output, struct AranyaExtError *__ext_err)
Create a new graph/team with the current device as the owner.
AranyaError aranya_send_data_ext(struct AranyaClient *client, struct AranyaChannelId chan, const uint8_t *data, size_t data_len, struct AranyaExtError *__ext_err)
Send Aranya Fast Channels (AFC) data.
AranyaError aranya_remove_team_ext(struct AranyaClient *client, const struct AranyaTeamId *team, struct AranyaExtError *__ext_err)
Remove a team from the local device store.
AranyaError aranya_get_key_bundle_ext(struct AranyaClient *client, struct AranyaKeyBundle *__output, struct AranyaExtError *__ext_err)
Gets the public key bundle for this device.
AranyaError aranya_add_device_to_team_ext(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaKeyBundle *keys, struct AranyaExtError *__ext_err)
Add a device to the team with the default role.
AranyaError aranya_create_team(struct AranyaClient *client, struct AranyaTeamId *__output)
Create a new graph/team with the current device as the owner.
AranyaError aranya_client_init(struct AranyaClient *client, const struct AranyaClientConfig *config)
Initializes a new client instance.
AranyaError aranya_add_team(struct AranyaClient *client, const struct AranyaTeamId *team)
Add a team to the local device store.
AranyaError aranya_get_key_bundle(struct AranyaClient *client, struct AranyaKeyBundle *__output)
Gets the public key bundle for this device.
AranyaError aranya_create_bidi_channel_ext(struct AranyaClient *client, const struct AranyaTeamId *team, AranyaNetIdentifier peer, AranyaLabel label, struct AranyaChannelId *__output, struct AranyaExtError *__ext_err)
Create an Aranya Fast Channel (AFC).
AranyaError aranya_delete_label(struct AranyaClient *client, const struct AranyaTeamId *team, AranyaLabel label)
Delete an AFC label.
AranyaError aranya_remove_net_identifier(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaNetIdentifier net_identifier)
Disassociate a network identifier from a device.
AranyaError aranya_revoke_role(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaRole role)
Revoke a role from a device.
AranyaError aranya_assign_role(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaRole role)
Assign a role to a device.
AranyaError aranya_assign_net_identifier_ext(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaNetIdentifier net_identifier, struct AranyaExtError *__ext_err)
Associate a network identifier to a device for use with AFC.
AranyaError aranya_poll_data(struct AranyaClient *client, AranyaDuration timeout)
Poll for new Aranya Fast Channels (AFC) data.
AranyaError aranya_delete_channel_ext(struct AranyaClient *client, struct AranyaChannelId chan, struct AranyaExtError *__ext_err)
Delete an Aranya Fast Channel (AFC).
AranyaError aranya_revoke_label_ext(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaLabel label, struct AranyaExtError *__ext_err)
Revoke an AFC label from a device.
AranyaError aranya_assign_label(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaLabel label)
Assign an AFC label to a device so that it can be used for an AFC channel.
AranyaError aranya_remove_device_from_team(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device)
Remove a device from the team.
AranyaError aranya_remove_device_from_team_ext(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, struct AranyaExtError *__ext_err)
Remove a device from the team.
AranyaError aranya_remove_sync_peer(struct AranyaClient *client, const struct AranyaTeamId *team, AranyaAddr addr)
Remove the peer from automatic Aranya state syncing.
AranyaError aranya_add_sync_peer_ext(struct AranyaClient *client, const struct AranyaTeamId *team, AranyaAddr addr, AranyaDuration interval, struct AranyaExtError *__ext_err)
Add the peer for automatic periodic Aranya state syncing.
AranyaError aranya_create_label_ext(struct AranyaClient *client, const struct AranyaTeamId *team, AranyaLabel label, struct AranyaExtError *__ext_err)
Create an AFC label.
AranyaError aranya_add_team_ext(struct AranyaClient *client, const struct AranyaTeamId *team, struct AranyaExtError *__ext_err)
Add a team to the local device store.
AranyaError aranya_get_device_id_ext(struct AranyaClient *client, struct AranyaDeviceId *__output, struct AranyaExtError *__ext_err)
Gets the public device ID.
AranyaError aranya_client_init_ext(struct AranyaClient *client, const struct AranyaClientConfig *config, struct AranyaExtError *__ext_err)
Initializes a new client instance.
AranyaError aranya_get_device_id(struct AranyaClient *client, struct AranyaDeviceId *__output)
Gets the public device ID.
AranyaError aranya_remove_sync_peer_ext(struct AranyaClient *client, const struct AranyaTeamId *team, AranyaAddr addr, struct AranyaExtError *__ext_err)
Remove the peer from automatic Aranya state syncing.
AranyaError aranya_create_bidi_channel(struct AranyaClient *client, const struct AranyaTeamId *team, AranyaNetIdentifier peer, AranyaLabel label, struct AranyaChannelId *__output)
Create an Aranya Fast Channel (AFC).
AranyaError aranya_assign_label_ext(struct AranyaClient *client, const struct AranyaTeamId *team, const struct AranyaDeviceId *device, AranyaLabel label, struct AranyaExtError *__ext_err)
Assign an AFC label to a device so that it can be used for an AFC channel.
AranyaError aranya_add_sync_peer(struct AranyaClient *client, const struct AranyaTeamId *team, AranyaAddr addr, AranyaDuration interval)
Add the peer for automatic periodic Aranya state syncing.
Device ID.
Definition aranya-client.h:278
Extended error information.
Definition aranya-client.h:192
AranyaError aranya_ext_error_msg_ext(const struct AranyaExtError *err, char *msg, size_t *msg_len, struct AranyaExtError *__ext_err)
Copies the extended error's message into msg.
AranyaError aranya_ext_error_init(struct AranyaExtError *out)
Initializes AranyaExtError.
AranyaError aranya_ext_error_msg(const struct AranyaExtError *err, char *msg, size_t *msg_len)
Copies the extended error's message into msg.
AranyaError aranya_ext_error_init_ext(struct AranyaExtError *out, struct AranyaExtError *__ext_err)
Initializes AranyaExtError.
AranyaError aranya_ext_error_cleanup(struct AranyaExtError *ptr)
Releases any resources associated with ptr.
AranyaError aranya_ext_error_cleanup_ext(struct AranyaExtError *ptr, struct AranyaExtError *__ext_err)
Releases any resources associated with ptr.
Public Key bundle for a device.
Definition aranya-client.h:248
size_t ident_key_len
Public identity key length.
Definition aranya-client.h:256
size_t enc_key_len
Public encryption key length.
Definition aranya-client.h:272
const uint8_t * enc_key
Public encryption key.
Definition aranya-client.h:268
size_t sign_key_len
Public signing key length.
Definition aranya-client.h:264
const uint8_t * sign_key
Public signing key.
Definition aranya-client.h:260
const uint8_t * ident_key
Public identity key.
Definition aranya-client.h:252
Team ID.
Definition aranya-client.h:290