123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- #ifndef rffi_H
- #define rffi_H
- // This file is generated from src/rffi.rs using cbindgen
- #include "RffiPrefix.h"
- typedef struct RTypes_CryptoAuth2_t RTypes_CryptoAuth2_t;
- typedef struct Rffi_EventLoop Rffi_EventLoop;
- /**
- * The guard of an acquired [`GCL`].
- */
- typedef struct Rffi_Glock_guard Rffi_Glock_guard;
- /**
- * The handle returned to C, used to talk to the timer task.
- */
- typedef struct Rffi_TimerTx Rffi_TimerTx;
- typedef struct {
- uint8_t octets[16];
- uint8_t netmask[16];
- bool is_ipv6;
- } Rffi_Address;
- typedef struct {
- const char *name;
- uint8_t phys_addr[6];
- bool is_internal;
- Rffi_Address address;
- } Rffi_NetworkInterface;
- typedef void (*OnFreeFun)(void *ctx);
- extern const uintptr_t Rffi_CURRENT_PROTOCOL;
- int Rffi_CryptoAuth2_addUser_ipv6(String_t *password,
- String_t *login,
- uint8_t *ipv6,
- RTypes_CryptoAuth2_t *ca);
- int Rffi_CryptoAuth2_removeUsers(RTypes_CryptoAuth2_t *context, String_t *user);
- RTypes_StrList_t *Rffi_CryptoAuth2_getUsers(const RTypes_CryptoAuth2_t *ca, Allocator_t *alloc);
- RTypes_CryptoAuth2_t *Rffi_CryptoAuth2_new(Allocator_t *allocator,
- const uint8_t *privateKey,
- Random_t *random);
- void Rffi_CryptoAuth2_tryHandshake(RTypes_CryptoAuth2_t *ca,
- Message_t *c_msg,
- Allocator_t *alloc,
- bool requireAuth,
- RTypes_CryptoAuth2_TryHandshake_Ret_t *ret);
- RTypes_CryptoAuth2_Session_t *Rffi_CryptoAuth2_newSession(RTypes_CryptoAuth2_t *ca,
- Allocator_t *alloc,
- const uint8_t *herPublicKey,
- bool requireAuth,
- const char *name,
- bool useNoise);
- Message_t *Rffi_CryptoAuth2_noiseTick(RTypes_CryptoAuth2_Session_t *sess, Allocator_t *alloc);
- void Rffi_CryptoAuth2_setAuth(const String_t *password,
- const String_t *login,
- RTypes_CryptoAuth2_Session_t *caSession);
- void Rffi_CryptoAuth2_resetIfTimeout(RTypes_CryptoAuth2_Session_t *session);
- void Rffi_CryptoAuth2_reset(RTypes_CryptoAuth2_Session_t *caSession);
- RTypes_CryptoAuth_State_t Rffi_CryptoAuth2_getState(RTypes_CryptoAuth2_Session_t *session);
- void Rffi_CryptoAuth2_getHerPubKey(const RTypes_CryptoAuth2_Session_t *session, uint8_t *pkOut);
- void Rffi_CryptoAuth2_getHerIp6(const RTypes_CryptoAuth2_Session_t *session, uint8_t *ipOut);
- String_t *Rffi_CryptoAuth2_getName(const RTypes_CryptoAuth2_Session_t *session, Allocator_t *alloc);
- void Rffi_CryptoAuth2_getPubKey(const RTypes_CryptoAuth2_t *ca, uint8_t *pkOut);
- void Rffi_CryptoAuth2_stats(const RTypes_CryptoAuth2_Session_t *session,
- RTypes_CryptoStats_t *statsOut);
- uint32_t Rffi_CryptoAuth2_cjdnsVer(const RTypes_CryptoAuth2_Session_t *session);
- /**
- * Helper function to lock the Global C Lock, used only within libuv's core runtime (unix and windows).
- */
- Rffi_Glock_guard *Rffi_glock(void);
- /**
- * Helper function to unlock the Global C Lock, as noted above.
- */
- void Rffi_gunlock(Rffi_Glock_guard *guard);
- void Rffi_stopEventLoop(Rffi_EventLoop *event_loop);
- /**
- * Create a new EventLoop data repository.
- */
- Rffi_EventLoop *Rffi_mkEventLoop(Allocator_t *alloc, void *base);
- /**
- * Return some EventLoop's ref counter to C.
- */
- unsigned int Rffi_eventLoopRefCtr(Rffi_EventLoop *event_loop);
- /**
- * Get the full filesystem path of the current running executable.
- */
- int32_t Rffi_exepath(const char **out, Allocator_t *alloc);
- /**
- * Spawn a new child process, and monitors its result.
- */
- int32_t Rffi_spawn(const char *file,
- const char *const *args,
- int num_args,
- Allocator_t *_alloc,
- Rffi_EventLoop *event_loop,
- void (*cb)(int64_t, int));
- /**
- * Spawn a timer task for a timeout or interval, that calls some callback whenever it triggers.
- */
- void Rffi_setTimeout(Rffi_TimerTx **out_timer_tx,
- void (*cb)(void*),
- void *cb_context,
- unsigned long timeout_millis,
- bool repeat,
- Rffi_EventLoop *event_loop,
- Allocator_t *alloc);
- /**
- * Reset a timer task to change its timing.
- */
- int Rffi_resetTimeout(const Rffi_TimerTx *timer_tx, unsigned long timeout_millis);
- /**
- * Cancel a timer task.
- */
- int Rffi_clearTimeout(const Rffi_TimerTx *timer_tx);
- /**
- * Return 1 if a timer task is still running, 0 otherwise.
- */
- int Rffi_isTimeoutActive(const Rffi_TimerTx *timer_tx);
- /**
- * Cancel all timer tasks.
- */
- void Rffi_clearAllTimeouts(Rffi_EventLoop *event_loop);
- /**
- * Convert IPv4 and IPv6 addresses from binary to text form.
- */
- int32_t Rffi_inet_ntop(bool is_ip6, const void *addr, uint8_t *dst, uint32_t dst_sz);
- /**
- * Convert IPv4 and IPv6 addresses from text to binary form.
- */
- int32_t Rffi_inet_pton(bool is_ip6, const char *src, uint8_t *addr);
- /**
- * Get a list of available network interfaces for the current machine.
- */
- int32_t Rffi_interface_addresses(const Rffi_NetworkInterface **out, Allocator_t *alloc);
- /**
- * Non-monotonic nanosecond time, which has no relationship to any wall clock.
- */
- uint64_t Rffi_hrtime(void);
- /**
- * Monotonic millisecond time.
- */
- uint64_t Rffi_now_ms(void);
- RTypes_IfWrapper_t Rffi_testwrapper_create(Allocator_t *a);
- RTypes_IfWrapper_t Rffi_android_create(Allocator_t *a);
- void Rffi_panic(const char *msg);
- void Rffi_setLogger(Log_t *l);
- RTypes_Error_t *Rffi_error(const char *msg, Allocator_t *alloc);
- RTypes_Error_t *Rffi_error_fl(const char *msg, const char *file, int line, Allocator_t *alloc);
- const char *Rffi_printError(RTypes_Error_t *e, Allocator_t *alloc);
- /**
- * Create a root level allocator.
- */
- Allocator_t *Rffi_allocator_newRoot(const char *file, uintptr_t line);
- void Rffi_allocator_free(Allocator_t *a, const char *file, uintptr_t line);
- int Rffi_allocator_isFreeing(Allocator_t *a);
- Allocator_t *Rffi_allocator_child(Allocator_t *a, const char *file, uintptr_t line);
- uint8_t *Rffi_allocator_malloc(Allocator_t *a, uintptr_t size);
- uint8_t *Rffi_allocator_calloc(Allocator_t *a, uintptr_t size);
- uint8_t *Rffi_allocator_realloc(Allocator_t *a, uint8_t *ptr, uintptr_t new_size);
- void Rffi_allocator_onFree(Allocator_t *a,
- OnFreeFun fun,
- void *ctx,
- const char *file,
- uintptr_t line);
- void Rffi_allocator_adopt(Allocator_t *a, Allocator_t *to_adopt);
- #endif /* rffi_H */
|