Files
wlan-cloud-loadsim/protobuf/opensync_stats.proto
2020-10-19 11:53:22 -07:00

845 lines
27 KiB
Protocol Buffer

// Copyright (c) 2015, Plume Design Inc. All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the Plume Design Inc. nor the
// names of its contributors may be used to endorse or promote products
// derived from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL Plume Design Inc. BE LIABLE FOR ANY
// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto2";
package sts;
enum RadioBandType {
BAND2G = 0;
BAND5G = 1;
BAND5GL = 2;
BAND5GU = 3;
}
enum SurveyType {
ON_CHANNEL = 0;
OFF_CHANNEL = 1;
FULL = 2;
}
enum NeighborType {
ONCHAN_SCAN = 0;
OFFCHAN_SCAN = 1;
FULL_SCAN = 2;
}
enum ChanWidth {
CHAN_WIDTH_UNKNOWN = 0;
CHAN_WIDTH_20MHZ = 1;
CHAN_WIDTH_40MHZ = 2;
CHAN_WIDTH_40MHZ_ABOVE = 3;
CHAN_WIDTH_40MHZ_BELOW = 4;
CHAN_WIDTH_80MHZ = 5;
CHAN_WIDTH_160MHZ = 6;
CHAN_WIDTH_80_PLUS_80MHZ = 7;
}
enum WmmAc {
WMM_AC_VO = 1;
WMM_AC_VI = 2;
WMM_AC_BE = 3;
WMM_AC_BK = 4;
}
enum BSEventType {
PROBE = 0;
CONNECT = 1;
DISCONNECT = 2;
BACKOFF = 3;
ACTIVITY = 4;
OVERRUN = 5;
BAND_STEERING_ATTEMPT = 6;
CLIENT_STEERING_ATTEMPT = 7;
CLIENT_STEERING_STARTED = 8;
CLIENT_STEERING_DISABLED = 9;
CLIENT_STEERING_EXPIRED = 10;
CLIENT_STEERING_FAILED = 11;
AUTH_BLOCK = 12;
CLIENT_KICKED = 13;
CLIENT_BS_BTM = 14;
CLIENT_STICKY_BTM = 15;
CLIENT_BTM = 16;
CLIENT_CAPABILITIES = 17;
CLIENT_BS_BTM_RETRY = 18;
CLIENT_STICKY_BTM_RETRY = 19;
CLIENT_BTM_RETRY = 20;
CLIENT_RRM_BCN_RPT = 21;
CLIENT_BS_KICK = 22;
CLIENT_STICKY_KICK = 23;
CLIENT_SPECULATIVE_KICK = 24;
CLIENT_DIRECTED_KICK = 25;
CLIENT_GHOST_DEVICE_KICK = 26;
}
enum EventType {
CLIENT_ASSOC = 0;
CLIENT_AUTH = 1;
CLIENT_DISCONNECT = 2;
CLIENT_FAILURE = 3;
CLIENT_FIRST_DATA = 4;
CLIEND_ID = 5;
CLIENT_IP = 6;
CLIENT_TIMEOUT = 7;
}
enum DeviceType {
DEV_AP = 0;
DEV_STA = 1;
}
enum FrameType {
FT_DEAUTH = 0;
FT_DISASSOC = 1;
}
enum DisconnectSrc {
LOCAL = 0;
REMOTE = 1;
}
enum AssocType {
ASSOC = 0;
REASSOC = 1;
}
enum DisconnectType {
DISASSOC = 0;
DEAUTH = 1;
}
enum SecurityType
{
SEC_OPEN = 0;
SEC_RADIUS = 1;
SEC_PSK = 2;
}
// If optional ReportType is not present assume RAW
enum ReportType {
RAW = 0;
AVERAGE = 1;
HISTOGRAM = 2;
PERCENTILE = 3;
DIFF = 4;
}
enum FsType {
FS_TYPE_ROOTFS = 0;
FS_TYPE_TMPFS = 1;
}
enum CTReasonType {
CTR_IDLE_TOO_LONG = 0;
CTR_PROBE_FAIL = 1;
}
message AvgType {
required uint32 avg = 1;
optional uint32 min = 2;
optional uint32 max = 3;
optional uint32 num = 4;
}
enum DiffType {
ADDED = 0;
REMOVED = 1;
}
enum StreamingVideoType {
UNKNOWN = 0;
NETFLIX = 1;
YOUTUBE = 2;
PLEX = 3;
}
////////////////////////////////////////////////////////////////////////////////
//
// Neighbor report: Report contains OBSS neighbor nodes/beacons retreived from
// scanning:
//
// - off-chan : neighbors retreived from scanning foreingh selected channels
// - on-chan : neighbors retreived from home channel
// - full : neighbors retreived from all channels current regulatory domain
//
////////////////////////////////////////////////////////////////////////////////
message Neighbor {
message NeighborBss {
required string bssid = 1;
optional string ssid = 2;
optional uint32 rssi = 3;
optional uint64 tsf = 4;
optional ChanWidth chan_width = 5;
required uint32 channel = 6;
optional DiffType status = 7;
}
required RadioBandType band = 1;
required NeighborType scan_type = 2;
optional uint64 timestamp_ms = 3;
repeated NeighborBss bss_list = 4;
optional ReportType report_type = 5;
}
////////////////////////////////////////////////////////////////////////////////
//
// Client report: Report contains rx and tx stats for a single station
//
// - Average stats : Averaged rx and tx stats
// - Extended stats : Detailed MCS, NSS and BW stats for tx and rx
//
////////////////////////////////////////////////////////////////////////////////
message Client {
message Stats {
optional uint64 rx_bytes = 1;
optional uint64 tx_bytes = 2;
optional uint64 rx_frames = 3;
optional uint64 tx_frames = 4;
optional uint64 rx_retries = 5;
optional uint64 tx_retries = 6;
optional uint64 rx_errors = 7;
optional uint64 tx_errors = 8;
optional double rx_rate = 9;
optional double tx_rate = 10;
optional uint32 rssi = 11;
}
message RxStats {
message ChainRSSI {
required uint32 chain = 1;
required uint32 ht = 2;
/* pri20(20MHz), sec20(40MHz), sec40(80MHz), sec80(160MHz) */ optional
uint32 rssi = 3;
}
required uint32 mcs = 1;
required uint32 nss = 2;
required uint32 bw = 3;
optional uint64 bytes = 4;
optional uint64 msdus = 5;
optional uint64 mpdus = 6;
optional uint64 ppdus = 7;
optional uint64 retries = 8;
optional uint64 errors = 9;
optional uint32 rssi = 10;
repeated ChainRSSI chain_rssi = 11;
}
message TxStats {
required uint32 mcs = 1;
required uint32 nss = 2;
required uint32 bw = 3;
optional uint64 bytes = 4;
optional uint64 msdus = 5;
optional uint64 mpdus = 6;
optional uint64 ppdus = 7;
optional uint64 retries = 8;
optional uint64 errors = 9;
}
message TidStats {
message Sojourn {
required WmmAc ac = 1; /* Acess category */ required uint32 tid = 2;
/* Traffic identifier queue number */ optional uint32 ewma_time_ms = 3;
/* Moving average value based on last couple of transmitted msdus */
optional uint32 sum_time_ms = 4;
/* Delta of cumulative msdus times over interval */ optional uint32
num_msdus = 5; /* Number of msdus in given interval */ }
repeated Sojourn sojourn = 4;
optional uint32 offset_ms = 5;
}
required string mac_address = 1;
optional string ssid = 2;
optional bool connected = 3;
optional uint32 connect_count = 4;
optional uint32 disconnect_count = 5;
optional uint32 connect_offset_ms = 6;
optional uint32 disconnect_offset_ms = 7;
optional uint32 duration_ms = 8;
optional Stats stats = 9;
repeated RxStats rx_stats = 10;
repeated TxStats tx_stats = 11;
repeated TidStats tid_stats = 12;
optional uint32 uapsd = 13;
}
message ClientReport {
required RadioBandType band = 1;
optional uint64 timestamp_ms = 2;
repeated Client client_list = 3;
required uint32 channel = 4;
}
////////////////////////////////////////////////////////////////////////////////
//
// Survey report : Chanel utilization. Report contains samples
//
// error rxbusy and obssbussy represent rx samples that were errorenous where:
// - rxbusy is rx time with decoded BSSIS
// - obssbusy is the time from the undecoded rx error samples
//
////////////////////////////////////////////////////////////////////////////////
message Survey {
message SurveySample {
required uint32 channel = 1;
optional uint32 duration_ms = 2;
optional uint32 total_count = 3;
optional uint32 sample_count = 4;
optional uint32 busy = 5; /* Busy = Rx + Tx + Interference */ optional uint32
busy_tx = 6; /* Tx */ optional uint32 busy_rx = 7;
/* Rx = Rx_obss + Rx_errr (self and obss errors) */ optional uint32
busy_self = 8; /* Rx_self (derived from succesful Rx frames)*/ optional
uint32 offset_ms = 9;
optional uint32 busy_ext = 10; /* 40MHz extention channel busy */ optional
uint32 noise = 11;
}
message SurveyAvg {
required uint32 channel = 1;
optional AvgType busy = 2; /* Busy = Rx + Tx + Interference */ optional
AvgType busy_tx = 3; /* Tx */ optional AvgType busy_rx = 4;
/* Rx = Rx_obss + Rx_errr (self and obss errors) */ optional AvgType
busy_self = 5; /* Rx_self (derived from succesful Rx frames)*/ optional
AvgType busy_ext = 6; /* 40MHz extention channel busy */ optional AvgType
noise = 7;
}
required RadioBandType band = 1;
required SurveyType survey_type = 2;
optional uint64 timestamp_ms = 3;
repeated SurveySample survey_list = 4;
repeated SurveyAvg survey_avg = 5;
optional ReportType report_type = 6;
}
////////////////////////////////////////////////////////////////////////////////
//
// Capacity report : Tx sampling of queues (MAC) and survey (PHY) samples
//
////////////////////////////////////////////////////////////////////////////////
message Capacity {
message QueueSample {
optional uint32 busy_tx = 1;
optional uint32 bytes_tx = 2;
optional uint32 sample_count = 3;
optional uint32 Vo_count = 4; /* Video */ optional uint32 Vi_count = 5;
/* Voice */ optional uint32 Be_count = 6; /* Best Effort */ optional uint32
Bk_count = 7; /* Background */ optional uint32 Bcn_count = 8; /* Beacon */
optional uint32 Cab_count = 9; /* Content After Beacon */ optional uint32
offset_ms = 10;
}
required RadioBandType band = 1;
optional uint64 timestamp_ms = 2;
repeated QueueSample queue_list = 3;
}
////////////////////////////////////////////////////////////////////////////////
//
// Device status report
//
////////////////////////////////////////////////////////////////////////////////
message Device {
message LoadAvg {
optional double one = 1;
optional double five = 2;
optional double fifteen = 3;
}
message RadioTemp {
optional RadioBandType band = 1;
optional int32 value = 2;
}
optional LoadAvg load = 1;
repeated RadioTemp radio_temp = 2;
optional uint64 timestamp_ms = 3;
optional uint32 uptime = 4;
message Thermal {
message RadioTxChainMask {
optional RadioBandType band = 1;
optional uint32 value = 2;
}
repeated RadioTxChainMask txchainmask = 1;
optional uint32 fan_rpm = 2;
optional uint64 timestamp_ms = 3;
}
repeated Thermal thermal_stats = 5;
// Memory utilization: [kB]
message MemUtil {
required uint32 mem_total = 1;
required uint32 mem_used = 2;
optional uint32 swap_total = 3;
optional uint32 swap_used = 4;
}
optional MemUtil mem_util = 6;
// Filesystem utilization per FS-type: [kB]
message FsUtil {
required FsType fs_type = 1;
required uint32 fs_total = 2;
required uint32 fs_used = 3;
}
repeated FsUtil fs_util = 7;
// CPU utilization: [percent]:
message CpuUtil {
optional uint32 cpu_util = 1;
}
optional CpuUtil cpuUtil = 8;
// Per-process CPU/MEM utilization:
message PerProcessUtil {
required uint32 pid = 1;
required string cmd = 2; /* for cpu: [%CPU] [0..100]; for mem: [kB] */
required uint32 util = 3;
}
// top / most CPU/MEM consuming processes:
repeated PerProcessUtil ps_cpu_util = 9;
repeated PerProcessUtil ps_mem_util = 10;
}
////////////////////////////////////////////////////////////////////////////////
//
// Band Steering Client report
//
// - Contains band steering stats per client per station
//
////////////////////////////////////////////////////////////////////////////////
message BSClient {
message BSEvent {
required BSEventType type = 1;
required uint32 offset_ms = 2;
optional uint32 rssi = 3;
optional bool probe_bcast = 4;
optional bool probe_blocked = 5;
optional DisconnectSrc disconnect_src = 6;
optional DisconnectType disconnect_type = 7;
optional uint32 disconnect_reason = 8;
optional bool backoff_enabled = 9;
optional bool active = 10;
optional bool rejected = 11;
optional bool is_BTM_supported = 12;
optional bool is_RRM_supported = 13;
optional uint32 max_chwidth = 14;
optional uint32 max_streams = 15;
optional uint32 phy_mode = 16;
optional uint32 max_mcs = 17;
optional uint32 max_txpower = 18;
optional bool is_static_smps = 19;
optional bool is_mu_mimo_supported = 20;
optional bool band_cap_2G = 21;
optional bool band_cap_5G = 22;
optional bool rrm_caps_link_meas = 23;
optional bool rrm_caps_neigh_rpt = 24;
optional bool rrm_caps_bcn_rpt_passive = 25;
optional bool rrm_caps_bcn_rpt_active = 26;
optional bool rrm_caps_bcn_rpt_table = 27;
optional bool rrm_caps_lci_meas = 28;
optional bool rrm_caps_ftm_range_rpt = 29;
optional uint32 backoff_period = 30;
optional bytes assoc_ies = 31;
}
message BSBandReport {
required RadioBandType band = 1;
optional bool connected = 2;
optional uint32 rejects = 3;
optional uint32 connects = 4;
optional uint32 disconnects = 5;
optional uint32 activity_changes = 6;
optional uint32 steering_success_cnt = 7;
optional uint32 steering_fail_cnt = 8;
optional uint32 steering_kick_cnt = 9;
optional uint32 sticky_kick_cnt = 10;
optional uint32 probe_bcast_cnt = 11;
optional uint32 probe_bcast_blocked = 12;
optional uint32 probe_direct_cnt = 13;
optional uint32 probe_direct_blocked = 14;
repeated BSEvent event_list = 15;
optional string ifname = 16;
}
required string mac_address = 1;
repeated BSBandReport bs_band_report = 2;
}
message BSReport {
required uint64 timestamp_ms = 1;
repeated BSClient clients = 2;
}
////////////////////////////////////////////////////////////////////////////////
//
// Band Steering Client report
//
// - Contains band steering stats per client per station
//
////////////////////////////////////////////////////////////////////////////////
message RssiPeer {
enum RssiSource {
CLIENT = 0;
PROBE = 1;
NEIGHBOR = 2;
}
message RssiSample {
required uint32 rssi = 1;
optional uint32 offset_ms = 2;
}
required string mac_address = 1;
optional RssiSource rssi_source = 2;
repeated RssiSample rssi_list = 3;
optional AvgType rssi_avg = 4;
optional uint64 rx_ppdus = 5;
optional uint64 tx_ppdus = 6;
}
message RssiReport {
required RadioBandType band = 1;
required ReportType report_type = 2;
optional uint64 timestamp_ms = 3;
repeated RssiPeer peer_list = 4;
}
////////////////////////////////////////////////////////////////////////////////
//
// Network probe parameters
//
////////////////////////////////////////////////////////////////////////////////
enum StateUpDown {
SUD_down = 0;
SUD_up = 1;
SUD_error = 2;
}
message DNSProbeMetric {
optional string serverIP = 1;
optional StateUpDown state = 2; // State of the server
optional uint32 latency = 3; // Response latency in ms
}
message VLANMetrics {
optional string vlanIF = 1; // The name of the interface (ie: brtrunk.100)
optional StateUpDown dhcpState = 2; // The state of the DHCP server according to that vlan
optional uint32 latency = 3;
}
message RADIUSMetrics {
optional string serverIP = 1;
optional StateUpDown radiusState = 2;
optional uint32 latency = 3;
}
message NetworkProbe {
optional DNSProbeMetric dns_probe = 1;
optional VLANMetrics vlan_probe = 2;
repeated RADIUSMetrics radius_probe = 3;
optional uint64 timestamp_ms = 4;
}
////////////////////////////////////////////////////////////////////////////////
//
// Voice and Video Stats
//
// - Contains voice/video detection information
//
////////////////////////////////////////////////////////////////////////////////
message RtpFlowStats {
enum RtpFlowDirection {
RTP_UPSTREAM = 0;
RTP_DOWNSTREAM = 1;
}
enum RtpFlowType {
RTP_VOICE = 0;
RTP_VIDEO = 1;
}
optional RtpFlowDirection direction = 1;
optional RtpFlowType rtp_flow_type = 2;
optional uint32 latency = 3;
optional uint32 jitter = 4;
optional uint32 packet_loss_percent = 5;
optional uint32 packet_loss_consec = 6;
optional uint32 codec = 7;
optional uint32 mosx_100 = 8;
optional bytes block_codecs = 9;
optional uint32 total_packets_sent = 10;
optional uint32 total_packets_lost = 11;
optional uint32 rtp_seq_first = 12;
optional uint32 rtp_seq_last = 13;
optional uint32 stats_idx = 14;
}
message CallStart {
optional uint64 session_id = 1;
optional uint64 wifi_session_id = 2;
optional bytes client_mac = 3;
repeated string codecs = 4;
optional string provider_domain = 5;
optional string device_info = 6;
optional uint32 channel = 7;
required RadioBandType band = 8;
}
message CallStop {
enum CallStopReason {
BYE_OK = 0;
CALL_DROPPED = 1;
}
optional uint64 session_id = 1;
optional uint64 wifi_session_id = 2;
optional bytes client_mac = 3;
optional CallStopReason reason = 4;
optional uint32 call_duration = 5;
repeated RtpFlowStats stats = 6;
optional uint32 channel = 7;
required RadioBandType band = 8;
repeated string codecs = 9;
optional string provider_domain = 10;
}
message CallReport {
enum CallReportReason {
ROAMED_FROM = 0;
ROAMED_TO = 1;
GOT_PUBLISH = 2;
}
optional uint64 session_id = 1;
optional uint64 wifi_session_id = 2;
optional bytes client_mac = 3;
repeated RtpFlowStats stats = 4;
optional CallReportReason reason = 5;
optional uint32 channel = 6;
required RadioBandType band = 7;
repeated string codecs = 8;
optional string provider_domain = 9;
}
message StreamingVideoDetectPattern {
optional string dns_lookup_pattern = 1; // DNS name pattern for detection (like *.nflxvideo.net)
optional StreamingVideoType video_type = 2;
}
message StreamingVideoSessionStart {
optional uint64 video_session_id = 1;
optional uint64 session_id = 2;
optional bytes client_mac = 3;
optional bytes server_ip = 4;
optional StreamingVideoType streaming_video_type = 5;
}
message StreamingVideoServerDetected {
optional uint64 video_session_id = 1;
optional uint64 session_id = 2;
optional bytes client_mac = 3;
optional bytes server_ip = 4;
optional string server_dns_name = 5;
optional StreamingVideoType streaming_video_type = 6;
}
message StreamingVideoStop {
optional uint64 video_session_id = 1;
optional uint64 session_id = 2;
optional bytes client_mac = 3;
optional bytes server_ip = 4;
optional uint64 total_bytes = 5;
optional StreamingVideoType streaming_video_type = 6;
optional uint32 duration_sec = 7;
}
message VideoVoiceReport {
optional CallStart call_start = 1;
optional CallStop call_stop = 2;
optional CallReport call_report = 3;
optional StreamingVideoStop stream_video_stop = 4;
optional StreamingVideoServerDetected stream_video_server = 5;
optional StreamingVideoSessionStart stream_video_session_start = 6;
optional uint64 timestamp_ms = 7;
}
// type of ConnectionEvent is determined by ConnectionEventType enum
// all other fields are optional
// there will be more fields in the future, this is only for STA_Client_Assoc event
////////////////////////////////////////////////////////////////////////////////
//
// Generic Event report
//
// - Contains STA events and will likel be extended with other event types
// in the future
//
////////////////////////////////////////////////////////////////////////////////
message EventReport {
/* Client Association Event */
message ClientAssocEvent {
optional string sta_mac = 1;
optional uint64 session_id = 2;
optional string ssid = 3;
optional RadioBandType band = 4;
optional AssocType assoc_type = 5;
optional uint32 status = 6;
optional int32 rssi = 7;
optional uint32 internal_sc = 8;
optional bool using11k = 9;
optional bool using11r = 10;
optional bool using11v = 11;
}
/* Client Authentication Event */
message ClientAuthEvent {
optional string sta_mac = 1;
optional uint64 session_id = 2;
optional string ssid = 3;
optional RadioBandType band = 4;
optional uint32 auth_status = 5;
}
/* Client Disconnect Event */
message ClientDisconnectEvent {
optional string sta_mac = 1;
optional uint64 session_id = 2;
optional uint32 reason = 3;
optional DeviceType dev_type = 4;
optional FrameType fr_type = 5;
optional uint64 lsent_up_ts_in_us = 6;
optional uint64 lrcv_up_ts_in_us = 7;
optional uint32 internal_rc = 8;
optional int32 rssi = 9;
optional string ssid = 10;
optional RadioBandType band = 11;
}
/* Client Connnect Event */
message ClientConnectEvent {
optional string sta_mac = 1;
optional uint64 session_id = 2;
optional RadioBandType band = 3;
optional AssocType assoc_type = 4;
optional string ssid = 5;
optional SecurityType sec_type = 6;
optional bool fbt_used = 7;
optional bytes ip_addr = 8;
optional string clt_id = 9;
optional int64 ev_time_bootup_in_us_auth = 10;
optional int64 ev_time_bootup_in_us_assoc = 11;
optional int64 ev_time_bootup_in_us_eapol = 12;
optional int64 ev_time_bootup_in_us_port_enable = 13;
optional int64 ev_time_bootup_in_us_first_rx = 14;
optional int64 ev_time_bootup_in_us_first_tx = 15;
optional bool using11k = 16;
optional bool using11r = 17;
optional bool using11v = 18;
optional int64 ev_time_bootup_in_us_ip = 19;
optional int32 assoc_rssi = 20;
}
/* Client Failure Event */
message ClientFailureEvent {
optional string sta_mac = 1;
optional uint64 session_id = 2;
optional string ssid = 3;
optional int32 reason_code = 4;
optional string reason_str = 5;
}
/* Client First Data Event */
message ClientFirstDataEvent {
optional string sta_mac = 1;
optional uint64 session_id = 2;
optional uint64 fdata_tx_up_ts_in_us = 3;
optional uint64 fdata_rx_up_ts_in_us = 4;
}
/* Client Id Event */
message ClientIdEvent {
optional string clt_mac = 1;
optional uint64 session_id = 2;
optional string clt_id = 3;
}
/* Client IP Event */
message ClientIpEvent {
optional string sta_mac = 1;
optional uint64 session_id = 2;
optional bytes ip_addr = 3;
}
/* Client Timeout Event */
message ClientTimeoutEvent {
optional string sta_mac = 1;
optional uint64 session_id = 2;
optional CTReasonType r_code = 3;
optional uint64 last_sent_up_ts_in_us = 4;
optional uint64 last_rcv_up_ts_in_us = 5;
}
/* Client Session */
message ClientSession {
required uint64 session_id = 1;
repeated ClientAssocEvent client_assoc_event = 2;
repeated ClientAuthEvent client_auth_event = 3;
repeated ClientDisconnectEvent client_disconnect_event = 4;
repeated ClientFailureEvent client_failure_event = 5;
repeated ClientFirstDataEvent client_first_data_event = 6;
repeated ClientIdEvent client_id_event = 7;
repeated ClientIpEvent client_ip_event = 8;
repeated ClientTimeoutEvent client_timeout_event = 9;
repeated ClientConnectEvent client_connect_event = 10;
}
/* Multiple Client Sessions */
repeated ClientSession client_session = 1;
}
////////////////////////////////////////////////////////////////////////////////
//
// Overall report that might contain all individual stats reports
//
////////////////////////////////////////////////////////////////////////////////
message Report {
required string nodeID = 1;
repeated Survey survey = 2;
repeated Capacity capacity = 3;
repeated Neighbor neighbors = 4;
repeated ClientReport clients = 5;
repeated Device device = 6;
repeated BSReport bs_report = 7;
repeated RssiReport rssi_report = 8;
repeated VideoVoiceReport video_voice_report = 9;
repeated NetworkProbe network_probe = 101;
repeated EventReport event_report = 102;
}