/** @file
  Routines used to operate the Ip4Dxe.

Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#pragma once

#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;
