text: /** @file
    NVData structure used by the IP6 configuration component.
  
    Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.<BR>
  
    SPDX-License-Identifier: BSD-2-Clause-Patent
  
  **/
  
  #ifndef _IP6_NV_DATA_H_
  #define _IP6_NV_DATA_H_
  
  #include <Guid/Ip6ConfigHii.h>
  
  #define FORMID_MAIN_FORM           1
  #define FORMID_MANUAL_CONFIG_FORM  2
  #define FORMID_HEAD_FORM           3
  
  #define IP6_POLICY_AUTO         0
  #define IP6_POLICY_MANUAL       1
  #define DAD_MAX_TRANSMIT_COUNT  10
  
  #define KEY_INTERFACE_ID           0x101
  #define KEY_MANUAL_ADDRESS         0x102
  #define KEY_GATEWAY_ADDRESS        0x103
  #define KEY_DNS_ADDRESS            0x104
  #define KEY_SAVE_CHANGES           0x105
  #define KEY_SAVE_CONFIG_CHANGES    0x106
  #define KEY_IGNORE_CONFIG_CHANGES  0x107
  #define KEY_GET_CURRENT_SETTING    0x108
  
  #define HOST_ADDRESS_LABEL     0x9000
  #define ROUTE_TABLE_LABEL      0xa000
  #define GATEWAY_ADDRESS_LABEL  0xb000
  #define DNS_ADDRESS_LABEL      0xc000
  #define LABEL_END              0xffff
  
  #define INTERFACE_ID_STR_MIN_SIZE  1
  #define INTERFACE_ID_STR_MAX_SIZE  23
  #define INTERFACE_ID_STR_STORAGE   25
  #define IP6_STR_MAX_SIZE           40
  #define ADDRESS_STR_MIN_SIZE       2
  #define ADDRESS_STR_MAX_SIZE       255
  
  ///
  /// IP6_CONFIG_IFR_NVDATA contains the IP6 configure
  /// parameters for that NIC.
  ///
  #pragma pack(1)
  typedef struct {
    UINT8     IfType;                                       ///< interface type
    UINT8     Padding[3];
    UINT32    Policy;                                       ///< manual or automatic
    UINT32    DadTransmitCount;                             ///< dad transmits count
    CHAR16    InterfaceId[INTERFACE_ID_STR_STORAGE];        ///< alternative interface id
    CHAR16    ManualAddress[ADDRESS_STR_MAX_SIZE];          ///< IP addresses
    CHAR16    GatewayAddress[ADDRESS_STR_MAX_SIZE];         ///< Gateway address
    CHAR16    DnsAddress[ADDRESS_STR_MAX_SIZE];             ///< DNS server address
  } IP6_CONFIG_IFR_NVDATA;
  #pragma pack()
  
  #endif
  