X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FInclude%2FLibrary%2FNetLib.h;h=c843b6ce79a0789f9957fec71da6f5fb1ca5d30d;hp=215a2fb094feff8806db67bf4a0fc6850ce8aa28;hb=36ee91ca3661d3d020a7841aacbf858d885c4728;hpb=cbf316f20726bb31b7c37424601643790dbd02d9 diff --git a/MdeModulePkg/Include/Library/NetLib.h b/MdeModulePkg/Include/Library/NetLib.h index 215a2fb094..c843b6ce79 100644 --- a/MdeModulePkg/Include/Library/NetLib.h +++ b/MdeModulePkg/Include/Library/NetLib.h @@ -28,6 +28,7 @@ Abstract: #include #include #include +#include #define EFI_NET_LITTLE_ENDIAN @@ -186,9 +187,9 @@ typedef struct { // // Convert the EFI_IP4_ADDRESS to plain UINT32 IP4 address. // -#define EFI_IP4(EfiIpAddr) (*(IP4_ADDR *) ((EfiIpAddr).Addr)) -#define EFI_NTOHL(EfiIp) (NTOHL (EFI_IP4 ((EfiIp)))) -#define EFI_IP_EQUAL(Ip1, Ip2) (EFI_IP4 (Ip1) == EFI_IP4 (Ip2)) +#define EFI_IP4(EfiIpAddr) (*(IP4_ADDR *) ((EfiIpAddr).Addr)) +#define EFI_NTOHL(EfiIp) (NTOHL (EFI_IP4 ((EfiIp)))) +#define EFI_IP4_EQUAL(Ip1, Ip2) (NetCompareMem ((Ip1), (Ip2), sizeof (EFI_IPv4_ADDRESS)) == 0) INTN NetGetMaskLength ( @@ -208,10 +209,10 @@ Ip4IsUnicast ( extern IP4_ADDR mIp4AllMasks [IP4_MASK_NUM]; -//@MT:#include EFI_PROTOCOL_CONSUMER (LoadedImage) -//@MT:#include EFI_PROTOCOL_CONSUMER (ServiceBinding) -//@MT:#include EFI_PROTOCOL_CONSUMER (SimpleNetwork) +extern EFI_IPv4_ADDRESS mZeroIp4Addr; + +#define NET_IS_DIGIT(Ch) (('0' <= (Ch)) && ((Ch) <= '9')) // // Wrap functions to ease the impact of EFI library changes. // @@ -228,16 +229,13 @@ extern IP4_ADDR mIp4AllMasks [IP4_MASK_NUM]; // to the standard EFI enviornment. It will NOT consider multiprocessor. // #define NET_TPL_LOCK TPL_CALLBACK -#define NET_TPL_RECYCLE_LOCK (NET_TPL_LOCK + 1) -#define NET_TPL_EVENT TPL_CALLBACK -#define NET_TPL_RECYCLE (NET_TPL_LOCK + 1) -#define NET_TPL_SLOW_TIMER (TPL_CALLBACK - 1) -#define NET_TPL_FAST_TIMER NET_TPL_RECYCLE -#define NET_TPL_TIMER TPL_CALLBACK +#define NET_TPL_EVENT TPL_NOTIFY +#define NET_TPL_RECYCLE TPL_NOTIFY +#define NET_TPL_TIMER NET_TPL_LOCK #define NET_LOCK EFI_LOCK #define NET_LOCK_INIT(x) EfiInitializeLock (x, NET_TPL_LOCK) -#define NET_RECYCLE_LOCK_INIT(x) EfiInitializeLock (x, NET_TPL_RECYCLE_LOCK) +#define NET_RECYCLE_LOCK_INIT(x) EfiInitializeLock (x, NET_TPL_RECYCLE) #define NET_TRYLOCK(x) EfiAcquireLockOrFail (x) #define NET_UNLOCK(x) EfiReleaseLock (x) @@ -247,9 +245,7 @@ extern IP4_ADDR mIp4AllMasks [IP4_MASK_NUM]; #define TICKS_PER_MS 10000U #define TICKS_PER_SECOND 10000000U -#define NET_MIN(a, b) ((a) < (b) ? (a) : (b)) -#define NET_MAX(a, b) ((a) > (b) ? (a) : (b)) -#define NET_RANDOM(Seed) (((Seed) * 1103515245L + 12345) % 4294967295L) +#define NET_RANDOM(Seed) ((UINT32) ((UINT32) (Seed) * 1103515245UL + 12345) % 4294967295UL) UINT32 @@ -454,7 +450,19 @@ EFI_STATUS NetLibGetMacString ( IN EFI_HANDLE SnpHandle, IN EFI_HANDLE ImageHandle, - IN OUT CONST CHAR16 **MacString + IN OUT CHAR16 **MacString + ); + +VOID +NetLibCreateIPv4DPathNode ( + IN OUT IPv4_DEVICE_PATH *Node, + IN EFI_HANDLE Controller, + IN IP4_ADDR LocalIp, + IN UINT16 LocalPort, + IN IP4_ADDR RemoteIp, + IN UINT16 RemotePort, + IN UINT16 Protocol, + IN BOOLEAN UseDefaultAddress ); EFI_HANDLE @@ -463,41 +471,24 @@ NetLibGetNicHandle ( IN EFI_GUID *ProtocolGuid ); -typedef EFI_STATUS -(EFIAPI *NET_LIB_DRIVER_UNLOAD) ( - IN EFI_HANDLE ImageHandle +NetLibQueueDpc ( + IN EFI_TPL DpcTpl, + IN EFI_DPC_PROCEDURE DpcProcedure, + IN VOID *DpcContext OPTIONAL ); EFI_STATUS -EFIAPI -NetLibDefaultUnload ( - IN EFI_HANDLE ImageHandle +NetLibDispatchDpc ( + VOID ); EFI_STATUS -NetLibInstallAllDriverProtocolsWithUnload ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable, - IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, - IN EFI_HANDLE DriverBindingHandle, - IN EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL - IN EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL - IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics, OPTIONAL - IN NET_LIB_DRIVER_UNLOAD CustomizedUnload +EFIAPI +NetLibDefaultUnload ( + IN EFI_HANDLE ImageHandle ); -EFI_STATUS -NetLibInstallAllDriverProtocols ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable, - IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, - IN EFI_HANDLE DriverBindingHandle, - IN EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL - IN EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL - IN EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics OPTIONAL - ); - enum { // //Various signatures @@ -809,4 +800,79 @@ NetPseudoHeadChecksum ( IN UINT8 Proto, IN UINT16 Len ); + +// +// The debug level definition. This value is also used as the +// syslog's servity level. Don't change it. +// +enum { + NETDEBUG_LEVEL_TRACE = 5, + NETDEBUG_LEVEL_WARNING = 4, + NETDEBUG_LEVEL_ERROR = 3, +}; + +#ifdef EFI_NETWORK_STACK_DEBUG + +// +// The debug output expects the ASCII format string, Use %a to print ASCII +// string, and %s to print UNICODE string. PrintArg must be enclosed in (). +// For example: NET_DEBUG_TRACE ("Tcp", ("State transit to %a\n", Name)); +// +#define NET_DEBUG_TRACE(Module, PrintArg) \ + NetDebugOutput ( \ + NETDEBUG_LEVEL_TRACE, \ + Module, \ + __FILE__, \ + __LINE__, \ + NetDebugASPrint PrintArg \ + ) + +#define NET_DEBUG_WARNING(Module, PrintArg) \ + NetDebugOutput ( \ + NETDEBUG_LEVEL_WARNING, \ + Module, \ + __FILE__, \ + __LINE__, \ + NetDebugASPrint PrintArg \ + ) + +#define NET_DEBUG_ERROR(Module, PrintArg) \ + NetDebugOutput ( \ + NETDEBUG_LEVEL_ERROR, \ + Module, \ + __FILE__, \ + __LINE__, \ + NetDebugASPrint PrintArg \ + ) + +#else +#define NET_DEBUG_TRACE(Module, PrintString) +#define NET_DEBUG_WARNING(Module, PrintString) +#define NET_DEBUG_ERROR(Module, PrintString) +#endif + +UINT8 * +NetDebugASPrint ( + UINT8 *Format, + ... + ); + +EFI_STATUS +NetDebugOutput ( + UINT32 Level, + UINT8 *Module, + UINT8 *File, + UINT32 Line, + UINT8 *Message + ); + +// +// Network debug message is sent out as syslog. +// +enum { + NET_SYSLOG_FACILITY = 16, // Syslog local facility local use + NET_SYSLOG_PACKET_LEN = 512, + NET_DEBUG_MSG_LEN = 470, // 512 - (ether+ip+udp head length) + NET_SYSLOG_TX_TIMEOUT = 500 *1000 *10, // 500ms +}; #endif