181 IN BOOLEAN DeleteRoute,
332 mEfiIp4ProtocolTemplete = {
378 return EFI_INVALID_PARAMETER;
381 OldTpl =
gBS->RaiseTPL (TPL_CALLBACK);
382 IpInstance = IP4_INSTANCE_FROM_PROTOCOL (This);
383 IpSb = IpInstance->Service;
385 if (Ip4ModeData !=
NULL) {
390 Ip4ModeData->IsStarted = (BOOLEAN)(IpInstance->State == IP4_STATE_CONFIGED);
391 CopyMem (&Ip4ModeData->ConfigData, &IpInstance->ConfigData, sizeof (Ip4ModeData->ConfigData));
392 Ip4ModeData->IsConfigured =
FALSE;
394 Ip4ModeData->GroupCount = IpInstance->GroupCount;
397 Ip4ModeData->IcmpTypeCount = 23;
398 Ip4ModeData->IcmpTypeList = mIp4SupportedIcmp;
400 Ip4ModeData->RouteTable =
NULL;
401 Ip4ModeData->RouteCount = 0;
403 Ip4ModeData->MaxPacketSize = IpSb->MaxPacketSize;
411 if (Ip4ModeData->IsStarted) {
412 Config = &Ip4ModeData->ConfigData;
414 Ip = HTONL (IpInstance->Interface->Ip);
417 Ip = HTONL (IpInstance->Interface->SubnetMask);
420 Ip4ModeData->IsConfigured = IpInstance->Interface->Configured;
427 if (EFI_ERROR (Status)) {
428 gBS->RestoreTPL (OldTpl);
432 Ip4ModeData->RouteTable = IpInstance->EfiRouteTable;
433 Ip4ModeData->RouteCount = IpInstance->EfiRouteCount;
440 Status = IpSb->Mnp->GetModeData (IpSb->Mnp, MnpConfigData, SnpModeData);
442 gBS->RestoreTPL (OldTpl);
475 BOOLEAN PromiscReceive;
479 PromiscReceive =
FALSE;
487 NET_LIST_FOR_EACH (Entry, &IpSb->Interfaces) {
489 IpIf->PromiscRecv =
FALSE;
491 NET_LIST_FOR_EACH (ProtoEntry, &IpIf->IpInstances) {
492 IpInstance = NET_LIST_USER_STRUCT (ProtoEntry,
IP4_PROTOCOL, AddrLink);
495 IpIf->PromiscRecv =
TRUE;
496 PromiscReceive =
TRUE;
504 if (PromiscReceive == IpSb->MnpConfigData.EnablePromiscuousReceive) {
509 IpSb->MnpConfigData.EnablePromiscuousReceive = PromiscReceive;
512 Status = IpSb->Mnp->Configure (IpSb->Mnp, &IpSb->MnpConfigData);
517 if (EFI_ERROR (Status) && Reconfig) {
518 IpSb->MnpConfigData.EnablePromiscuousReceive = (BOOLEAN) !PromiscReceive;
537 ASSERT ((IpSb !=
NULL) && (IpInstance !=
NULL));
541 IpInstance->Signature = IP4_PROTOCOL_SIGNATURE;
542 CopyMem (&IpInstance->Ip4Proto, &mEfiIp4ProtocolTemplete, sizeof (IpInstance->Ip4Proto));
543 IpInstance->State = IP4_STATE_UNCONFIGED;
544 IpInstance->InDestroy =
FALSE;
545 IpInstance->Service = IpSb;
592 IpSb = IpInstance->Service;
600 if (IpInstance->State == IP4_STATE_CONFIGED) {
606 if (EFI_ERROR (Status)) {
607 return EFI_DEVICE_ERROR;
610 CopyMem (&IpInstance->ConfigData, Config, sizeof (IpInstance->ConfigData));
619 Status = EFI_OUT_OF_RESOURCES;
622 if (IpInstance->RouteTable ==
NULL) {
629 CopyMem (&Ip, &Config->StationAddress, sizeof (IP4_ADDR));
630 CopyMem (&Netmask, &Config->SubnetMask, sizeof (IP4_ADDR));
633 Netmask = NTOHL (Netmask);
635 if (!Config->UseDefaultAddress) {
654 if (EFI_ERROR (Status)) {
655 Status = EFI_DEVICE_ERROR;
667 IpInstance->RouteTable,
676 if (IpSb->State == IP4_SERVICE_UNSTARTED) {
681 Policy = IpSb->Ip4Config2Instance.Policy;
683 Ip4Config2 = &IpSb->Ip4Config2Instance.Ip4Config2;
685 Status = Ip4Config2->SetData (
691 if (EFI_ERROR (Status)) {
697 IpIf = IpSb->DefaultInterface;
698 NET_GET_REF (IpSb->DefaultInterface);
707 NET_GET_REF (IpSb->DefaultRouteTable);
708 IpInstance->RouteTable->Next = IpSb->DefaultRouteTable;
711 IpInstance->Interface = IpIf;
712 if (IpIf->Arp !=
NULL) {
714 Status =
gBS->OpenProtocol (
716 &gEfiArpProtocolGuid,
720 EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER
722 if (EFI_ERROR (Status)) {
730 CopyMem (&IpInstance->ConfigData, Config, sizeof (IpInstance->ConfigData));
731 IpInstance->State = IP4_STATE_CONFIGED;
738 if (Config->UseDefaultAddress && IP4_NO_MAPPING (IpInstance)) {
739 return EFI_NO_MAPPING;
746 IpInstance->RouteTable =
NULL;
765 return EFI_DEVICE_ERROR;
769 return EFI_DEVICE_ERROR;
780 if (IpInstance->Interface !=
NULL) {
782 if (IpInstance->Interface->Arp !=
NULL) {
784 IpInstance->Interface->ArpHandle,
785 &gEfiArpProtocolGuid,
792 IpInstance->Interface =
NULL;
795 if (IpInstance->RouteTable !=
NULL) {
796 if (IpInstance->RouteTable->Next !=
NULL) {
801 IpInstance->RouteTable =
NULL;
804 if (IpInstance->EfiRouteTable !=
NULL) {
805 FreePool (IpInstance->EfiRouteTable);
806 IpInstance->EfiRouteTable =
NULL;
807 IpInstance->EfiRouteCount = 0;
810 if (IpInstance->Groups !=
NULL) {
812 IpInstance->Groups =
NULL;
813 IpInstance->GroupCount = 0;
885 return EFI_INVALID_PARAMETER;
888 IpInstance = IP4_INSTANCE_FROM_PROTOCOL (This);
889 OldTpl =
gBS->RaiseTPL (TPL_CALLBACK);
894 if (IpConfigData !=
NULL) {
895 CopyMem (&IpAddress, &IpConfigData->StationAddress, sizeof (IP4_ADDR));
896 CopyMem (&SubnetMask, &IpConfigData->SubnetMask, sizeof (IP4_ADDR));
898 IpAddress = NTOHL (IpAddress);
899 SubnetMask = NTOHL (SubnetMask);
904 if (!IpConfigData->UseDefaultAddress) {
908 Status = EFI_INVALID_PARAMETER;
918 if (IpInstance->State == IP4_STATE_CONFIGED) {
919 Current = &IpInstance->ConfigData;
922 Status = EFI_ALREADY_STARTED;
927 (!EFI_IP4_EQUAL (&Current->
StationAddress, &IpConfigData->StationAddress) ||
928 !EFI_IP4_EQUAL (&Current->
SubnetMask, &IpConfigData->SubnetMask)))
930 Status = EFI_ALREADY_STARTED;
935 Status = EFI_NO_MAPPING;
944 if (IpConfigData !=
NULL) {
954 if (IpInstance->State == IP4_STATE_CONFIGED) {
955 IpInstance->State = IP4_STATE_UNCONFIGED;
966 gBS->RestoreTPL (OldTpl);
1005 ASSERT (GroupAddress !=
NULL);
1006 CopyMem (&Group, GroupAddress,
sizeof (IP4_ADDR));
1008 for (Index = 0; Index < IpInstance->GroupCount; Index++) {
1009 if (IpInstance->Groups[Index] == Group) {
1010 return EFI_ALREADY_STARTED;
1014 Members =
Ip4CombineGroups (IpInstance->Groups, IpInstance->GroupCount, Group);
1016 if (Members ==
NULL) {
1017 return EFI_OUT_OF_RESOURCES;
1020 if (EFI_ERROR (
Ip4JoinGroup (IpInstance, NTOHL (Group)))) {
1022 return EFI_DEVICE_ERROR;
1025 if (IpInstance->Groups !=
NULL) {
1029 IpInstance->Groups = Members;
1030 IpInstance->GroupCount++;
1040 for (Index = IpInstance->GroupCount; Index > 0; Index--) {
1041 ASSERT (IpInstance->Groups !=
NULL);
1042 Group = IpInstance->Groups[Index - 1];
1043 if ((GroupAddress ==
NULL) || EFI_IP4_EQUAL (&Group, GroupAddress)) {
1044 if (EFI_ERROR (
Ip4LeaveGroup (IpInstance, NTOHL (Group)))) {
1045 return EFI_DEVICE_ERROR;
1049 IpInstance->GroupCount--;
1051 if (IpInstance->GroupCount == 0) {
1052 ASSERT (Index == 1);
1055 IpInstance->Groups =
NULL;
1058 if (GroupAddress !=
NULL) {
1101 IN BOOLEAN JoinFlag,
1110 if ((This ==
NULL) || (JoinFlag && (GroupAddress ==
NULL))) {
1111 return EFI_INVALID_PARAMETER;
1114 if (GroupAddress !=
NULL) {
1115 CopyMem (&McastIp, GroupAddress,
sizeof (IP4_ADDR));
1117 if (!IP4_IS_MULTICAST (NTOHL (McastIp))) {
1118 return EFI_INVALID_PARAMETER;
1122 IpInstance = IP4_INSTANCE_FROM_PROTOCOL (This);
1123 OldTpl =
gBS->RaiseTPL (TPL_CALLBACK);
1125 if (IpInstance->State != IP4_STATE_CONFIGED) {
1126 Status = EFI_NOT_STARTED;
1131 Status = EFI_NO_MAPPING;
1135 Status =
Ip4Groups (IpInstance, JoinFlag, GroupAddress);
1138 gBS->RestoreTPL (OldTpl);
1196 IN BOOLEAN DeleteRoute,
1213 if ((This ==
NULL) || (SubnetAddress ==
NULL) ||
1214 (SubnetMask ==
NULL) || (GatewayAddress ==
NULL))
1216 return EFI_INVALID_PARAMETER;
1219 IpInstance = IP4_INSTANCE_FROM_PROTOCOL (This);
1220 OldTpl =
gBS->RaiseTPL (TPL_CALLBACK);
1222 if (IpInstance->State != IP4_STATE_CONFIGED) {
1223 Status = EFI_NOT_STARTED;
1228 Status = EFI_NO_MAPPING;
1232 CopyMem (&Dest, SubnetAddress,
sizeof (IP4_ADDR));
1233 CopyMem (&Netmask, SubnetMask,
sizeof (IP4_ADDR));
1234 CopyMem (&Nexthop, GatewayAddress,
sizeof (IP4_ADDR));
1236 Dest = NTOHL (Dest);
1237 Netmask = NTOHL (Netmask);
1238 Nexthop = NTOHL (Nexthop);
1240 IpIf = IpInstance->Interface;
1242 if (!IP4_IS_VALID_NETMASK (Netmask)) {
1243 Status = EFI_INVALID_PARAMETER;
1250 if ((Nexthop != IP4_ALLZERO_ADDRESS) &&
1251 (((IpIf->SubnetMask != IP4_ALLONE_ADDRESS) && !IP4_NET_EQUAL (Nexthop, IpIf->Ip, IpIf->SubnetMask)) ||
1254 Status = EFI_INVALID_PARAMETER;
1259 Status =
Ip4DelRoute (IpInstance->RouteTable, Dest, Netmask, Nexthop);
1261 Status =
Ip4AddRoute (IpInstance->RouteTable, Dest, Netmask, Nexthop);
1265 gBS->RestoreTPL (OldTpl);
1297 if ((Token == TokenInItem) || (Token->
Event == TokenInItem->
Event)) {
1298 return EFI_ACCESS_DENIED;
1331 if ((Token ==
NULL) || (Token->Event ==
NULL) || (Token->Packet.TxData ==
NULL)) {
1332 return EFI_INVALID_PARAMETER;
1335 TxData = Token->Packet.TxData;
1340 if ((TxData->TotalDataLength == 0) || (TxData->FragmentCount == 0)) {
1341 return EFI_INVALID_PARAMETER;
1344 Offset = TxData->TotalDataLength;
1346 if (Offset > IP4_MAX_PACKET_SIZE) {
1347 return EFI_BAD_BUFFER_SIZE;
1350 for (Index = 0; Index < TxData->FragmentCount; Index++) {
1351 if ((TxData->FragmentTable[Index].FragmentBuffer ==
NULL) ||
1352 (TxData->FragmentTable[Index].FragmentLength == 0))
1354 return EFI_INVALID_PARAMETER;
1357 Offset -= TxData->FragmentTable[Index].FragmentLength;
1361 return EFI_INVALID_PARAMETER;
1375 if (TxData->OptionsLength != 0) {
1376 if ((TxData->OptionsLength > 40) || (TxData->OptionsBuffer ==
NULL)) {
1377 return EFI_INVALID_PARAMETER;
1381 return EFI_INVALID_PARAMETER;
1389 if (TxData->OverrideData !=
NULL) {
1390 Override = TxData->OverrideData;
1392 CopyMem (&Src, &Override->SourceAddress, sizeof (IP4_ADDR));
1393 CopyMem (&Gateway, &Override->GatewayAddress, sizeof (IP4_ADDR));
1396 Gateway = NTOHL (Gateway);
1399 (Src == IP4_ALLONE_ADDRESS) ||
1402 return EFI_INVALID_PARAMETER;
1409 if ((Gateway != IP4_ALLZERO_ADDRESS) &&
1411 !IP4_NET_EQUAL (Gateway, IpIf->Ip, IpIf->SubnetMask) ||
1414 return EFI_INVALID_PARAMETER;
1421 HeadLen =
sizeof (
IP4_HEAD) + ((TxData->OptionsLength + 3) &~0x03);
1423 if ((HeadLen > IP4_MAX_HEADLEN) ||
1424 (TxData->TotalDataLength + HeadLen > IP4_MAX_PACKET_SIZE))
1426 return EFI_BAD_BUFFER_SIZE;
1467 if (Wrap->IpSecRecycleSignal !=
NULL) {
1468 gBS->SignalEvent (Wrap->IpSecRecycleSignal);
1475 Item =
NetMapFindKey (&Wrap->IpInstance->TxTokens, Wrap->Token);
1482 gBS->SignalEvent (Wrap->Token->
Event);
1518 ASSERT (Ip4Instance !=
NULL);
1528 Wrap->Token->
Status = IoStatus;
1580 BOOLEAN DontFragment;
1583 UINT32 OptionsLength;
1584 UINT8 *OptionsBuffer;
1585 VOID *FirstFragment;
1588 return EFI_INVALID_PARAMETER;
1591 IpInstance = IP4_INSTANCE_FROM_PROTOCOL (This);
1593 if (IpInstance->State != IP4_STATE_CONFIGED) {
1594 return EFI_NOT_STARTED;
1597 OldTpl =
gBS->RaiseTPL (TPL_CALLBACK);
1599 IpSb = IpInstance->Service;
1600 IpIf = IpInstance->Interface;
1601 Config = &IpInstance->ConfigData;
1604 Status = EFI_NO_MAPPING;
1613 if (EFI_ERROR (Status)) {
1621 Status = EFI_ACCESS_DENIED;
1629 TxData = Token->Packet.TxData;
1631 FirstFragment =
NULL;
1638 FirstFragment = TxData->FragmentTable[0].FragmentBuffer;
1639 CopyMem (&RawHdrLen, FirstFragment,
sizeof (UINT8));
1641 RawHdrLen = (UINT8)(RawHdrLen & 0x0f);
1642 if (RawHdrLen < 5) {
1643 Status = EFI_INVALID_PARAMETER;
1647 RawHdrLen = (UINT8)(RawHdrLen << 2);
1649 CopyMem (&Head, FirstFragment, IP4_MIN_HEADLEN);
1653 DontFragment = IP4_DO_NOT_FRAGMENT (Head.Fragment);
1655 if (!DontFragment) {
1656 Status = EFI_INVALID_PARAMETER;
1660 GateWay = IP4_ALLZERO_ADDRESS;
1665 if (RawHdrLen == IP4_MIN_HEADLEN) {
1667 OptionsBuffer =
NULL;
1669 OptionsLength = RawHdrLen - IP4_MIN_HEADLEN;
1670 OptionsBuffer = (UINT8 *)FirstFragment + IP4_MIN_HEADLEN;
1676 TxData->FragmentTable[0].FragmentBuffer = (UINT8 *)FirstFragment + RawHdrLen;
1677 TxData->FragmentTable[0].FragmentLength = TxData->FragmentTable[0].FragmentLength - RawHdrLen;
1679 CopyMem (&Head.Dst, &TxData->DestinationAddress, sizeof (IP4_ADDR));
1680 Head.Dst = NTOHL (Head.Dst);
1682 if (TxData->OverrideData !=
NULL) {
1683 Override = TxData->OverrideData;
1684 Head.Protocol = Override->Protocol;
1685 Head.Tos = Override->TypeOfService;
1686 Head.Ttl = Override->TimeToLive;
1687 DontFragment = Override->DoNotFragment;
1689 CopyMem (&Head.Src, &Override->SourceAddress, sizeof (IP4_ADDR));
1690 CopyMem (&GateWay, &Override->GatewayAddress, sizeof (IP4_ADDR));
1692 Head.Src = NTOHL (Head.Src);
1693 GateWay = NTOHL (GateWay);
1695 Head.Src = IpIf->Ip;
1696 GateWay = IP4_ALLZERO_ADDRESS;
1704 HeadLen = (TxData->OptionsLength + 3) & (~0x03);
1706 OptionsLength = TxData->OptionsLength;
1707 OptionsBuffer = (UINT8 *)(TxData->OptionsBuffer);
1713 if (DontFragment && (TxData->TotalDataLength + HeadLen > IpSb->MaxPacketSize)) {
1714 Status = EFI_BAD_BUFFER_SIZE;
1722 Status = EFI_OUT_OF_RESOURCES;
1728 Wrap->IpInstance = IpInstance;
1729 Wrap->Token = Token;
1734 TxData->FragmentCount,
1741 if (Wrap->Packet ==
NULL) {
1746 Token->Status = EFI_NOT_READY;
1758 TxData->FragmentTable[0].FragmentBuffer = (UINT8 *)FirstFragment;
1783 if (EFI_ERROR (Status)) {
1790 TxData->FragmentTable[0].FragmentBuffer = (UINT8 *)FirstFragment;
1800 TxData->FragmentTable[0].FragmentBuffer = (UINT8 *)FirstFragment;
1804 gBS->RestoreTPL (OldTpl);
1854 if ((This ==
NULL) || (Token ==
NULL) || (Token->Event ==
NULL)) {
1855 return EFI_INVALID_PARAMETER;
1858 IpInstance = IP4_INSTANCE_FROM_PROTOCOL (This);
1860 OldTpl =
gBS->RaiseTPL (TPL_CALLBACK);
1862 if (IpInstance->State != IP4_STATE_CONFIGED) {
1863 Status = EFI_NOT_STARTED;
1872 if (EFI_ERROR (Status)) {
1873 Status = EFI_ACCESS_DENIED;
1882 if (EFI_ERROR (Status)) {
1895 gBS->RestoreTPL (OldTpl);
1933 if ((Token !=
NULL) && (Token != Item->Key)) {
1938 ASSERT (Wrap !=
NULL);
1944 Ip4CancelPacket (Wrap->IpInstance->Interface, Wrap->Packet, EFI_ABORTED);
1950 if (Token !=
NULL) {
1985 if ((Token !=
NULL) && (Token != This)) {
1991 This->
Status = EFI_ABORTED;
1995 if (Token !=
NULL) {
2030 if (EFI_ERROR (Status)) {
2031 if ((Token !=
NULL) && (Status == EFI_ABORTED)) {
2048 if (EFI_ERROR (Status)) {
2049 if ((Token !=
NULL) && (Status == EFI_ABORTED)) {
2060 if (Token !=
NULL) {
2061 return EFI_NOT_FOUND;
2071 return EFI_DEVICE_ERROR;
2118 return EFI_INVALID_PARAMETER;
2121 IpInstance = IP4_INSTANCE_FROM_PROTOCOL (This);
2123 OldTpl =
gBS->RaiseTPL (TPL_CALLBACK);
2125 if (IpInstance->State != IP4_STATE_CONFIGED) {
2126 Status = EFI_NOT_STARTED;
2131 Status = EFI_NO_MAPPING;
2138 gBS->RestoreTPL (OldTpl);
2179 return EFI_INVALID_PARAMETER;
2182 IpInstance = IP4_INSTANCE_FROM_PROTOCOL (This);
2184 if (IpInstance->State == IP4_STATE_UNCONFIGED) {
2185 return EFI_NOT_STARTED;
2188 Mnp = IpInstance->Service->Mnp;
2194 return Mnp->Poll (Mnp);
2222 ASSERT (Wrap !=
NULL);
2224 if ((Wrap->Life > 0) && (--Wrap->Life == 0)) {
2225 Ip4CancelPacket (Wrap->IpInstance->Interface, Wrap->Packet, EFI_ABORTED);
2250 NET_CHECK_SIGNATURE (IpSb, IP4_SERVICE_SIGNATURE);
2276 BOOLEAN OldMediaPresent;
2281 NET_CHECK_SIGNATURE (IpSb, IP4_SERVICE_SIGNATURE);
2283 OldMediaPresent = IpSb->MediaPresent;
2290 Status = IpSb->Mnp->GetModeData (IpSb->Mnp,
NULL, &SnpModeData);
2291 if (EFI_ERROR (Status) && (Status != EFI_NOT_STARTED)) {
2299 if (!OldMediaPresent && IpSb->MediaPresent && (IpSb->Ip4Config2Instance.Policy ==
Ip4Config2PolicyDhcp)) {
2306 if (IpSb->ReconfigEvent !=
NULL) {
2307 Status =
gBS->SignalEvent (IpSb->ReconfigEvent);
BOOLEAN EFIAPI IsListEmpty(IN CONST LIST_ENTRY *ListHead)
LIST_ENTRY *EFIAPI RemoveEntryList(IN CONST LIST_ENTRY *Entry)
LIST_ENTRY *EFIAPI InitializeListHead(IN OUT LIST_ENTRY *ListHead)
LIST_ENTRY *EFIAPI InsertTailList(IN OUT LIST_ENTRY *ListHead, IN OUT LIST_ENTRY *Entry)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI ZeroMem(OUT VOID *Buffer, IN UINTN Length)
EFI_STATUS EFIAPI DispatchDpc(VOID)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
INTN Ip4GetNetCast(IN IP4_ADDR IpAddr, IN IP4_INTERFACE *IpIf)
IP4_HEAD * Ip4NtohHead(IN IP4_HEAD *Head)
IP4_INTERFACE * Ip4FindStationAddress(IN IP4_SERVICE *IpSb, IN IP4_ADDR Ip, IN IP4_ADDR Netmask)
BOOLEAN Ip4StationAddressValid(IN IP4_ADDR Ip, IN IP4_ADDR Netmask)
#define IP4_US_TO_SEC(Us)
#define IP4_HEAD_FRAGMENT_FIELD(Df, Mf, Offset)
@ Ip4Config2DataTypePolicy
EFI_STATUS Ip4FreeInterface(IN IP4_INTERFACE *Interface, IN IP4_PROTOCOL *IpInstance OPTIONAL)
IP4_INTERFACE * Ip4CreateInterface(IN EFI_MANAGED_NETWORK_PROTOCOL *Mnp, IN EFI_HANDLE Controller, IN EFI_HANDLE ImageHandle)
EFI_STATUS Ip4SetAddress(IN OUT IP4_INTERFACE *Interface, IN IP4_ADDR IpAddr, IN IP4_ADDR SubnetMask)
EFI_STATUS Ip4JoinGroup(IN IP4_PROTOCOL *IpInstance, IN IP4_ADDR Address)
VOID Ip4IgmpTicking(IN IP4_SERVICE *IpSb)
EFI_STATUS Ip4LeaveGroup(IN IP4_PROTOCOL *IpInstance, IN IP4_ADDR Address)
INTN Ip4RemoveGroupAddr(IN OUT IP4_ADDR *Groups, IN UINT32 Count, IN IP4_ADDR Addr)
IP4_ADDR * Ip4CombineGroups(IN IP4_ADDR *Source, IN UINT32 Count, IN IP4_ADDR Addr)
EFI_STATUS EFIAPI EfiIp4Poll(IN EFI_IP4_PROTOCOL *This)
EFI_STATUS EFIAPI EfiIp4Receive(IN EFI_IP4_PROTOCOL *This, IN EFI_IP4_COMPLETION_TOKEN *Token)
EFI_STATUS Ip4TxTokenValid(IN EFI_IP4_COMPLETION_TOKEN *Token, IN IP4_INTERFACE *IpIf, IN BOOLEAN RawData)
EFI_STATUS Ip4ServiceConfigMnp(IN IP4_SERVICE *IpSb, IN BOOLEAN Force)
VOID Ip4InitProtocol(IN IP4_SERVICE *IpSb, IN OUT IP4_PROTOCOL *IpInstance)
VOID EFIAPI Ip4FreeTxToken(IN VOID *Context)
EFI_STATUS EFIAPI Ip4CancelTxTokens(IN NET_MAP *Map, IN NET_MAP_ITEM *Item, IN VOID *Context)
VOID EFIAPI Ip4TimerTicking(IN EFI_EVENT Event, IN VOID *Context)
VOID Ip4OnPacketSent(IP4_PROTOCOL *Ip4Instance, NET_BUF *Packet, EFI_STATUS IoStatus, UINT32 Flag, VOID *Context)
EFI_STATUS EFIAPI EfiIp4Transmit(IN EFI_IP4_PROTOCOL *This, IN EFI_IP4_COMPLETION_TOKEN *Token)
EFI_STATUS Ip4Groups(IN IP4_PROTOCOL *IpInstance, IN BOOLEAN JoinFlag, IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL)
VOID EFIAPI Ip4TimerReconfigChecking(IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS EFIAPI Ip4SentPacketTicking(IN NET_MAP *Map, IN NET_MAP_ITEM *Item, IN VOID *Context)
EFI_STATUS EFIAPI Ip4CancelRxTokens(IN NET_MAP *Map, IN NET_MAP_ITEM *Item, IN VOID *Context)
EFI_STATUS EFIAPI Ip4TokenExist(IN NET_MAP *Map, IN NET_MAP_ITEM *Item, IN VOID *Context)
EFI_STATUS EFIAPI EfiIp4Routes(IN EFI_IP4_PROTOCOL *This, IN BOOLEAN DeleteRoute, IN EFI_IPv4_ADDRESS *SubnetAddress, IN EFI_IPv4_ADDRESS *SubnetMask, IN EFI_IPv4_ADDRESS *GatewayAddress)
EFI_STATUS EFIAPI EfiIp4Configure(IN EFI_IP4_PROTOCOL *This, IN EFI_IP4_CONFIG_DATA *IpConfigData OPTIONAL)
EFI_STATUS Ip4Cancel(IN IP4_PROTOCOL *IpInstance, IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL)
EFI_STATUS EFIAPI EfiIp4Cancel(IN EFI_IP4_PROTOCOL *This, IN EFI_IP4_COMPLETION_TOKEN *Token OPTIONAL)
EFI_STATUS EFIAPI EfiIp4Groups(IN EFI_IP4_PROTOCOL *This, IN BOOLEAN JoinFlag, IN EFI_IPv4_ADDRESS *GroupAddress OPTIONAL)
EFI_STATUS EFIAPI EfiIp4GetModeData(IN CONST EFI_IP4_PROTOCOL *This, OUT EFI_IP4_MODE_DATA *Ip4ModeData OPTIONAL, OUT EFI_MANAGED_NETWORK_CONFIG_DATA *MnpConfigData OPTIONAL, OUT EFI_SIMPLE_NETWORK_MODE *SnpModeData OPTIONAL)
EFI_STATUS Ip4ConfigProtocol(IN OUT IP4_PROTOCOL *IpInstance, IN EFI_IP4_CONFIG_DATA *Config)
EFI_STATUS Ip4CleanProtocol(IN IP4_PROTOCOL *IpInstance)
BOOLEAN Ip4OptionIsValid(IN UINT8 *Option, IN UINT32 OptionLen, IN BOOLEAN Rcvd)
EFI_STATUS Ip4Output(IN IP4_SERVICE *IpSb, IN IP4_PROTOCOL *IpInstance OPTIONAL, IN NET_BUF *Packet, IN IP4_HEAD *Head, IN UINT8 *Option, IN UINT32 OptLen, IN IP4_ADDR GateWay, IN IP4_FRAME_CALLBACK Callback, IN VOID *Context)
VOID Ip4CancelPacket(IN IP4_INTERFACE *IpIf, IN NET_BUF *Packet, IN EFI_STATUS IoStatus)
EFI_STATUS Ip4BuildEfiRouteTable(IN IP4_PROTOCOL *IpInstance)
EFI_STATUS Ip4DelRoute(IN OUT IP4_ROUTE_TABLE *RtTable, IN IP4_ADDR Dest, IN IP4_ADDR Netmask, IN IP4_ADDR Gateway)
IP4_ROUTE_TABLE * Ip4CreateRouteTable(VOID)
EFI_STATUS Ip4AddRoute(IN OUT IP4_ROUTE_TABLE *RtTable, IN IP4_ADDR Dest, IN IP4_ADDR Netmask, IN IP4_ADDR Gateway)
VOID Ip4FreeRouteTable(IN IP4_ROUTE_TABLE *RtTable)
VOID EFIAPI NetbufFree(IN NET_BUF *Nbuf)
VOID EFIAPI NetMapClean(IN OUT NET_MAP *Map)
NET_MAP_ITEM *EFIAPI NetMapFindKey(IN NET_MAP *Map, IN VOID *Key)
VOID EFIAPI NetMapInit(IN OUT NET_MAP *Map)
NET_BUF *EFIAPI NetbufFromExt(IN NET_FRAGMENT *ExtFragment, IN UINT32 ExtNum, IN UINT32 HeadSpace, IN UINT32 HeadLen, IN NET_VECTOR_EXT_FREE ExtFree, IN VOID *Arg OPTIONAL)
INTN EFIAPI NetGetIpClass(IN IP4_ADDR Addr)
BOOLEAN EFIAPI NetMapIsEmpty(IN NET_MAP *Map)
VOID *EFIAPI NetMapRemoveItem(IN OUT NET_MAP *Map, IN OUT NET_MAP_ITEM *Item, OUT VOID **Value OPTIONAL)
EFI_STATUS EFIAPI NetMapInsertTail(IN OUT NET_MAP *Map, IN VOID *Key, IN VOID *Value OPTIONAL)
EFI_STATUS EFIAPI NetMapIterate(IN NET_MAP *Map, IN NET_MAP_CALLBACK CallBack, IN VOID *Arg OPTIONAL)
EFI_LOCK *EFIAPI EfiInitializeLock(IN OUT EFI_LOCK *Lock, IN EFI_TPL Priority)
EFI_HANDLE DriverBindingHandle
EFI_IP4_RECEIVE_DATA * RxData
EFI_IPv4_ADDRESS SubnetMask
BOOLEAN AcceptPromiscuous
EFI_IPv4_ADDRESS StationAddress
BOOLEAN UseDefaultAddress