summaryrefslogtreecommitdiff
path: root/src/req_res_codes.h
blob: 3903401866e213f65fe1fbb9b4777cf57ed7fdc5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
enum client_input {
    // ask server for its information (responds with audit_response)
    audit_server = 0x10,

    // ask server for a random set of neighbors
    // (input uint8_t neighbor_count, responds with neighbors_info)
    get_neighbors = 0x11,

    // monitor incoming packets
    // (input struct firehose_request, responds with firehose_reply)
    firehose = 0x12,

    // give a packet to the relay
    // (input struct data_packet, responds with push_packet_result)
    push_packet = 0x13,

    // get a packet from the server
    // (input hash, responds with get_packet_result)
    get_packet = 0x14,

    // register a new neighbor relay to this server
    // (input struct relay_neighbor, responds with register_neighbor_result)
    register_neighbor = 0x15,

    // query packets for a specific author
    // (input public_key, pub_sign_key, u16 count, u64 offset)
    // (responds with queried_author_packets)
    query_packets = 0x16,

    // query packets for a specific recipient
    // note: to prevent DoS, you must provide a signature by the requested author to be approved.
    // the signature needs to be from a struct shaped `public_key + pub_sign_key + u16 count + u64
    // offset`.
    // server must verify the signing key is of the recipient's pubkey and signing key by looking at
    // the packet's metadata.
    // (input public_key, input pub_sign_key, signature, u16 count, u64 offset)
    // (responds with queried_author_packets)
    query_by_recipient = 0x17,

    // query packets by in-memory id and hash.
    // this is to be used in tandem with firehose, in an effort to reduce traffic usage.
    // note that this only works for entries currently loaded into memory. (meaning the id can be
    // invalidated at any time)
    // (input hash, u64 id)
    // (responds with get_packet_result)
    query_by_id_hash = 0x18
};

enum server_reply {
    // pretty self-explanatory.
    error = 0x1,

    // type `struct relay_info`
    audit_response = 0x19,
    // type `struct relay_neighbor[ neighbor_count ]`
    neighbors_info = 0x1a,
    // type `uint64_t new_offset, struct data_packet[ count ]`
    firehose_reply = 0x1b,
    // type `bool result_code`
    push_packet_result = 0x1c,
    // type `struct data_packet`
    get_packet_result = 0x1d,
    // type `bool result_code`
    register_neighbor_result = 0x1e,
    // type `u16 count, u64 new_offset, struct data_packet[ count ]`
    queried_author_packets = 0x1f,
    // type `u16 count, u64 new_offset, struct data_packet[ count ]`
    queried_recipient_packets = 0x20,
};