Esempio n. 1
0
        private void TryParseRouting()
        {
            if (this._routing != null || !this.RoutingPresent)
            {
                return;
            }
            List <GreSourceRouteEntry> list = new List <GreSourceRouteEntry>();
            int num1   = this.StartOffset + this.OffsetRouting;
            int offset = num1;
            int num2   = this.StartOffset + this.Length;

            while (num2 >= offset)
            {
                if (offset == num1 + (int)this.RoutingOffset)
                {
                    this._activeSourceRouteEntryIndex = new int?(list.Count);
                }
                GreSourceRouteEntry entry;
                if (!GreSourceRouteEntry.TryReadEntry(this.Buffer, ref offset, num2 - offset, out entry))
                {
                    this._isValidRouting = false;
                    break;
                }
                if (entry != null)
                {
                    list.Add(entry);
                }
                else
                {
                    break;
                }
            }
            this._routing = new ReadOnlyCollection <GreSourceRouteEntry>((IList <GreSourceRouteEntry>)list);
        }
Esempio n. 2
0
        private void TryParseRouting()
        {
            if (_routing != null || !RoutingPresent)
            {
                return;
            }

            List <GreSourceRouteEntry> entries = new List <GreSourceRouteEntry>();
            int routingStartOffset             = StartOffset + OffsetRouting;
            int entryOffset = routingStartOffset;

            int totalLength = StartOffset + Length;

            while (totalLength >= entryOffset)
            {
                GreSourceRouteEntry entry;
                if (entryOffset == routingStartOffset + RoutingOffset)
                {
                    _activeSourceRouteEntryIndex = entries.Count;
                }
                if (!GreSourceRouteEntry.TryReadEntry(Buffer, ref entryOffset, totalLength - entryOffset, out entry))
                {
                    _isValidRouting = false;
                    break;
                }

                if (entry == null)
                {
                    break;
                }

                entries.Add(entry);
            }

            _routing = new ReadOnlyCollection <GreSourceRouteEntry>(entries);
        }
 protected override bool EqualsPayloads(GreSourceRouteEntry other)
 {
     return(Enumerable.SequenceEqual <IpV4Address>((IEnumerable <IpV4Address>) this.Addresses, (IEnumerable <IpV4Address>)((GreSourceRouteEntryIp)other).Addresses));
 }
 /// <summary>
 /// True iff the IP addresses are equal.
 /// </summary>
 protected override bool EqualsPayloads(GreSourceRouteEntry other)
 {
     return(Addresses.SequenceEqual(((GreSourceRouteEntryIp)other).Addresses));
 }
 protected override bool EqualsPayloads(GreSourceRouteEntry other)
 {
     return(Enumerable.SequenceEqual <ushort>((IEnumerable <ushort>) this.AsNumbers, (IEnumerable <ushort>)((GreSourceRouteEntryAs)other).AsNumbers));
 }
 protected override bool EqualsPayloads(GreSourceRouteEntry other)
 {
     return(this.Data.Equals((DataSegment)((GreSourceRouteEntryUnknown)other).Data));
 }
 /// <summary>
 /// True iff the AS numbers are equal.
 /// </summary>
 protected override bool EqualsPayloads(GreSourceRouteEntry other)
 {
     return(AsNumbers.SequenceEqual(((GreSourceRouteEntryAs)other).AsNumbers));
 }