93 lines
2.8 KiB
Protocol Buffer
Executable File
93 lines
2.8 KiB
Protocol Buffer
Executable File
/*
|
|
Copyright (C) 2010 Srivats P.
|
|
|
|
This file is part of "Ostinato"
|
|
|
|
This is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program 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 General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>
|
|
*/
|
|
|
|
package OstProto;
|
|
|
|
/// Group Management Protocol (i.e. IGMP and MLD)
|
|
message Gmp {
|
|
//
|
|
// Common fields for both ASM and SSM messages
|
|
//
|
|
optional uint32 type = 1;
|
|
optional bool is_override_rsvd_code = 2;
|
|
optional uint32 rsvd_code = 3;
|
|
// MaxRespTime is in milliseconds - MaxRespCode will be derived
|
|
optional uint32 max_response_time = 4 [default = 100];
|
|
optional bool is_override_checksum = 5;
|
|
optional uint32 checksum = 6;
|
|
|
|
message IpAddress {
|
|
optional fixed32 v4 = 1;
|
|
optional fixed64 v6_hi = 2;
|
|
optional fixed64 v6_lo = 3;
|
|
}
|
|
|
|
//
|
|
// Fields used in ASM messages
|
|
//
|
|
enum GroupMode {
|
|
kFixed = 0;
|
|
kIncrementGroup = 1;
|
|
kDecrementGroup = 2;
|
|
kRandomGroup = 3;
|
|
}
|
|
optional IpAddress group_address = 10;
|
|
optional GroupMode group_mode = 11 [default = kFixed];
|
|
optional uint32 group_count = 12 [default = 16];
|
|
optional uint32 group_prefix = 13 [default = 24];
|
|
|
|
//
|
|
// Fields used in SSM Query
|
|
//
|
|
optional bool s_flag = 20;
|
|
optional uint32 qrv = 21 [default = 2];
|
|
// QuerierQueryInterval is in seconds - QQIC will be derived
|
|
optional uint32 qqi = 22 [default = 125];
|
|
repeated IpAddress sources = 23;
|
|
optional bool is_override_source_count = 24;
|
|
optional uint32 source_count = 25;
|
|
|
|
//
|
|
// Fields used in SSM Reports
|
|
//
|
|
message GroupRecord {
|
|
enum RecordType {
|
|
kReserved = 0;
|
|
kIsInclude = 1;
|
|
kIsExclude = 2;
|
|
kToInclude = 3;
|
|
kToExclude = 4;
|
|
kAllowNew = 5;
|
|
kBlockOld = 6;
|
|
}
|
|
|
|
optional RecordType type = 1 [default = kIsInclude];
|
|
optional IpAddress group_address = 2;
|
|
repeated IpAddress sources = 3;
|
|
optional bool is_override_source_count = 4;
|
|
optional uint32 source_count = 5;
|
|
optional bytes aux_data = 6;
|
|
optional bool is_override_aux_data_length = 7;
|
|
optional uint32 aux_data_length = 8;
|
|
}
|
|
repeated GroupRecord group_records = 30;
|
|
optional bool is_override_group_record_count = 31;
|
|
optional uint32 group_record_count = 32;
|
|
}
|