/// <summary>
 /// Creates an instance from next header, checksum, sequence number, unsolicited, status, lifetime and options.
 /// </summary>
 /// <param name="nextHeader">Identifies the type of header immediately following this extension header.</param>
 /// <param name="checksum">
 /// Contains the checksum of the Mobility Header.
 /// The checksum is calculated from the octet string consisting of a "pseudo-header"
 /// followed by the entire Mobility Header starting with the Payload Proto field.
 /// The checksum is the 16-bit one's complement of the one's complement sum of this string.
 /// </param>
 /// <param name="sequenceNumber">Copied from the sequence number field of the LRI message being responded to.</param>
 /// <param name="unsolicited">
 /// When true, the LRA message is sent unsolicited.
 /// The Lifetime field indicates a new requested value.
 /// The MAG must wait for the regular LRI message to confirm that the request is acceptable to the LMA.
 /// </param>
 /// <param name="status">The acknowledgement status.</param>
 /// <param name="lifetime">
 /// The time in seconds for which the local forwarding is supported.
 /// Typically copied from the corresponding field in the LRI message.
 /// </param>
 /// <param name="options">Zero or more TLV-encoded mobility options.</param>
 public IpV6ExtensionHeaderMobilityLocalizedRoutingAcknowledgement(IpV4Protocol? nextHeader, ushort checksum, ushort sequenceNumber, bool unsolicited,
                                                                   IpV6MobilityLocalizedRoutingAcknowledgementStatus status, ushort lifetime,
                                                                   IpV6MobilityOptions options)
     : base(nextHeader, checksum, sequenceNumber, lifetime, options)
 {
     Status = status;
     Unsolicited = unsolicited;
 }
 /// <summary>
 /// Creates an instance from next header, checksum, sequence number, unsolicited, status, lifetime and options.
 /// </summary>
 /// <param name="nextHeader">Identifies the type of header immediately following this extension header.</param>
 /// <param name="checksum">
 /// Contains the checksum of the Mobility Header.
 /// The checksum is calculated from the octet string consisting of a "pseudo-header"
 /// followed by the entire Mobility Header starting with the Payload Proto field.
 /// The checksum is the 16-bit one's complement of the one's complement sum of this string.
 /// </param>
 /// <param name="sequenceNumber">Copied from the sequence number field of the LRI message being responded to.</param>
 /// <param name="unsolicited">
 /// When true, the LRA message is sent unsolicited.
 /// The Lifetime field indicates a new requested value.
 /// The MAG must wait for the regular LRI message to confirm that the request is acceptable to the LMA.
 /// </param>
 /// <param name="status">The acknowledgement status.</param>
 /// <param name="lifetime">
 /// The time in seconds for which the local forwarding is supported.
 /// Typically copied from the corresponding field in the LRI message.
 /// </param>
 /// <param name="options">Zero or more TLV-encoded mobility options.</param>
 public IpV6ExtensionHeaderMobilityLocalizedRoutingAcknowledgement(IpV4Protocol?nextHeader, ushort checksum, ushort sequenceNumber, bool unsolicited,
                                                                   IpV6MobilityLocalizedRoutingAcknowledgementStatus status, ushort lifetime,
                                                                   IpV6MobilityOptions options)
     : base(nextHeader, checksum, sequenceNumber, lifetime, options)
 {
     Status      = status;
     Unsolicited = unsolicited;
 }
        internal static IpV6ExtensionHeaderMobilityLocalizedRoutingAcknowledgement ParseMessageData(IpV4Protocol nextHeader, ushort checksum, DataSegment messageData)
        {
            ushort sequenceNumber;
            ushort lifetime;
            IpV6MobilityOptions options;

            if (!ParseMessageDataToFields(messageData, out sequenceNumber, out lifetime, out options))
            {
                return(null);
            }

            bool unsolicited = messageData.ReadBool(MessageDataOffset.Unsolicited, MessageDataMask.Unsolicited);
            IpV6MobilityLocalizedRoutingAcknowledgementStatus status = (IpV6MobilityLocalizedRoutingAcknowledgementStatus)messageData[MessageDataOffset.Status];

            return(new IpV6ExtensionHeaderMobilityLocalizedRoutingAcknowledgement(nextHeader, checksum, sequenceNumber, unsolicited, status, lifetime, options));
        }