Exemple #1
0
        internal static IpV6ExtensionHeader CreateInstanceStandard(IpV4Protocol nextHeader, DataSegment extensionHeaderData, out int numBytesRead)
        {
            numBytesRead = 0;
            if (extensionHeaderData.Length < MinimumLength)
            {
                return(null);
            }
            IpV4Protocol nextNextHeader = (IpV4Protocol)extensionHeaderData[Offset.NextHeader];
            int          length         = (extensionHeaderData[Offset.HeaderExtensionLength] + 1) * 8;

            if (extensionHeaderData.Length < length)
            {
                return(null);
            }

            DataSegment data = extensionHeaderData.Subsegment(Offset.Data, length - Offset.Data);

            numBytesRead = length;

            // TODO: Implement Shim6.
            switch (nextHeader)
            {
            case IpV4Protocol.IpV6HopByHopOption:     // 0
                return(IpV6ExtensionHeaderHopByHopOptions.ParseData(nextNextHeader, data));

            case IpV4Protocol.IpV6Route:     // 43
                return(IpV6ExtensionHeaderRouting.ParseData(nextNextHeader, data));

            case IpV4Protocol.FragmentHeaderForIpV6:     // 44
                return(IpV6ExtensionHeaderFragmentData.ParseData(nextNextHeader, data));

            case IpV4Protocol.IpV6Opts:                         // 60
                return(IpV6ExtensionHeaderDestinationOptions.ParseData(nextNextHeader, data));

            case IpV4Protocol.MobilityHeader:            // 135
                return(IpV6ExtensionHeaderMobility.ParseData(nextNextHeader, data));

            default:
                throw new InvalidOperationException("Invalid next header value" + nextHeader);
            }
        }
 internal override bool EqualsMessageData(IpV6ExtensionHeaderMobility other)
 {
     return(EqualsMessageData(other as IpV6ExtensionHeaderMobilityBindingAcknowledgementBase));
 }
 internal override bool EqualsMessageData(IpV6ExtensionHeaderMobility other)
 {
     return(EqualsMessageData(other as IpV6ExtensionHeaderMobilityHandoverAcknowledgeMessage));
 }
Exemple #4
0
 internal sealed override bool EqualsMessageData(IpV6ExtensionHeaderMobility other)
 {
     return(EqualsMessageData(other as IpV6ExtensionHeaderMobilityLocalizedRouting));
 }
 internal override bool EqualsMessageData(IpV6ExtensionHeaderMobility other)
 {
     return(other != null);
 }
Exemple #6
0
 internal override bool EqualsMessageData(IpV6ExtensionHeaderMobility other)
 {
     return(EqualsMessageData(other as IpV6ExtensionHeaderMobilityHomeTest));
 }
 internal sealed override bool EqualsMessageData(IpV6ExtensionHeaderMobility other)
 {
     return(EqualsMessageData(other as IpV6ExtensionHeaderMobilityBindingUpdateBase));
 }
Exemple #8
0
 internal override bool EqualsMessageData(IpV6ExtensionHeaderMobility other)
 {
     return(EqualsMessageData(other as IpV6ExtensionHeaderMobilityBindingError));
 }
Exemple #9
0
 internal override bool EqualsMessageData(IpV6ExtensionHeaderMobility other)
 {
     return(EqualsMessageData(other as IpV6ExtensionHeaderMobilityExperimental));
 }
 private bool EqualsData(IpV6ExtensionHeaderMobility other)
 {
     return(other != null &&
            MobilityHeaderType == other.MobilityHeaderType && Checksum == other.Checksum && MobilityOptions.Equals(other.MobilityOptions) &&
            EqualsMessageData(other));
 }
 internal abstract bool EqualsMessageData(IpV6ExtensionHeaderMobility other);