Example #1
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);
        }
Example #2
0
 /// <summary>
 /// True iff the IP addresses are equal.
 /// </summary>
 protected override bool EqualsPayloads(GreSourceRouteEntry other)
 {
     return(Addresses.SequenceEqual(((GreSourceRouteEntryIp)other).Addresses));
 }
Example #3
0
 /// <summary>
 /// True iff the AS numbers are equal.
 /// </summary>
 protected override bool EqualsPayloads(GreSourceRouteEntry other)
 {
     return(AsNumbers.SequenceEqual(((GreSourceRouteEntryAs)other).AsNumbers));
 }