internal static IpV6ExtensionHeader CreateInstance(IpV4Protocol nextHeader, DataSegment extensionHeaderData, out int numBytesRead) { if (IpV6ExtensionHeaderStandard.IsStandard(nextHeader)) { return(IpV6ExtensionHeaderStandard.CreateInstanceStandard(nextHeader, extensionHeaderData, out numBytesRead)); } switch (nextHeader) { case IpV4Protocol.EncapsulatingSecurityPayload: // 50 return(IpV6ExtensionHeaderEncapsulatingSecurityPayload.CreateInstance(extensionHeaderData, out numBytesRead)); case IpV4Protocol.AuthenticationHeader: // 51 return(IpV6ExtensionHeaderAuthentication.CreateInstance(extensionHeaderData, out numBytesRead)); default: throw new InvalidOperationException("Invalid next header value" + nextHeader); } }
internal static IpV6ExtensionHeader CreateInstance(IpV4Protocol nextHeader, DataSegment extensionHeaderData, out int numBytesRead) { switch (nextHeader) { case IpV4Protocol.IpV6HopByHopOption: // 0 case IpV4Protocol.IpV6Route: // 43 case IpV4Protocol.FragmentHeaderForIpV6: // 44 case IpV4Protocol.IpV6Opts: // 60 case IpV4Protocol.MobilityHeader: // 135 return(CreateStandardInstance(nextHeader, extensionHeaderData, out numBytesRead)); case IpV4Protocol.EncapsulatingSecurityPayload: // 50 return(IpV6ExtensionHeaderEncapsulatingSecurityPayload.CreateInstance(extensionHeaderData, out numBytesRead)); case IpV4Protocol.AuthenticationHeader: // 51 return(IpV6ExtensionHeaderAuthentication.CreateInstance(extensionHeaderData, out numBytesRead)); default: throw new InvalidOperationException("Invalid nextHeader value" + nextHeader); } }