[edk2-devel] [Patch v4 2/3] NetworkPkg: Add DSC/FDF include segment files to NetworkPkg.

Liming Gao posted 3 patches 6 years, 9 months ago
There is a newer version of this series
[edk2-devel] [Patch v4 2/3] NetworkPkg: Add DSC/FDF include segment files to NetworkPkg.
Posted by Liming Gao 6 years, 9 months ago
This patch provides a set of include segment files for platform owner to
easily enable/disable network stack support on their platform.

For DSC, there are:
- a "NetworkDefines.dsc.inc" for the [Defines] section(s),
- a "NetworkLibs.dsc.inc" for the [LibraryClasses*] section(s),
- a "NetworkPcds.dsc.inc" for the [Pcds*] section(s),
- a "NetworkComponents.dsc.inc" for the [Components*] section(s).
For FDF, there is:
- a "Network.fdf.inc" for the [Fv*] section(s).

These files can be added to the platform DSC/FDF file by using
  !include NetworkPkg/xxx
where "xxx" is the *.inc file name.

A platform DSC file can diverge from the defaults in
"NetworkDefines.dsc.inc" by setting the individual DEFINEs before
including "NetworkDefines.dsc.inc".
And, build command line ("-D FLAG=VALUE") can be used to enable or
disable related feature set, please check "NetworkDefines.dsc.inc"
for a detail description of each flag.

The default value of these flags are:
  DEFINE NETWORK_ENABLE                 = TRUE
  DEFINE NETWORK_SNP_ENABLE             = TRUE
  DEFINE NETWORK_IP4_ENABLE             = TRUE
  DEFINE NETWORK_IP6_ENABLE             = TRUE
  DEFINE NETWORK_TLS_ENABLE             = TRUE
  DEFINE NETWORK_HTTP_BOOT_ENABLE       = TRUE
  DEFINE NETWORK_ALLOW_HTTP_CONNECTIONS = FALSE
  DEFINE NETWORK_ISCSI_ENABLE           = TRUE
  DEFINE NETWORK_VLAN_ENABLE            = TRUE

Related BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1293

Cc: Jiaxin Wu <jiaxin.wu@intel.com>
Cc: Ting Ye <ting.ye@intel.com>
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
---
 NetworkPkg/Network.fdf.inc           |  56 +++++++++++++++++
 NetworkPkg/NetworkComponents.dsc.inc |  61 ++++++++++++++++++
 NetworkPkg/NetworkDefines.dsc.inc    | 118 +++++++++++++++++++++++++++++++++++
 NetworkPkg/NetworkLibs.dsc.inc       |  19 ++++++
 NetworkPkg/NetworkPcds.dsc.inc       |  16 +++++
 5 files changed, 270 insertions(+)
 create mode 100644 NetworkPkg/Network.fdf.inc
 create mode 100644 NetworkPkg/NetworkComponents.dsc.inc
 create mode 100644 NetworkPkg/NetworkDefines.dsc.inc
 create mode 100644 NetworkPkg/NetworkLibs.dsc.inc
 create mode 100644 NetworkPkg/NetworkPcds.dsc.inc

diff --git a/NetworkPkg/Network.fdf.inc b/NetworkPkg/Network.fdf.inc
new file mode 100644
index 0000000000..8518bad12c
--- /dev/null
+++ b/NetworkPkg/Network.fdf.inc
@@ -0,0 +1,56 @@
+## @file
+# Network FDF include file for All Architectures.
+#
+# This file can be included to a platform FDF by using "!include NetworkPkg/Network.fdf.inc"
+# to add EDKII network stack drivers according to the value of flags described in
+# "NetworkPkg/Network.dsc.inc".
+#
+# Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
+#
+#    SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+
+!if $(NETWORK_ENABLE) == TRUE
+  INF  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
+
+  !if $(NETWORK_SNP_ENABLE) == TRUE
+    INF  MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
+  !endif
+
+  !if $(NETWORK_VLAN_ENABLE) == TRUE
+    INF  MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
+  !endif
+
+  INF  MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
+
+  !if $(NETWORK_IP4_ENABLE) == TRUE
+    INF  MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
+    INF  MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf
+    INF  MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
+    INF  MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
+    INF  MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
+  !endif
+
+  !if $(NETWORK_IP6_ENABLE) == TRUE
+    INF  NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
+    INF  NetworkPkg/Ip6Dxe/Ip6Dxe.inf
+    INF  NetworkPkg/Udp6Dxe/Udp6Dxe.inf
+    INF  NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf
+  !endif
+
+  INF  NetworkPkg/TcpDxe/TcpDxe.inf
+  INF  NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf
+
+  !if $(NETWORK_TLS_ENABLE) == TRUE
+    INF  NetworkPkg/TlsDxe/TlsDxe.inf
+    INF  NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.inf
+  !endif
+
+  !if $(NETWORK_HTTP_BOOT_ENABLE) == TRUE
+    INF  NetworkPkg/DnsDxe/DnsDxe.inf
+    INF  NetworkPkg/HttpDxe/HttpDxe.inf
+    INF  NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.inf
+    INF  NetworkPkg/HttpBootDxe/HttpBootDxe.inf
+  !endif
+
+!endif
diff --git a/NetworkPkg/NetworkComponents.dsc.inc b/NetworkPkg/NetworkComponents.dsc.inc
new file mode 100644
index 0000000000..aede5ea8be
--- /dev/null
+++ b/NetworkPkg/NetworkComponents.dsc.inc
@@ -0,0 +1,61 @@
+## @file
+# Network DSC include file for [Components*] section of all Architectures.
+#
+# This file can be included to the [Components*] section(s) of a platform DSC file
+# by using "!include NetworkPkg/NetworkComponents.dsc.inc" to specify the INF files
+# of EDKII network drivers according to the value of flags described in
+# "NetworkDefines.dsc.inc".
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+#    SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+!if $(NETWORK_ENABLE) == TRUE
+  MdeModulePkg/Universal/Network/DpcDxe/DpcDxe.inf
+
+  !if $(NETWORK_SNP_ENABLE) == TRUE
+    MdeModulePkg/Universal/Network/SnpDxe/SnpDxe.inf
+  !endif
+
+  !if $(NETWORK_VLAN_ENABLE) == TRUE
+    MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe.inf
+  !endif
+
+  MdeModulePkg/Universal/Network/MnpDxe/MnpDxe.inf
+
+  !if $(NETWORK_IP4_ENABLE) == TRUE
+    MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf
+    MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf
+    MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe.inf
+    MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe.inf
+    MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe.inf
+  !endif
+
+  !if $(NETWORK_IP6_ENABLE) == TRUE
+    NetworkPkg/Dhcp6Dxe/Dhcp6Dxe.inf
+    NetworkPkg/Ip6Dxe/Ip6Dxe.inf
+    NetworkPkg/Udp6Dxe/Udp6Dxe.inf
+    NetworkPkg/Mtftp6Dxe/Mtftp6Dxe.inf
+  !endif
+
+  NetworkPkg/TcpDxe/TcpDxe.inf
+  NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe.inf
+
+  !if $(NETWORK_TLS_ENABLE) == TRUE
+    NetworkPkg/TlsDxe/TlsDxe.inf
+    NetworkPkg/TlsAuthConfigDxe/TlsAuthConfigDxe.inf
+  !endif
+
+  !if $(NETWORK_HTTP_BOOT_ENABLE) == TRUE
+    NetworkPkg/DnsDxe/DnsDxe.inf
+    NetworkPkg/HttpDxe/HttpDxe.inf
+    NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe.inf
+    NetworkPkg/HttpBootDxe/HttpBootDxe.inf
+  !endif
+
+  !if $(NETWORK_ISCSI_ENABLE) == TRUE
+    NetworkPkg/IScsiDxe/IScsiDxe.inf
+  !endif
+!endif
diff --git a/NetworkPkg/NetworkDefines.dsc.inc b/NetworkPkg/NetworkDefines.dsc.inc
new file mode 100644
index 0000000000..a442d1b157
--- /dev/null
+++ b/NetworkPkg/NetworkDefines.dsc.inc
@@ -0,0 +1,118 @@
+## @file
+# Network DSC include file for [Defines] section of all Architectures.
+#
+# This file can be included to the [Defines] section of a platform DSC file by
+# using "!include NetworkPkg/NetworkDefines.dsc.inc" to set default value of
+# flags if they are not defined somewhere else, and also check the value to see
+# if there is any conflict.
+#
+# These flags can be defined before the !include line, or changed on the command
+# line to enable or disable related feature support.
+#   -D FLAG=VALUE
+# The default value of these flags are:
+#   DEFINE NETWORK_ENABLE                 = TRUE
+#   DEFINE NETWORK_SNP_ENABLE             = TRUE
+#   DEFINE NETWORK_IP4_ENABLE             = TRUE
+#   DEFINE NETWORK_IP6_ENABLE             = TRUE
+#   DEFINE NETWORK_TLS_ENABLE             = TRUE
+#   DEFINE NETWORK_HTTP_BOOT_ENABLE       = TRUE
+#   DEFINE NETWORK_ALLOW_HTTP_CONNECTIONS = FALSE
+#   DEFINE NETWORK_ISCSI_ENABLE           = TRUE
+#   DEFINE NETWORK_VLAN_ENABLE            = TRUE
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+#    SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+!ifndef NETWORK_ENABLE
+  #
+  # This flag is to enable or disable the whole network stack.
+  #
+  DEFINE NETWORK_ENABLE = TRUE
+!endif
+
+!ifndef NETWORK_SNP_ENABLE
+  #
+  # This flag is to include the common SNP driver or not.
+  #
+  DEFINE NETWORK_SNP_ENABLE = TRUE
+!endif
+
+!ifndef NETWORK_VLAN_ENABLE
+  #
+  # This flag is to enable or disable VLAN feature.
+  #
+  DEFINE NETWORK_VLAN_ENABLE = TRUE
+!endif
+
+!ifndef NETWORK_IP4_ENABLE
+  #
+  # This flag is to enable or disable IPv4 network stack.
+  #
+  DEFINE NETWORK_IP4_ENABLE = TRUE
+!endif
+
+!ifndef NETWORK_IP6_ENABLE
+  #
+  # This flag is to enable or disable IPv6 network stack.
+  #
+  DEFINE NETWORK_IP6_ENABLE = TRUE
+!endif
+
+!ifndef NETWORK_TLS_ENABLE
+  #
+  # This flag is to enable or disable TLS feature.
+  #
+  # Note: This feature depends on the OpenSSL building. To enable this feature, please
+  #       follow the instructions found in the file "OpenSSL-HOWTO.txt" located in
+  #       CryptoPkg\Library\OpensslLib to enable the OpenSSL building first.
+  #       The OpensslLib.inf library instance should be used since libssl is required.
+  #
+  DEFINE NETWORK_TLS_ENABLE = TRUE
+!endif
+
+!ifndef NETWORK_HTTP_BOOT_ENABLE
+  #
+  # This flag is to enable or disable HTTP(S) boot feature.
+  #
+  DEFINE NETWORK_HTTP_BOOT_ENABLE = TRUE
+!endif
+
+!ifndef NETWORK_ALLOW_HTTP_CONNECTIONS
+  #
+  # Indicates whether HTTP connections (i.e., unsecured) are permitted or not.
+  #
+  # Note: If NETWORK_ALLOW_HTTP_CONNECTIONS is TRUE, HTTP connections are allowed.
+  #       Both the "https://" and "http://" URI schemes are permitted. Otherwise, HTTP
+  #       connections are denied. Only the "https://" URI scheme is permitted.
+  #
+  DEFINE NETWORK_ALLOW_HTTP_CONNECTIONS = FALSE
+!endif
+
+!ifndef NETWORK_ISCSI_ENABLE
+  #
+  # This flag is to enable or disable iSCSI feature.
+  #
+  # Note: This feature depends on the OpenSSL building. To enable this feature, please
+  #       follow the instructions found in the file "OpenSSL-HOWTO.txt" located in
+  #       CryptoPkg\Library\OpensslLib to enable the OpenSSL building first.
+  #       Both OpensslLib.inf and OpensslLibCrypto.inf library instance can be used
+  #       since libssl is not required for iSCSI.
+  #
+  DEFINE NETWORK_ISCSI_ENABLE = TRUE
+!endif
+
+!if $(NETWORK_ENABLE) == TRUE
+  #
+  # Check the flags to see if there is any conflict.
+  #
+  !if ($(NETWORK_IP4_ENABLE) == FALSE) AND ($(NETWORK_IP6_ENABLE) == FALSE)
+    !error "Must enable at least IP4 or IP6 stack if NETWORK_ENABLE is set to TRUE!"
+  !endif
+
+  !if ($(NETWORK_HTTP_BOOT_ENABLE) == TRUE) AND ($(NETWORK_TLS_ENABLE) == FALSE) AND ($(NETWORK_ALLOW_HTTP_CONNECTIONS) == FALSE)
+    !error "Must enable TLS to support HTTPS, or allow unsecured HTTP connection, if NETWORK_HTTP_BOOT_ENABLE is set to TRUE!"
+  !endif
+!endif
diff --git a/NetworkPkg/NetworkLibs.dsc.inc b/NetworkPkg/NetworkLibs.dsc.inc
new file mode 100644
index 0000000000..dac6b37c6a
--- /dev/null
+++ b/NetworkPkg/NetworkLibs.dsc.inc
@@ -0,0 +1,19 @@
+## @file
+# Network DSC include file for [LibraryClasses*] section of all Architectures.
+#
+# This file can be included to the [LibraryClasses*] section(s) of a platform DSC file
+# by using "!include NetworkPkg/NetworkLibs.dsc.inc" to specify the library instances
+# of EDKII network library classes.
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+#    SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+  DpcLib|MdeModulePkg/Library/DxeDpcLib/DxeDpcLib.inf
+  NetLib|MdeModulePkg/Library/DxeNetLib/DxeNetLib.inf
+  IpIoLib|MdeModulePkg/Library/DxeIpIoLib/DxeIpIoLib.inf
+  UdpIoLib|MdeModulePkg/Library/DxeUdpIoLib/DxeUdpIoLib.inf
+  TcpIoLib|MdeModulePkg/Library/DxeTcpIoLib/DxeTcpIoLib.inf
+  HttpLib|MdeModulePkg/Library/DxeHttpLib/DxeHttpLib.inf
diff --git a/NetworkPkg/NetworkPcds.dsc.inc b/NetworkPkg/NetworkPcds.dsc.inc
new file mode 100644
index 0000000000..f874b382ef
--- /dev/null
+++ b/NetworkPkg/NetworkPcds.dsc.inc
@@ -0,0 +1,16 @@
+## @file
+# Network DSC include file for [Pcds*] section of all Architectures.
+#
+# This file can be included to the [Pcds*] section(s) of a platform DSC file
+# by using "!include NetworkPkg/NetworkPcds.dsc.inc" to specify PCD settings
+# according to the value of flags described in "NetworkDefines.dsc.inc".
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+#    SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+##
+
+!if $(NETWORK_ALLOW_HTTP_CONNECTIONS) == TRUE
+  gEfiNetworkPkgTokenSpaceGuid.PcdAllowHttpConnections|TRUE
+!endif
-- 
2.13.0.windows.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#39781): https://edk2.groups.io/g/devel/message/39781
Mute This Topic: https://groups.io/mt/31384511/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-

Re: [edk2-devel] [Patch v4 2/3] NetworkPkg: Add DSC/FDF include segment files to NetworkPkg.
Posted by Laszlo Ersek 6 years, 9 months ago
Hi Liming,

I posted my v3 review at:

  https://edk2.groups.io/g/devel/message/39770

Let me summarize how the v4 posting relates to my v3 review:

- The current patch (v4 2/3) addresses my requests (1) and (2). Thanks
for that.

- In the v3 review, you said that you'd update the release planning
page, if the series matures in time for edk2-stable201905. That covers
my request (3), thanks.

- It seems that you missed the rest of my requests under v3, namely
points (4) through (11). Because, you neither commented on them (in the
v3 thread), nor addressed them (in the v4 posting). Did you stop reading
my v3 email at point (3)?
Please re-read my v3 review in whole, respond to each of my requests,
and address (in a v5 posting) those requests that you agree with.

Thank you,
Laszlo

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#39851): https://edk2.groups.io/g/devel/message/39851
Mute This Topic: https://groups.io/mt/31384511/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-