// type and code define for ICMP protocol error\r
// from IP\r
//\r
-#define ICMP_TYPE_UNREACH 3\r
-#define ICMP_TYPE_TIMXCEED 11\r
-#define ICMP_TYPE_PARAMPROB 12\r
-#define ICMP_TYPE_SOURCEQUENCH 4\r
-\r
-#define ICMP_CODE_UNREACH_NET 0\r
-#define ICMP_CODE_UNREACH_HOST 1\r
-#define ICMP_CODE_UNREACH_PROTOCOL 2\r
-#define ICMP_CODE_UNREACH_PORT 3\r
-#define ICMP_CODE_UNREACH_NEEDFRAG 4\r
-#define ICMP_CODE_UNREACH_SRCFAIL 5\r
-#define ICMP_CODE_UNREACH_NET_UNKNOWN 6\r
-#define ICMP_CODE_UNREACH_HOST_UNKNOWN 7\r
-#define ICMP_CODE_UNREACH_ISOLATED 8\r
-#define ICMP_CODE_UNREACH_NET_PROHIB 9\r
-#define ICMP_CODE_UNREACH_HOST_PROHIB 10\r
-#define ICMP_CODE_UNREACH_TOSNET 11\r
-#define ICMP_CODE_UNREACH_TOSHOST 12\r
+#define ICMP_TYPE_UNREACH 3\r
+#define ICMP_TYPE_TIMXCEED 11\r
+#define ICMP_TYPE_PARAMPROB 12\r
+#define ICMP_TYPE_SOURCEQUENCH 4\r
+\r
+#define ICMP_CODE_UNREACH_NET 0\r
+#define ICMP_CODE_UNREACH_HOST 1\r
+#define ICMP_CODE_UNREACH_PROTOCOL 2\r
+#define ICMP_CODE_UNREACH_PORT 3\r
+#define ICMP_CODE_UNREACH_NEEDFRAG 4\r
+#define ICMP_CODE_UNREACH_SRCFAIL 5\r
+#define ICMP_CODE_UNREACH_NET_UNKNOWN 6\r
+#define ICMP_CODE_UNREACH_HOST_UNKNOWN 7\r
+#define ICMP_CODE_UNREACH_ISOLATED 8\r
+#define ICMP_CODE_UNREACH_NET_PROHIB 9\r
+#define ICMP_CODE_UNREACH_HOST_PROHIB 10\r
+#define ICMP_CODE_UNREACH_TOSNET 11\r
+#define ICMP_CODE_UNREACH_TOSHOST 12\r
\r
/**\r
Get the IP header length from the struct EFI_IP4_HEADER. HeaderLength is\r
\r
@return The IP header length.\r
**/\r
-#define EFI_IP4_HEADER_LEN(HdrPtr) ((HdrPtr)->HeaderLength << 2)\r
+#define EFI_IP4_HEADER_LEN(HdrPtr) ((HdrPtr)->HeaderLength << 2)\r
\r
/**\r
To types of ICMP error which consist of ICMP header, IP header and original\r
**/\r
#define NET_PROTO_HDR(Buf, Type) ((Type *) ((Buf)->BlockOp[0].Head))\r
\r
-\r
extern EFI_IP4_CONFIG_DATA mIp4IoDefaultIpConfigData;\r
extern EFI_IP6_CONFIG_DATA mIp6IoDefaultIpConfigData;\r
\r
-\r
///\r
/// This error will be delivered to the\r
/// listening transportation layer protocol\r
/// that consumes IpIO.\r
///\r
\r
-#define ICMP_ERR_UNREACH_NET 0\r
-#define ICMP_ERR_UNREACH_HOST 1\r
-#define ICMP_ERR_UNREACH_PROTOCOL 2\r
-#define ICMP_ERR_UNREACH_PORT 3\r
-#define ICMP_ERR_MSGSIZE 4\r
-#define ICMP_ERR_UNREACH_SRCFAIL 5\r
-#define ICMP_ERR_TIMXCEED_INTRANS 6\r
-#define ICMP_ERR_TIMXCEED_REASS 7\r
-#define ICMP_ERR_QUENCH 8\r
-#define ICMP_ERR_PARAMPROB 9\r
-\r
-#define ICMP6_ERR_UNREACH_NET 0\r
-#define ICMP6_ERR_UNREACH_HOST 1\r
-#define ICMP6_ERR_UNREACH_PROTOCOL 2\r
-#define ICMP6_ERR_UNREACH_PORT 3\r
-#define ICMP6_ERR_PACKAGE_TOOBIG 4\r
-#define ICMP6_ERR_TIMXCEED_HOPLIMIT 5\r
-#define ICMP6_ERR_TIMXCEED_REASS 6\r
-#define ICMP6_ERR_PARAMPROB_HEADER 7\r
-#define ICMP6_ERR_PARAMPROB_NEXHEADER 8\r
-#define ICMP6_ERR_PARAMPROB_IPV6OPTION 9\r
+#define ICMP_ERR_UNREACH_NET 0\r
+#define ICMP_ERR_UNREACH_HOST 1\r
+#define ICMP_ERR_UNREACH_PROTOCOL 2\r
+#define ICMP_ERR_UNREACH_PORT 3\r
+#define ICMP_ERR_MSGSIZE 4\r
+#define ICMP_ERR_UNREACH_SRCFAIL 5\r
+#define ICMP_ERR_TIMXCEED_INTRANS 6\r
+#define ICMP_ERR_TIMXCEED_REASS 7\r
+#define ICMP_ERR_QUENCH 8\r
+#define ICMP_ERR_PARAMPROB 9\r
+\r
+#define ICMP6_ERR_UNREACH_NET 0\r
+#define ICMP6_ERR_UNREACH_HOST 1\r
+#define ICMP6_ERR_UNREACH_PROTOCOL 2\r
+#define ICMP6_ERR_UNREACH_PORT 3\r
+#define ICMP6_ERR_PACKAGE_TOOBIG 4\r
+#define ICMP6_ERR_TIMXCEED_HOPLIMIT 5\r
+#define ICMP6_ERR_TIMXCEED_REASS 6\r
+#define ICMP6_ERR_PARAMPROB_HEADER 7\r
+#define ICMP6_ERR_PARAMPROB_NEXHEADER 8\r
+#define ICMP6_ERR_PARAMPROB_IPV6OPTION 9\r
\r
///\r
/// The helper struct for IpIoGetIcmpErrStatus(). It is for internal use only.\r
///\r
typedef struct {\r
- BOOLEAN IsHard;\r
- BOOLEAN Notify;\r
+ BOOLEAN IsHard;\r
+ BOOLEAN Notify;\r
} ICMP_ERROR_INFO;\r
\r
typedef union {\r
- EFI_IP4_COMPLETION_TOKEN Ip4Token;\r
- EFI_IP6_COMPLETION_TOKEN Ip6Token;\r
+ EFI_IP4_COMPLETION_TOKEN Ip4Token;\r
+ EFI_IP6_COMPLETION_TOKEN Ip6Token;\r
} IP_IO_IP_COMPLETION_TOKEN;\r
\r
typedef union {\r
- EFI_IP4_TRANSMIT_DATA Ip4TxData;\r
- EFI_IP6_TRANSMIT_DATA Ip6TxData;\r
+ EFI_IP4_TRANSMIT_DATA Ip4TxData;\r
+ EFI_IP6_TRANSMIT_DATA Ip6TxData;\r
} IP_IO_IP_TX_DATA;\r
\r
typedef union {\r
- EFI_IP4_RECEIVE_DATA Ip4RxData;\r
- EFI_IP6_RECEIVE_DATA Ip6RxData;\r
+ EFI_IP4_RECEIVE_DATA Ip4RxData;\r
+ EFI_IP6_RECEIVE_DATA Ip6RxData;\r
} IP_IO_IP_RX_DATA;\r
\r
typedef union {\r
- EFI_IP4_OVERRIDE_DATA Ip4OverrideData;\r
- EFI_IP6_OVERRIDE_DATA Ip6OverrideData;\r
+ EFI_IP4_OVERRIDE_DATA Ip4OverrideData;\r
+ EFI_IP6_OVERRIDE_DATA Ip6OverrideData;\r
} IP_IO_OVERRIDE;\r
\r
typedef union {\r
- EFI_IP4_CONFIG_DATA Ip4CfgData;\r
- EFI_IP6_CONFIG_DATA Ip6CfgData;\r
+ EFI_IP4_CONFIG_DATA Ip4CfgData;\r
+ EFI_IP6_CONFIG_DATA Ip6CfgData;\r
} IP_IO_IP_CONFIG_DATA;\r
\r
typedef union {\r
- EFI_IP4_HEADER *Ip4Hdr;\r
- EFI_IP6_HEADER *Ip6Hdr;\r
+ EFI_IP4_HEADER *Ip4Hdr;\r
+ EFI_IP6_HEADER *Ip6Hdr;\r
} IP_IO_IP_HEADER;\r
\r
typedef union {\r
- IP4_ADDR SubnetMask;\r
- UINT8 PrefixLength;\r
+ IP4_ADDR SubnetMask;\r
+ UINT8 PrefixLength;\r
} IP_IO_IP_MASK;\r
\r
typedef union {\r
- EFI_IP4_PROTOCOL *Ip4;\r
- EFI_IP6_PROTOCOL *Ip6;\r
+ EFI_IP4_PROTOCOL *Ip4;\r
+ EFI_IP6_PROTOCOL *Ip6;\r
} IP_IO_IP_PROTOCOL;\r
\r
///\r
/// The IP session for an IP receive packet.\r
///\r
typedef struct _EFI_NET_SESSION_DATA {\r
- EFI_IP_ADDRESS Source; ///< Source IP of the received packet.\r
- EFI_IP_ADDRESS Dest; ///< Destination IP of the received packet.\r
- IP_IO_IP_HEADER IpHdr; ///< IP header of the received packet.\r
- UINT32 IpHdrLen; ///< IP header length of the received packet.\r
+ EFI_IP_ADDRESS Source; ///< Source IP of the received packet.\r
+ EFI_IP_ADDRESS Dest; ///< Destination IP of the received packet.\r
+ IP_IO_IP_HEADER IpHdr; ///< IP header of the received packet.\r
+ UINT32 IpHdrLen; ///< IP header length of the received packet.\r
///< For IPv6, it includes the IP6 header\r
///< length and extension header length. For\r
///< IPv4, it includes the IP4 header length\r
///< and options length.\r
- UINT8 IpVersion; ///< The IP version of the received packet.\r
+ UINT8 IpVersion; ///< The IP version of the received packet.\r
} EFI_NET_SESSION_DATA;\r
\r
/**\r
**/\r
typedef\r
VOID\r
-(EFIAPI *PKT_RCVD_NOTIFY) (\r
+(EFIAPI *PKT_RCVD_NOTIFY)(\r
IN EFI_STATUS Status,\r
IN UINT8 IcmpErr,\r
IN EFI_NET_SESSION_DATA *NetSession,\r
**/\r
typedef\r
VOID\r
-(EFIAPI *PKT_SENT_NOTIFY) (\r
+(EFIAPI *PKT_SENT_NOTIFY)(\r
IN EFI_STATUS Status,\r
IN VOID *Context,\r
IN IP_IO_IP_PROTOCOL Sender,\r
///\r
/// The node used to link this IpIo to the active IpIo list.\r
///\r
- LIST_ENTRY Entry;\r
+ LIST_ENTRY Entry;\r
\r
///\r
/// The list used to maintain the IP instance for different sending purpose.\r
///\r
- LIST_ENTRY IpList;\r
+ LIST_ENTRY IpList;\r
\r
- EFI_HANDLE Controller;\r
- EFI_HANDLE Image;\r
- EFI_HANDLE ChildHandle;\r
+ EFI_HANDLE Controller;\r
+ EFI_HANDLE Image;\r
+ EFI_HANDLE ChildHandle;\r
//\r
// The IP instance consumed by this IP_IO\r
//\r
- IP_IO_IP_PROTOCOL Ip;\r
- BOOLEAN IsConfigured;\r
+ IP_IO_IP_PROTOCOL Ip;\r
+ BOOLEAN IsConfigured;\r
\r
///\r
/// Some ip configuration data can be changed.\r
///\r
- UINT8 Protocol;\r
+ UINT8 Protocol;\r
\r
///\r
/// Token and event used to get data from IP.\r
///\r
- IP_IO_IP_COMPLETION_TOKEN RcvToken;\r
+ IP_IO_IP_COMPLETION_TOKEN RcvToken;\r
\r
///\r
/// List entry used to link the token passed to IP_IO.\r
///\r
- LIST_ENTRY PendingSndList;\r
+ LIST_ENTRY PendingSndList;\r
\r
//\r
// User interface used to get notify from IP_IO\r
//\r
- VOID *RcvdContext; ///< See IP_IO_OPEN_DATA::RcvdContext.\r
- VOID *SndContext; ///< See IP_IO_OPEN_DATA::SndContext.\r
- PKT_RCVD_NOTIFY PktRcvdNotify; ///< See IP_IO_OPEN_DATA::PktRcvdNotify.\r
- PKT_SENT_NOTIFY PktSentNotify; ///< See IP_IO_OPEN_DATA::PktSentNotify.\r
- UINT8 IpVersion;\r
- IP4_ADDR StationIp;\r
- IP4_ADDR SubnetMask;\r
+ VOID *RcvdContext; ///< See IP_IO_OPEN_DATA::RcvdContext.\r
+ VOID *SndContext; ///< See IP_IO_OPEN_DATA::SndContext.\r
+ PKT_RCVD_NOTIFY PktRcvdNotify; ///< See IP_IO_OPEN_DATA::PktRcvdNotify.\r
+ PKT_SENT_NOTIFY PktSentNotify; ///< See IP_IO_OPEN_DATA::PktSentNotify.\r
+ UINT8 IpVersion;\r
+ IP4_ADDR StationIp;\r
+ IP4_ADDR SubnetMask;\r
} IP_IO;\r
\r
///\r
/// It is used by IpIoOpen().\r
///\r
typedef struct _IP_IO_OPEN_DATA {\r
- IP_IO_IP_CONFIG_DATA IpConfigData; ///< Configuration of the IP instance.\r
- VOID *RcvdContext; ///< Context data used by receive callback.\r
- VOID *SndContext; ///< Context data used by send callback.\r
- PKT_RCVD_NOTIFY PktRcvdNotify; ///< Receive callback.\r
- PKT_SENT_NOTIFY PktSentNotify; ///< Send callback.\r
+ IP_IO_IP_CONFIG_DATA IpConfigData; ///< Configuration of the IP instance.\r
+ VOID *RcvdContext; ///< Context data used by receive callback.\r
+ VOID *SndContext; ///< Context data used by send callback.\r
+ PKT_RCVD_NOTIFY PktRcvdNotify; ///< Receive callback.\r
+ PKT_SENT_NOTIFY PktSentNotify; ///< Send callback.\r
} IP_IO_OPEN_DATA;\r
\r
///\r
/// IP_IO via IpIoSend().\r
///\r
typedef struct _IP_IO_SEND_ENTRY {\r
- LIST_ENTRY Entry;\r
- IP_IO *IpIo;\r
- VOID *Context;\r
- VOID *NotifyData;\r
- IP_IO_IP_PROTOCOL Ip;\r
- NET_BUF *Pkt;\r
- IP_IO_IP_COMPLETION_TOKEN SndToken;\r
+ LIST_ENTRY Entry;\r
+ IP_IO *IpIo;\r
+ VOID *Context;\r
+ VOID *NotifyData;\r
+ IP_IO_IP_PROTOCOL Ip;\r
+ NET_BUF *Pkt;\r
+ IP_IO_IP_COMPLETION_TOKEN SndToken;\r
} IP_IO_SEND_ENTRY;\r
\r
///\r
/// in IP_IO.\r
///\r
typedef struct _IP_IO_IP_INFO {\r
- EFI_IP_ADDRESS Addr;\r
- IP_IO_IP_MASK PreMask;\r
- LIST_ENTRY Entry;\r
- EFI_HANDLE ChildHandle;\r
- IP_IO_IP_PROTOCOL Ip;\r
- IP_IO_IP_COMPLETION_TOKEN DummyRcvToken;\r
- INTN RefCnt;\r
- UINT8 IpVersion;\r
+ EFI_IP_ADDRESS Addr;\r
+ IP_IO_IP_MASK PreMask;\r
+ LIST_ENTRY Entry;\r
+ EFI_HANDLE ChildHandle;\r
+ IP_IO_IP_PROTOCOL Ip;\r
+ IP_IO_IP_COMPLETION_TOKEN DummyRcvToken;\r
+ INTN RefCnt;\r
+ UINT8 IpVersion;\r
} IP_IO_IP_INFO;\r
\r
/**\r
IP_IO *\r
EFIAPI\r
IpIoCreate (\r
- IN EFI_HANDLE Image,\r
- IN EFI_HANDLE Controller,\r
- IN UINT8 IpVersion\r
+ IN EFI_HANDLE Image,\r
+ IN EFI_HANDLE Controller,\r
+ IN UINT8 IpVersion\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
IpIoDestroy (\r
- IN OUT IP_IO *IpIo\r
+ IN OUT IP_IO *IpIo\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
IpIoStop (\r
- IN OUT IP_IO *IpIo\r
+ IN OUT IP_IO *IpIo\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
IpIoOpen (\r
- IN OUT IP_IO *IpIo,\r
- IN IP_IO_OPEN_DATA *OpenData\r
+ IN OUT IP_IO *IpIo,\r
+ IN IP_IO_OPEN_DATA *OpenData\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
IpIoSend (\r
- IN OUT IP_IO *IpIo,\r
- IN OUT NET_BUF *Pkt,\r
- IN IP_IO_IP_INFO *Sender OPTIONAL,\r
- IN VOID *Context OPTIONAL,\r
- IN VOID *NotifyData OPTIONAL,\r
- IN EFI_IP_ADDRESS *Dest OPTIONAL,\r
- IN IP_IO_OVERRIDE *OverrideData OPTIONAL\r
+ IN OUT IP_IO *IpIo,\r
+ IN OUT NET_BUF *Pkt,\r
+ IN IP_IO_IP_INFO *Sender OPTIONAL,\r
+ IN VOID *Context OPTIONAL,\r
+ IN VOID *NotifyData OPTIONAL,\r
+ IN EFI_IP_ADDRESS *Dest OPTIONAL,\r
+ IN IP_IO_OVERRIDE *OverrideData OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
IpIoConfigIp (\r
- IN OUT IP_IO_IP_INFO *IpInfo,\r
- IN OUT VOID *IpConfigData OPTIONAL\r
+ IN OUT IP_IO_IP_INFO *IpInfo,\r
+ IN OUT VOID *IpConfigData OPTIONAL\r
);\r
\r
/**\r
VOID\r
EFIAPI\r
IpIoRemoveIp (\r
- IN IP_IO *IpIo,\r
- IN IP_IO_IP_INFO *IpInfo\r
+ IN IP_IO *IpIo,\r
+ IN IP_IO_IP_INFO *IpInfo\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
IpIoGetIcmpErrStatus (\r
- IN UINT8 IcmpError,\r
- IN UINT8 IpVersion,\r
- OUT BOOLEAN *IsHard OPTIONAL,\r
- OUT BOOLEAN *Notify OPTIONAL\r
+ IN UINT8 IcmpError,\r
+ IN UINT8 IpVersion,\r
+ OUT BOOLEAN *IsHard OPTIONAL,\r
+ OUT BOOLEAN *Notify OPTIONAL\r
);\r
\r
/**\r
);\r
\r
#endif\r
-\r