/** @file
  Routines used to operate the Ip4Dxe.

Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef _IP4_NV_DATA_H_
#define _IP4_NV_DATA_H_

#include <Guid/Ip4Config2Hii.h>

#define FORMID_MAIN_FORM    1
#define FORMID_DEVICE_FORM  2

#define KEY_ENABLE        0x100
#define KEY_DHCP_ENABLE   0x101
#define KEY_LOCAL_IP      0x102
#define KEY_SUBNET_MASK   0x103
#define KEY_GATE_WAY      0x104
#define KEY_DNS           0x105
#define KEY_SAVE_CHANGES  0x106

#define IP_MIN_SIZE           7
#define IP_MAX_SIZE           15
#define IP4_STR_MAX_SIZE      16
#define ADDRESS_STR_MAX_SIZE  255
#define MAX_IP4_CONFIG_DNS    16

///
/// IP4_CONFIG2_IFR_NVDATA contains the IP4 configure
/// parameters for that NIC.
///
typedef struct {
  UINT8     Configure;                               ///< NIC configure status
  UINT8     DhcpEnable;                              ///< Static or DHCP
  CHAR16    StationAddress[IP4_STR_MAX_SIZE];        ///< IP addresses
  CHAR16    SubnetMask[IP4_STR_MAX_SIZE];            ///< Subnet address
  CHAR16    GatewayAddress[IP4_STR_MAX_SIZE];        ///< Gateway address
  CHAR16    DnsAddress[ADDRESS_STR_MAX_SIZE];        ///< DNS server address
} IP4_CONFIG2_IFR_NVDATA;

#endif
