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
|
/*
* Copyright 2005-2010, Hugo Santos <hugo@fivebits.net>
* Distributed under the terms of the MIT License.
*/
#ifndef _protocol_h_
#define _protocol_h_
#include "address.h"
#define PROTO_VER 1
// Protocol TLV types
enum {
T_BEAC_NAME = 'n',
T_ADMIN_CONTACT = 'a',
T_SOURCE_INFO_IPv4 = 'i',
T_SOURCE_INFO = 'I',
T_ASM_STATS = 'A',
T_SSM_STATS = 'S',
T_SOURCE_FLAGS = 'F',
T_WEBSITE_GENERIC = 'G',
T_WEBSITE_MATRIX = 'M',
T_WEBSITE_LG = 'L',
T_CC = 'C',
T_LEAVE = 'Q'
};
// Report types
enum {
STATS_REPORT = 'R',
SSM_REPORT,
MAP_REPORT,
WEBSITE_REPORT,
LEAVE_REPORT
};
// Known Flags
enum {
SSM_CAPABLE = 1,
SSMPING_CAPABLE = 2
};
int build_probe(uint8_t *, int, uint32_t, uint64_t);
int build_report(uint8_t *, int, int, bool);
void handle_nmsg(const address &from, uint64_t recvdts, int ttl, uint8_t *buffer, int len, bool);
#endif
|