コード例 #1
0
        internal static void WriteReportVersion3(byte[] buffer, int offset, IEnumerable <IgmpGroupRecord> groupRecords)
        {
            ByteArrayExtensions.Write(buffer, offset, (byte)34);
            ushort num     = (ushort)0;
            int    offset1 = offset + 8;

            foreach (IgmpGroupRecord igmpGroupRecord in groupRecords)
            {
                IgmpGroupRecordDatagram.Write(buffer, ref offset1, igmpGroupRecord.RecordType, igmpGroupRecord.AuxiliaryData, igmpGroupRecord.MulticastAddress, igmpGroupRecord.SourceAddresses);
                ++num;
            }
            ByteArrayExtensions.Write(buffer, offset + 6, num, Endianity.Big);
            IgmpDatagram.WriteChecksum(buffer, offset, offset1 - offset);
        }
コード例 #2
0
ファイル: IgmpDatagram.cs プロジェクト: zwxu999/Pcap.Net
        internal static void WriteReportVersion3(byte[] buffer, int offset,
                                                 IEnumerable <IgmpGroupRecord> groupRecords)
        {
            // MessageType
            buffer.Write(offset + Offset.MessageType, (byte)IgmpMessageType.MembershipReportVersion3);

            ushort numGroupRecords = 0;
            int    recordOffset    = offset + Offset.GroupRecords;

            foreach (IgmpGroupRecord record in groupRecords)
            {
                IgmpGroupRecordDatagram.Write(buffer, ref recordOffset, record.RecordType, record.AuxiliaryData, record.MulticastAddress, record.SourceAddresses);
                ++numGroupRecords;
            }

            // NumberOfGroupRecords
            buffer.Write(offset + Offset.NumberOfGroupRecords, numGroupRecords, Endianity.Big);

            // Checksum
            WriteChecksum(buffer, offset, recordOffset - offset);
        }