#include #include #include #include "util.h" int skipstone_system_send_client_version(skipstone_message_service *service, uint32_t flags) { skipstone_link *link = skipstone_message_service_link(service); uint8_t message[25]; ssize_t len; if ((len = skipstone_message_pack(message, sizeof(message), "CLLLCCCCQ", SKIPSTONE_SYSTEM_VERSION_RESPONSE, htobe32(SKIPSTONE_SYSTEM_PROTOCOL), htobe32(SKIPSTONE_SYSTEM_SESSION_GAMMA_RAY), htobe32(flags), 2, SKIPSTONE_SYSTEM_CLIENT_MAJOR, SKIPSTONE_SYSTEM_CLIENT_MINOR, SKIPSTONE_SYSTEM_CLIENT_BUGFIX, htobe64(SKIPSTONE_SYSTEM_PROTOCOL_CAPS))) < 0) { goto error_message_pack; } if (skipstone_link_send(link, message, SKIPSTONE_SYSTEM_ENDPOINT_PHONE_VERSION, len) < 0) { goto error_link_send; } return 0; error_link_send: error_message_pack: return -1; }