]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Common.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Universal / Network / Ip4Dxe / Ip4Common.h
index af01a03b007f4d2804832708ebf110978f38e81e..8fbfd548721902d67f24b6217add1b2006583c21 100644 (file)
@@ -1,14 +1,8 @@
 /** @file\r
   Common definition for IP4.\r
-  \r
-Copyright (c) 2005 - 2006, Intel Corporation.<BR>\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
 \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -19,38 +13,32 @@ typedef struct _IP4_INTERFACE  IP4_INTERFACE;
 typedef struct _IP4_PROTOCOL   IP4_PROTOCOL;\r
 typedef struct _IP4_SERVICE    IP4_SERVICE;\r
 \r
-\r
-typedef enum {\r
-  IP4_ETHER_PROTO      = 0x0800,\r
-\r
-  IP4_PROTO_ICMP       = 0x01,\r
-  IP4_PROTO_IGMP       = 0x02,\r
-\r
-  //\r
-  // The packet is received as link level broadcast/multicast/promiscuous.\r
-  //\r
-  IP4_LINK_BROADCAST   = 0x00000001,\r
-  IP4_LINK_MULTICAST   = 0x00000002,\r
-  IP4_LINK_PROMISC     = 0x00000004,\r
-\r
-  //\r
-  // IP4 address cast type classfication. Keep it true that any\r
-  // type bigger than or equal to LOCAL_BROADCAST is broadcast.\r
-  //\r
-  IP4_PROMISCUOUS      = 1,\r
-  IP4_LOCAL_HOST,\r
-  IP4_MULTICAST,\r
-  IP4_LOCAL_BROADCAST,  // Destination is 255.255.255.255\r
-  IP4_SUBNET_BROADCAST,\r
-  IP4_NET_BROADCAST,\r
-\r
-  //\r
-  // IP4 header flags\r
-  //\r
-  IP4_HEAD_DF_MASK     = 0x4000,\r
-  IP4_HEAD_MF_MASK     = 0x2000,\r
-  IP4_HEAD_OFFSET_MASK = 0x1fff\r
-} IP_ENUM_TYPES;\r
+#define IP4_ETHER_PROTO       0x0800\r
+\r
+//\r
+// The packet is received as link level broadcast/multicast/promiscuous.\r
+//\r
+#define IP4_LINK_BROADCAST    0x00000001\r
+#define IP4_LINK_MULTICAST    0x00000002\r
+#define IP4_LINK_PROMISC      0x00000004\r
+\r
+//\r
+// IP4 address cast type classfication. Keep it true that any\r
+// type bigger than or equal to LOCAL_BROADCAST is broadcast.\r
+//\r
+#define IP4_PROMISCUOUS       1\r
+#define IP4_LOCAL_HOST        2\r
+#define IP4_MULTICAST         3\r
+#define IP4_LOCAL_BROADCAST   4  // Destination is 255.255.255.255\r
+#define IP4_SUBNET_BROADCAST  5\r
+#define IP4_NET_BROADCAST     6\r
+\r
+//\r
+// IP4 header flags\r
+//\r
+#define IP4_HEAD_DF_MASK      0x4000\r
+#define IP4_HEAD_MF_MASK      0x2000\r
+#define IP4_HEAD_OFFSET_MASK  0x1fff\r
 \r
 #define IP4_ALLZERO_ADDRESS   0x00000000u\r
 #define IP4_ALLONE_ADDRESS    0xFFFFFFFFu\r
@@ -61,7 +49,7 @@ typedef enum {
 /// Compose the fragment field to be used in the IP4 header.\r
 ///\r
 #define IP4_HEAD_FRAGMENT_FIELD(Df, Mf, Offset) \\r
-    ((UINT16)(((Df) ? 0x4000 : 0) | ((Mf) ? 0x2000 : 0) | (((Offset) >> 3) & 0x1fff)))\r
+    ((UINT16)(((Df) ? IP4_HEAD_DF_MASK : 0) | ((Mf) ? IP4_HEAD_MF_MASK : 0) | (((Offset) >> 3) & IP4_HEAD_OFFSET_MASK)))\r
 \r
 #define IP4_LAST_FRAGMENT(FragmentField)  \\r
           (((FragmentField) & IP4_HEAD_MF_MASK) == 0)\r
@@ -69,6 +57,9 @@ typedef enum {
 #define IP4_FIRST_FRAGMENT(FragmentField) \\r
           ((BOOLEAN)(((FragmentField) & IP4_HEAD_OFFSET_MASK) == 0))\r
 \r
+#define IP4_DO_NOT_FRAGMENT(FragmentField) \\r
+          ((BOOLEAN)(((FragmentField) & IP4_HEAD_DF_MASK) == IP4_HEAD_DF_MASK))\r
+\r
 #define IP4_IS_BROADCAST(CastType) ((CastType) >= IP4_LOCAL_BROADCAST)\r
 \r
 ///\r
@@ -204,33 +195,23 @@ Ip4NtohHead (
   IN IP4_HEAD           *Head\r
   );\r
 \r
-/**\r
-  Set the Ip4 variable data.\r
-  \r
-  Save the list of all of the IPv4 addresses and subnet masks that are currently\r
-  being used to volatile variable storage.\r
-\r
-  @param[in]  IpSb                  Ip4 service binding instance\r
-\r
-  @retval EFI_SUCCESS           Successfully set variable.\r
-  @retval EFI_OUT_OF_RESOURCES  There are not enough resources to set the variable.\r
-  @retval other                 Set variable failed.\r
-\r
-**/\r
-EFI_STATUS\r
-Ip4SetVariableData (\r
-  IN IP4_SERVICE  *IpSb\r
-  );\r
 \r
 /**\r
-  Clear the variable and free the resource.\r
+  Validate that Ip/Netmask pair is OK to be used as station\r
+  address. Only continuous netmasks are supported. and check\r
+  that StationAddress is a unicast address on the newtwork.\r
 \r
-  @param[in]  IpSb                  Ip4 service binding instance\r
+  @param[in]  Ip                 The IP address to validate.\r
+  @param[in]  Netmask            The netmaks of the IP.\r
+\r
+  @retval TRUE                   The Ip/Netmask pair is valid.\r
+  @retval FALSE                  The Ip/Netmask pair is invalid.\r
 \r
 **/\r
-VOID\r
-Ip4ClearVariableData (\r
-  IN IP4_SERVICE  *IpSb\r
+BOOLEAN\r
+Ip4StationAddressValid (\r
+  IN IP4_ADDR               Ip,\r
+  IN IP4_ADDR               Netmask\r
   );\r
 \r
 #endif\r