|
- /*
- * This file is part of GNUnet
- * Copyright (C) 2013 GNUnet e.V.
- *
- * GNUnet is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Affero General Public License as published
- * by the Free Software Foundation, either version 3 of the License,
- * or (at your option) any later version.
- *
- * GNUnet is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
-
- SPDX-License-Identifier: AGPL3.0-or-later
- */
-
- /**
- * @file social/social.h
- * @brief Common type definitions for the Social service and API.
- * @author Gabor X Toth
- */
-
- #ifndef SOCIAL_H
- #define SOCIAL_H
-
- #include <gnunet/platform.h>
- #include "gnunet_social_service.h"
-
- enum MessageState
- {
- MSG_STATE_START = 0,
- MSG_STATE_HEADER = 1,
- MSG_STATE_METHOD = 2,
- MSG_STATE_MODIFIER = 3,
- MSG_STATE_MOD_CONT = 4,
- MSG_STATE_DATA = 5,
- MSG_STATE_END = 6,
- MSG_STATE_CANCEL = 7,
- MSG_STATE_ERROR = 8,
- };
-
-
- GNUNET_NETWORK_STRUCT_BEGIN
-
- /**** library -> service ****/
-
-
- struct AppConnectRequest
- {
- /**
- * Type: GNUNET_MESSAGE_TYPE_SOCIAL_APP_CONNECT
- */
- struct GNUNET_MessageHeader header;
-
- /* Followed by char *app_id */
- };
-
-
- struct AppDetachRequest
- {
- /**
- * Type: GNUNET_MESSAGE_TYPE_SOCIAL_APP_DETACH
- */
- struct GNUNET_MessageHeader header;
-
- /**
- * Public key of place.
- */
- struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
-
- /**
- * Public key of ego.
- */
- struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
-
- /**
- * Operation ID.
- */
- uint64_t op_id GNUNET_PACKED;
- };
-
-
- struct MsgProcRequest
- {
- /**
- * Type: GNUNET_MESSAGE_TYPE_SOCIAL_MSG_PROC_SET
- */
- struct GNUNET_MessageHeader header;
-
- /**
- * @see enum GNUNET_SOCIAL_MsgProcFlags
- */
- uint32_t flags;
-
- /* Followed by char *method_prefix */
- };
-
-
- struct HostEnterRequest
- {
- /**
- * Type: GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER
- */
- struct GNUNET_MessageHeader header;
-
- uint32_t policy GNUNET_PACKED;
-
- struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
-
- struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
-
- struct GNUNET_CRYPTO_EddsaPrivateKey place_key;
-
- /* Followed by char *app_id */
- };
-
-
- struct GuestEnterRequest
- {
- /**
- * Type: GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER
- */
- struct GNUNET_MessageHeader header;
-
- uint32_t relay_count GNUNET_PACKED;
-
- struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
-
- struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
-
- struct GNUNET_PeerIdentity origin;
-
- uint32_t flags GNUNET_PACKED;
-
- /* Followed by char *app_id */
- /* Followed by struct GNUNET_PeerIdentity relays[relay_count] */
- /* Followed by struct GNUNET_MessageHeader *join_msg */
- };
-
-
- /** Compatible parts of HostEnterRequest and GuestEnterRequest */
- struct PlaceEnterRequest
- {
- struct GNUNET_MessageHeader header;
-
- uint32_t reserved GNUNET_PACKED;
-
- struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
-
- struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
- };
-
-
- struct EgoPlacePublicKey
- {
- struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
- struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
- };
-
-
- struct GuestEnterByNameRequest
- {
- /**
- * Type: GNUNET_MESSAGE_TYPE_SOCIAL_GUEST_ENTER_BY_NAME
- */
- struct GNUNET_MessageHeader header;
-
- struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
-
- /* Followed by char *app_id */
- /* Followed by char *gns_name */
- /* Followed by char *password */
- /* Followed by struct GNUNET_MessageHeader *join_msg */
- };
-
-
- struct ZoneAddPlaceRequest
- {
- struct GNUNET_MessageHeader header;
-
- uint32_t relay_count GNUNET_PACKED;
-
- /**
- * Operation ID.
- */
- uint64_t op_id;
-
- /**
- * Expiration time: absolute value in us.
- */
- uint64_t expiration_time;
-
- struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
-
- struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
-
- struct GNUNET_PeerIdentity origin;
-
- /* Followed by const char *name */
- /* Followed by const char *password */
- /* Followed by struct GNUNET_PeerIdentity *relays[relay_count] */
- };
-
-
- struct ZoneAddNymRequest
- {
- struct GNUNET_MessageHeader header;
-
- /**
- * Operation ID.
- */
- uint64_t op_id;
-
- /**
- * Expiration time: absolute value in us.
- */
- uint64_t expiration_time;
-
- struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
-
- struct GNUNET_CRYPTO_EcdsaPublicKey nym_pub_key;
-
- /* Followed by const char *name */
- };
-
-
- /**** service -> library ****/
-
-
- struct AppEgoMessage
- {
- /**
- * Type: GNUNET_MESSAGE_TYPE_SOCIAL_APP_EGO
- */
- struct GNUNET_MessageHeader header;
-
- /**
- * Public key of ego.
- */
- struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
-
- /* Followed by char *name */
- };
-
-
- struct AppPlaceMessage
- {
- /**
- * Type: GNUNET_MESSAGE_TYPE_SOCIAL_APP_PLACE
- */
- struct GNUNET_MessageHeader header;
-
- struct GNUNET_CRYPTO_EcdsaPublicKey ego_pub_key;
-
- struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
-
- uint8_t is_host;
-
- uint8_t place_state;
- };
-
-
- struct HostEnterAck {
- /**
- * Type: GNUNET_MESSAGE_TYPE_SOCIAL_HOST_ENTER_ACK
- */
- struct GNUNET_MessageHeader header;
-
- /**
- * Status code for the operation.
- */
- uint32_t result_code GNUNET_PACKED;
-
- /**
- * Last message ID sent to the channel.
- */
- uint64_t max_message_id GNUNET_PACKED;
-
- /**
- * Public key of the place.
- */
- struct GNUNET_CRYPTO_EddsaPublicKey place_pub_key;
- };
-
-
- GNUNET_NETWORK_STRUCT_END
-
- #endif
|