Changeset 99404 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/Include/Library/NetLib.h
- Timestamp:
- Apr 14, 2023 3:17:44 PM (22 months ago)
- Location:
- trunk/src/VBox/Devices/EFI/FirmwareNew
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/FirmwareNew
-
Property svn:mergeinfo
changed from (toggle deleted branches)
to (toggle deleted branches)/vendor/edk2/current 103735-103757,103769-103776,129194-145445 /vendor/edk2/current 103735-103757,103769-103776,129194-156846
-
Property svn:mergeinfo
changed from (toggle deleted branches)
-
trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/Include/Library/NetLib.h
r85718 r99404 16 16 #include <Library/BaseMemoryLib.h> 17 17 18 typedef UINT32 IP4_ADDR; 19 typedef UINT32 TCP_SEQNO; 20 typedef UINT16 TCP_PORTNO; 21 22 23 #define NET_ETHER_ADDR_LEN 6 24 #define NET_IFTYPE_ETHERNET 0x01 25 26 #define NET_VLAN_TAG_LEN 4 27 #define ETHER_TYPE_VLAN 0x8100 18 typedef UINT32 IP4_ADDR; 19 typedef UINT32 TCP_SEQNO; 20 typedef UINT16 TCP_PORTNO; 21 22 #define NET_ETHER_ADDR_LEN 6 23 #define NET_IFTYPE_ETHERNET 0x01 24 25 #define NET_VLAN_TAG_LEN 4 26 #define ETHER_TYPE_VLAN 0x8100 28 27 29 28 #define EFI_IP_PROTO_UDP 0x11 … … 38 37 // The address classification 39 38 // 40 #define IP4_ADDR_CLASSA 1// Deprecated41 #define IP4_ADDR_CLASSB 2// Deprecated42 #define IP4_ADDR_CLASSC 3// Deprecated43 #define IP4_ADDR_CLASSD 44 #define IP4_ADDR_CLASSE 45 46 #define IP4_MASK_NUM 47 #define IP6_PREFIX_NUM 48 49 #define IP4_MASK_MAX 50 #define IP6_PREFIX_MAX 51 52 #define IP6_HOP_BY_HOP 53 #define IP6_DESTINATION 54 #define IP6_ROUTING 55 #define IP6_FRAGMENT 56 #define IP6_AH 57 #define IP6_ESP 58 #define IP6_NO_NEXT_HEADER 59 60 #define IP_VERSION_4 61 #define IP_VERSION_6 62 63 #define IP6_PREFIX_LENGTH 39 #define IP4_ADDR_CLASSA 1 // Deprecated 40 #define IP4_ADDR_CLASSB 2 // Deprecated 41 #define IP4_ADDR_CLASSC 3 // Deprecated 42 #define IP4_ADDR_CLASSD 4 43 #define IP4_ADDR_CLASSE 5 44 45 #define IP4_MASK_NUM 33 46 #define IP6_PREFIX_NUM 129 47 48 #define IP4_MASK_MAX 32 49 #define IP6_PREFIX_MAX 128 50 51 #define IP6_HOP_BY_HOP 0 52 #define IP6_DESTINATION 60 53 #define IP6_ROUTING 43 54 #define IP6_FRAGMENT 44 55 #define IP6_AH 51 56 #define IP6_ESP 50 57 #define IP6_NO_NEXT_HEADER 59 58 59 #define IP_VERSION_4 4 60 #define IP_VERSION_6 6 61 62 #define IP6_PREFIX_LENGTH 64 64 63 65 64 // 66 65 // DNS QTYPE values 67 66 // 68 #define DNS_TYPE_A 69 #define DNS_TYPE_NS 70 #define DNS_TYPE_CNAME 71 #define DNS_TYPE_SOA 72 #define DNS_TYPE_WKS 73 #define DNS_TYPE_PTR 74 #define DNS_TYPE_HINFO 75 #define DNS_TYPE_MINFO 76 #define DNS_TYPE_MX 77 #define DNS_TYPE_TXT 78 #define DNS_TYPE_AAAA 79 #define DNS_TYPE_SRV_RR 80 #define DNS_TYPE_AXFR 81 #define DNS_TYPE_MAILB 82 #define DNS_TYPE_ANY 67 #define DNS_TYPE_A 1 68 #define DNS_TYPE_NS 2 69 #define DNS_TYPE_CNAME 5 70 #define DNS_TYPE_SOA 6 71 #define DNS_TYPE_WKS 11 72 #define DNS_TYPE_PTR 12 73 #define DNS_TYPE_HINFO 13 74 #define DNS_TYPE_MINFO 14 75 #define DNS_TYPE_MX 15 76 #define DNS_TYPE_TXT 16 77 #define DNS_TYPE_AAAA 28 78 #define DNS_TYPE_SRV_RR 33 79 #define DNS_TYPE_AXFR 252 80 #define DNS_TYPE_MAILB 253 81 #define DNS_TYPE_ANY 255 83 82 84 83 // 85 84 // DNS QCLASS values 86 85 // 87 #define DNS_CLASS_INET 88 #define DNS_CLASS_CH 89 #define DNS_CLASS_HS 90 #define DNS_CLASS_ANY 86 #define DNS_CLASS_INET 1 87 #define DNS_CLASS_CH 3 88 #define DNS_CLASS_HS 4 89 #define DNS_CLASS_ANY 255 91 90 92 91 // … … 95 94 #define MEDIA_STATE_DETECT_TIME_INTERVAL 1000000U 96 95 97 98 96 #pragma pack(1) 99 97 … … 102 100 // 103 101 typedef struct { 104 UINT8 DstMac[NET_ETHER_ADDR_LEN];105 UINT8 SrcMac[NET_ETHER_ADDR_LEN];106 UINT16 102 UINT8 DstMac[NET_ETHER_ADDR_LEN]; 103 UINT8 SrcMac[NET_ETHER_ADDR_LEN]; 104 UINT16 EtherType; 107 105 } ETHER_HEAD; 108 106 … … 112 110 typedef union { 113 111 struct { 114 UINT16 Vid : 12;// Unique VLAN identifier (0 to 4094)115 UINT16 Cfi : 1;// Canonical Format Indicator116 UINT16 Priority : 3;// 802.1Q priority level (0 to 7)112 UINT16 Vid : 12; // Unique VLAN identifier (0 to 4094) 113 UINT16 Cfi : 1; // Canonical Format Indicator 114 UINT16 Priority : 3; // 802.1Q priority level (0 to 7) 117 115 } Bits; 118 UINT16 116 UINT16 Uint16; 119 117 } VLAN_TCI; 120 118 … … 129 127 // 130 128 typedef struct { 131 UINT8 132 UINT8 133 UINT8 134 UINT16 135 UINT16 136 UINT16 137 UINT8 138 UINT8 139 UINT16 140 IP4_ADDR 141 IP4_ADDR 129 UINT8 HeadLen : 4; 130 UINT8 Ver : 4; 131 UINT8 Tos; 132 UINT16 TotalLen; 133 UINT16 Id; 134 UINT16 Fragment; 135 UINT8 Ttl; 136 UINT8 Protocol; 137 UINT16 Checksum; 138 IP4_ADDR Src; 139 IP4_ADDR Dst; 142 140 } IP4_HEAD; 143 144 141 145 142 // … … 148 145 // 149 146 typedef struct { 150 UINT8 151 UINT8 152 UINT16 147 UINT8 Type; 148 UINT8 Code; 149 UINT16 Checksum; 153 150 } IP4_ICMP_HEAD; 154 151 155 152 typedef struct { 156 IP4_ICMP_HEAD 157 UINT32 Fourth;// 4th filed of the head, it depends on Type.158 IP4_HEAD 153 IP4_ICMP_HEAD Head; 154 UINT32 Fourth; // 4th filed of the head, it depends on Type. 155 IP4_HEAD IpHead; 159 156 } IP4_ICMP_ERROR_HEAD; 160 157 161 158 typedef struct { 162 IP4_ICMP_HEAD 163 UINT16 164 UINT16 159 IP4_ICMP_HEAD Head; 160 UINT16 Id; 161 UINT16 Seq; 165 162 } IP4_ICMP_QUERY_HEAD; 166 163 167 164 typedef struct { 168 UINT8 169 UINT8 170 UINT16 165 UINT8 Type; 166 UINT8 Code; 167 UINT16 Checksum; 171 168 } IP6_ICMP_HEAD; 172 169 173 170 typedef struct { 174 IP6_ICMP_HEAD 175 UINT32 176 EFI_IP6_HEADER 171 IP6_ICMP_HEAD Head; 172 UINT32 Fourth; 173 EFI_IP6_HEADER IpHead; 177 174 } IP6_ICMP_ERROR_HEAD; 178 175 179 176 typedef struct { 180 IP6_ICMP_HEAD 181 UINT32 177 IP6_ICMP_HEAD Head; 178 UINT32 Fourth; 182 179 } IP6_ICMP_INFORMATION_HEAD; 183 180 … … 186 183 // 187 184 typedef struct { 188 UINT16 189 UINT16 190 UINT16 191 UINT16 185 UINT16 SrcPort; 186 UINT16 DstPort; 187 UINT16 Length; 188 UINT16 Checksum; 192 189 } EFI_UDP_HEADER; 193 190 … … 196 193 // 197 194 typedef struct { 198 TCP_PORTNO 199 TCP_PORTNO 200 TCP_SEQNO 201 TCP_SEQNO 202 UINT8 203 UINT8 204 UINT8 205 UINT16 206 UINT16 207 UINT16 195 TCP_PORTNO SrcPort; 196 TCP_PORTNO DstPort; 197 TCP_SEQNO Seq; 198 TCP_SEQNO Ack; 199 UINT8 Res : 4; 200 UINT8 HeadLen : 4; 201 UINT8 Flag; 202 UINT16 Wnd; 203 UINT16 Checksum; 204 UINT16 Urg; 208 205 } TCP_HEAD; 209 206 … … 222 219 #define NTOHS(x) SwapBytes16 (x) 223 220 224 #define HTONS(x) NTOHS(x)225 #define NTOHLL(x) SwapBytes64 (x)226 #define HTONLL(x) NTOHLL(x)227 #define NTOHLLL(x) Ip6Swap128 (x)228 #define HTONLLL(x) NTOHLLL(x)221 #define HTONS(x) NTOHS(x) 222 #define NTOHLL(x) SwapBytes64 (x) 223 #define HTONLL(x) NTOHLL(x) 224 #define NTOHLLL(x) Ip6Swap128 (x) 225 #define HTONLLL(x) NTOHLLL(x) 229 226 230 227 // … … 237 234 #define IP4_IS_VALID_NETMASK(Ip) (NetGetMaskLength (Ip) != (IP4_MASK_MAX + 1)) 238 235 239 #define IP6_IS_MULTICAST(Ip6) 236 #define IP6_IS_MULTICAST(Ip6) (((Ip6)->Addr[0]) == 0xFF) 240 237 241 238 // … … 248 245 #define EFI_IP6_EQUAL(Ip1, Ip2) (CompareMem ((Ip1), (Ip2), sizeof (EFI_IPv6_ADDRESS)) == 0) 249 246 250 #define IP4_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv4_ADDRESS)))251 #define IP6_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv6_ADDRESS)))252 #define IP6_COPY_LINK_ADDRESS(Mac1, Mac2) (CopyMem ((Mac1), (Mac2), sizeof (EFI_MAC_ADDRESS)))247 #define IP4_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv4_ADDRESS))) 248 #define IP6_COPY_ADDRESS(Dest, Src) (CopyMem ((Dest), (Src), sizeof (EFI_IPv6_ADDRESS))) 249 #define IP6_COPY_LINK_ADDRESS(Mac1, Mac2) (CopyMem ((Mac1), (Mac2), sizeof (EFI_MAC_ADDRESS))) 253 250 254 251 // … … 256 253 // syslog's severity level. Don't change it. 257 254 // 258 #define NETDEBUG_LEVEL_TRACE 5259 #define NETDEBUG_LEVEL_WARNING 4260 #define NETDEBUG_LEVEL_ERROR 3255 #define NETDEBUG_LEVEL_TRACE 5 256 #define NETDEBUG_LEVEL_WARNING 4 257 #define NETDEBUG_LEVEL_ERROR 3 261 258 262 259 // … … 278 275 Module, \ 279 276 __FILE__, \ 280 __LINE__, \277 DEBUG_LINE_NUMBER, \ 281 278 NetDebugASPrint PrintArg \ 282 279 ) … … 287 284 Module, \ 288 285 __FILE__, \ 289 __LINE__, \286 DEBUG_LINE_NUMBER, \ 290 287 NetDebugASPrint PrintArg \ 291 288 ) … … 296 293 Module, \ 297 294 __FILE__, \ 298 __LINE__, \295 DEBUG_LINE_NUMBER, \ 299 296 NetDebugASPrint PrintArg \ 300 297 ) … … 312 309 "Tcp", 313 310 __FILE__, 314 __LINE__,311 DEBUG_LINE_NUMBER, 315 312 NetDebugASPrint ("State transit to %a\n", Name) 316 313 ) … … 327 324 EFIAPI 328 325 NetDebugASPrint ( 329 IN CHAR8 326 IN CHAR8 *Format, 330 327 ... 331 328 ); … … 351 348 EFIAPI 352 349 NetDebugOutput ( 353 IN UINT32 Level, 354 IN UINT8 *Module, 355 IN UINT8 *File, 356 IN UINT32 Line, 357 IN UINT8 *Message 358 ); 359 350 IN UINT32 Level, 351 IN UINT8 *Module, 352 IN UINT8 *File, 353 IN UINT32 Line, 354 IN UINT8 *Message 355 ); 360 356 361 357 /** … … 374 370 EFIAPI 375 371 NetGetMaskLength ( 376 IN IP4_ADDR 372 IN IP4_ADDR NetMask 377 373 ); 378 374 … … 406 402 EFIAPI 407 403 NetGetIpClass ( 408 IN IP4_ADDR 404 IN IP4_ADDR Addr 409 405 ); 410 406 … … 429 425 EFIAPI 430 426 NetIp4IsUnicast ( 431 IN IP4_ADDR 432 IN IP4_ADDR 427 IN IP4_ADDR Ip, 428 IN IP4_ADDR NetMask 433 429 ); 434 430 … … 452 448 EFIAPI 453 449 NetIp6IsValidUnicast ( 454 IN EFI_IPv6_ADDRESS *Ip6 455 ); 456 450 IN EFI_IPv6_ADDRESS *Ip6 451 ); 457 452 458 453 /** … … 470 465 EFIAPI 471 466 NetIp6IsUnspecifiedAddr ( 472 IN EFI_IPv6_ADDRESS 467 IN EFI_IPv6_ADDRESS *Ip6 473 468 ); 474 469 … … 487 482 EFIAPI 488 483 NetIp6IsLinkLocalAddr ( 489 IN EFI_IPv6_ADDRESS *Ip6484 IN EFI_IPv6_ADDRESS *Ip6 490 485 ); 491 486 … … 507 502 EFIAPI 508 503 NetIp6IsNetEqual ( 509 EFI_IPv6_ADDRESS *Ip1,510 EFI_IPv6_ADDRESS *Ip2,511 UINT8 PrefixLength504 EFI_IPv6_ADDRESS *Ip1, 505 EFI_IPv6_ADDRESS *Ip2, 506 UINT8 PrefixLength 512 507 ); 513 508 … … 529 524 EFIAPI 530 525 Ip6Swap128 ( 531 EFI_IPv6_ADDRESS *Ip6 532 ); 533 534 extern IP4_ADDR gIp4AllMasks[IP4_MASK_NUM]; 535 526 EFI_IPv6_ADDRESS *Ip6 527 ); 528 529 extern IP4_ADDR gIp4AllMasks[IP4_MASK_NUM]; 536 530 537 531 extern EFI_IPv4_ADDRESS mZeroIp4Addr; … … 543 537 #define NET_IS_UPPER_CASE_CHAR(Ch) (('A' <= (Ch)) && ((Ch) <= 'Z')) 544 538 545 #define TICKS_PER_MS 546 #define TICKS_PER_SECOND 547 548 #define NET_RANDOM(Seed) 539 #define TICKS_PER_MS 10000U 540 #define TICKS_PER_SECOND 10000000U 541 542 #define NET_RANDOM(Seed) ((UINT32) ((UINT32) (Seed) * 1103515245UL + 12345) % 4294967295UL) 549 543 550 544 /** … … 564 558 EFIAPI 565 559 NetGetUint32 ( 566 IN UINT8 560 IN UINT8 *Buf 567 561 ); 568 562 … … 582 576 EFIAPI 583 577 NetPutUint32 ( 584 IN OUT UINT8 585 IN UINT32 578 IN OUT UINT8 *Buf, 579 IN UINT32 Data 586 580 ); 587 581 … … 601 595 VOID 602 596 ); 603 604 597 605 598 #define NET_LIST_USER_STRUCT(Entry, Type, Field) \ … … 636 629 NET_LIST_USER_STRUCT((ListHead)->BackLink, Type, Field) 637 630 638 639 631 /** 640 632 Remove the first node entry on the list, and return the removed node entry. … … 658 650 EFIAPI 659 651 NetListRemoveHead ( 660 IN OUT LIST_ENTRY 652 IN OUT LIST_ENTRY *Head 661 653 ); 662 654 … … 682 674 EFIAPI 683 675 NetListRemoveTail ( 684 IN OUT LIST_ENTRY 676 IN OUT LIST_ENTRY *Head 685 677 ); 686 678 … … 700 692 EFIAPI 701 693 NetListInsertAfter ( 702 IN OUT LIST_ENTRY 703 IN OUT LIST_ENTRY 694 IN OUT LIST_ENTRY *PrevEntry, 695 IN OUT LIST_ENTRY *NewEntry 704 696 ); 705 697 … … 719 711 EFIAPI 720 712 NetListInsertBefore ( 721 IN OUT LIST_ENTRY 722 IN OUT LIST_ENTRY 713 IN OUT LIST_ENTRY *PostEntry, 714 IN OUT LIST_ENTRY *NewEntry 723 715 ); 724 716 … … 735 727 typedef 736 728 EFI_STATUS 737 (EFIAPI *NET_DESTROY_LINK_LIST_CALLBACK) 729 (EFIAPI *NET_DESTROY_LINK_LIST_CALLBACK)( 738 730 IN LIST_ENTRY *Entry, 739 731 IN VOID *Context OPTIONAL … … 765 757 EFIAPI 766 758 NetDestroyLinkList ( 767 IN LIST_ENTRY 768 IN NET_DESTROY_LINK_LIST_CALLBACK 769 IN VOID *Context, OPTIONAL770 OUT UINTN 759 IN LIST_ENTRY *List, 760 IN NET_DESTROY_LINK_LIST_CALLBACK CallBack, 761 IN VOID *Context OPTIONAL, 762 OUT UINTN *ListLength OPTIONAL 771 763 ); 772 764 … … 786 778 EFIAPI 787 779 NetIsInHandleBuffer ( 788 IN EFI_HANDLE 789 IN UINTN 790 IN EFI_HANDLE 780 IN EFI_HANDLE Handle, 781 IN UINTN NumberOfChildren, 782 IN EFI_HANDLE *ChildHandleBuffer OPTIONAL 791 783 ); 792 784 … … 796 788 // 797 789 typedef struct { 798 LIST_ENTRY 799 VOID 800 VOID 790 LIST_ENTRY Link; 791 VOID *Key; 792 VOID *Value; 801 793 } NET_MAP_ITEM; 802 794 803 795 typedef struct { 804 LIST_ENTRY 805 LIST_ENTRY 806 UINTN 796 LIST_ENTRY Used; 797 LIST_ENTRY Recycled; 798 UINTN Count; 807 799 } NET_MAP; 808 800 … … 826 818 EFIAPI 827 819 NetMapInit ( 828 IN OUT NET_MAP 820 IN OUT NET_MAP *Map 829 821 ); 830 822 … … 844 836 EFIAPI 845 837 NetMapClean ( 846 IN OUT NET_MAP 838 IN OUT NET_MAP *Map 847 839 ); 848 840 … … 862 854 EFIAPI 863 855 NetMapIsEmpty ( 864 IN NET_MAP 856 IN NET_MAP *Map 865 857 ); 866 858 … … 878 870 EFIAPI 879 871 NetMapGetCount ( 880 IN NET_MAP 872 IN NET_MAP *Map 881 873 ); 882 874 … … 902 894 EFIAPI 903 895 NetMapInsertHead ( 904 IN OUT NET_MAP 905 IN VOID 906 IN VOID 896 IN OUT NET_MAP *Map, 897 IN VOID *Key, 898 IN VOID *Value OPTIONAL 907 899 ); 908 900 … … 928 920 EFIAPI 929 921 NetMapInsertTail ( 930 IN OUT NET_MAP 931 IN VOID 932 IN VOID 922 IN OUT NET_MAP *Map, 923 IN VOID *Key, 924 IN VOID *Value OPTIONAL 933 925 ); 934 926 … … 951 943 EFIAPI 952 944 NetMapFindKey ( 953 IN NET_MAP 954 IN VOID 945 IN NET_MAP *Map, 946 IN VOID *Key 955 947 ); 956 948 … … 977 969 EFIAPI 978 970 NetMapRemoveItem ( 979 IN OUT NET_MAP 980 IN OUT NET_MAP_ITEM 981 OUT VOID 971 IN OUT NET_MAP *Map, 972 IN OUT NET_MAP_ITEM *Item, 973 OUT VOID **Value OPTIONAL 982 974 ); 983 975 … … 1002 994 EFIAPI 1003 995 NetMapRemoveHead ( 1004 IN OUT NET_MAP 1005 OUT VOID 996 IN OUT NET_MAP *Map, 997 OUT VOID **Value OPTIONAL 1006 998 ); 1007 999 … … 1026 1018 EFIAPI 1027 1019 NetMapRemoveTail ( 1028 IN OUT NET_MAP 1029 OUT VOID 1020 IN OUT NET_MAP *Map, 1021 OUT VOID **Value OPTIONAL 1030 1022 ); 1031 1023 1032 1024 typedef 1033 1025 EFI_STATUS 1034 (EFIAPI *NET_MAP_CALLBACK) 1026 (EFIAPI *NET_MAP_CALLBACK)( 1035 1027 IN NET_MAP *Map, 1036 1028 IN NET_MAP_ITEM *Item, … … 1060 1052 EFIAPI 1061 1053 NetMapIterate ( 1062 IN NET_MAP *Map, 1063 IN NET_MAP_CALLBACK CallBack, 1064 IN VOID *Arg OPTIONAL 1065 ); 1066 1054 IN NET_MAP *Map, 1055 IN NET_MAP_CALLBACK CallBack, 1056 IN VOID *Arg OPTIONAL 1057 ); 1067 1058 1068 1059 // 1069 1060 // Helper functions to implement driver binding and service binding protocols. 1070 1061 // 1062 1071 1063 /** 1072 1064 Create a child of the service that is identified by ServiceBindingGuid. … … 1089 1081 EFIAPI 1090 1082 NetLibCreateServiceChild ( 1091 IN EFI_HANDLE 1092 IN EFI_HANDLE 1093 IN EFI_GUID 1094 IN OUT EFI_HANDLE 1083 IN EFI_HANDLE Controller, 1084 IN EFI_HANDLE Image, 1085 IN EFI_GUID *ServiceBindingGuid, 1086 IN OUT EFI_HANDLE *ChildHandle 1095 1087 ); 1096 1088 … … 1114 1106 EFIAPI 1115 1107 NetLibDestroyServiceChild ( 1116 IN EFI_HANDLE 1117 IN EFI_HANDLE 1118 IN EFI_GUID 1119 IN EFI_HANDLE 1108 IN EFI_HANDLE Controller, 1109 IN EFI_HANDLE Image, 1110 IN EFI_GUID *ServiceBindingGuid, 1111 IN EFI_HANDLE ChildHandle 1120 1112 ); 1121 1113 … … 1139 1131 EFIAPI 1140 1132 NetLibGetSnpHandle ( 1141 IN EFI_HANDLE ServiceHandle,1142 OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL1133 IN EFI_HANDLE ServiceHandle, 1134 OUT EFI_SIMPLE_NETWORK_PROTOCOL **Snp OPTIONAL 1143 1135 ); 1144 1136 … … 1159 1151 EFIAPI 1160 1152 NetLibGetVlanId ( 1161 IN EFI_HANDLE 1153 IN EFI_HANDLE ServiceHandle 1162 1154 ); 1163 1155 … … 1179 1171 EFIAPI 1180 1172 NetLibGetVlanHandle ( 1181 IN EFI_HANDLE 1182 IN UINT16 1173 IN EFI_HANDLE ControllerHandle, 1174 IN UINT16 VlanId 1183 1175 ); 1184 1176 … … 1205 1197 EFIAPI 1206 1198 NetLibGetMacAddress ( 1207 IN EFI_HANDLE 1208 OUT EFI_MAC_ADDRESS 1209 OUT UINTN 1199 IN EFI_HANDLE ServiceHandle, 1200 OUT EFI_MAC_ADDRESS *MacAddress, 1201 OUT UINTN *AddressSize 1210 1202 ); 1211 1203 … … 1237 1229 EFIAPI 1238 1230 NetLibGetMacString ( 1239 IN EFI_HANDLE 1240 IN EFI_HANDLE ImageHandle, OPTIONAL1241 OUT CHAR16 1231 IN EFI_HANDLE ServiceHandle, 1232 IN EFI_HANDLE ImageHandle OPTIONAL, 1233 OUT CHAR16 **MacString 1242 1234 ); 1243 1235 … … 1275 1267 EFIAPI 1276 1268 NetLibDetectMedia ( 1277 IN EFI_HANDLE 1278 OUT BOOLEAN 1269 IN EFI_HANDLE ServiceHandle, 1270 OUT BOOLEAN *MediaPresent 1279 1271 ); 1280 1272 … … 1306 1298 EFIAPI 1307 1299 NetLibDetectMediaWaitTimeout ( 1308 IN EFI_HANDLE ServiceHandle, 1309 IN UINT64 Timeout, 1310 OUT EFI_STATUS *MediaState 1311 ); 1312 1300 IN EFI_HANDLE ServiceHandle, 1301 IN UINT64 Timeout, 1302 OUT EFI_STATUS *MediaState 1303 ); 1313 1304 1314 1305 /** … … 1378 1369 ); 1379 1370 1380 1381 1371 /** 1382 1372 Find the UNDI/SNP handle from controller and protocol GUID. … … 1401 1391 EFIAPI 1402 1392 NetLibGetNicHandle ( 1403 IN EFI_HANDLE 1404 IN EFI_GUID 1393 IN EFI_HANDLE Controller, 1394 IN EFI_GUID *ProtocolGuid 1405 1395 ); 1406 1396 … … 1420 1410 EFIAPI 1421 1411 NetLibDefaultUnload ( 1422 IN EFI_HANDLE 1412 IN EFI_HANDLE ImageHandle 1423 1413 ); 1424 1414 … … 1436 1426 EFIAPI 1437 1427 NetLibAsciiStrToIp4 ( 1438 IN CONST CHAR8 1439 OUT EFI_IPv4_ADDRESS 1428 IN CONST CHAR8 *String, 1429 OUT EFI_IPv4_ADDRESS *Ip4Address 1440 1430 ); 1441 1431 … … 1454 1444 EFIAPI 1455 1445 NetLibAsciiStrToIp6 ( 1456 IN CONST CHAR8 1457 OUT EFI_IPv6_ADDRESS 1446 IN CONST CHAR8 *String, 1447 OUT EFI_IPv6_ADDRESS *Ip6Address 1458 1448 ); 1459 1449 … … 1471 1461 EFIAPI 1472 1462 NetLibStrToIp4 ( 1473 IN CONST CHAR16 1474 OUT EFI_IPv4_ADDRESS 1463 IN CONST CHAR16 *String, 1464 OUT EFI_IPv4_ADDRESS *Ip4Address 1475 1465 ); 1476 1466 … … 1489 1479 EFIAPI 1490 1480 NetLibStrToIp6 ( 1491 IN CONST CHAR16 1492 OUT EFI_IPv6_ADDRESS 1481 IN CONST CHAR16 *String, 1482 OUT EFI_IPv6_ADDRESS *Ip6Address 1493 1483 ); 1494 1484 … … 1509 1499 EFIAPI 1510 1500 NetLibStrToIp6andPrefix ( 1511 IN CONST CHAR16 1512 OUT EFI_IPv6_ADDRESS 1513 OUT UINT8 1501 IN CONST CHAR16 *String, 1502 OUT EFI_IPv6_ADDRESS *Ip6Address, 1503 OUT UINT8 *PrefixLength 1514 1504 ); 1515 1505 … … 1531 1521 EFIAPI 1532 1522 NetLibIp6ToStr ( 1533 IN EFI_IPv6_ADDRESS 1534 OUT CHAR16 1535 IN UINTN 1523 IN EFI_IPv6_ADDRESS *Ip6Address, 1524 OUT CHAR16 *String, 1525 IN UINTN StringSize 1536 1526 ); 1537 1527 … … 1539 1529 // Various signatures 1540 1530 // 1541 #define NET_BUF_SIGNATURE SIGNATURE_32 ('n', 'b', 'u', 'f') 1542 #define NET_VECTOR_SIGNATURE SIGNATURE_32 ('n', 'v', 'e', 'c') 1543 #define NET_QUE_SIGNATURE SIGNATURE_32 ('n', 'b', 'q', 'u') 1544 1545 1546 #define NET_PROTO_DATA 64 // Opaque buffer for protocols 1547 #define NET_BUF_HEAD 1 // Trim or allocate space from head 1548 #define NET_BUF_TAIL 0 // Trim or allocate space from tail 1549 #define NET_VECTOR_OWN_FIRST 0x01 // We allocated the 1st block in the vector 1531 #define NET_BUF_SIGNATURE SIGNATURE_32 ('n', 'b', 'u', 'f') 1532 #define NET_VECTOR_SIGNATURE SIGNATURE_32 ('n', 'v', 'e', 'c') 1533 #define NET_QUE_SIGNATURE SIGNATURE_32 ('n', 'b', 'q', 'u') 1534 1535 #define NET_PROTO_DATA 64 // Opaque buffer for protocols 1536 #define NET_BUF_HEAD 1 // Trim or allocate space from head 1537 #define NET_BUF_TAIL 0 // Trim or allocate space from tail 1538 #define NET_VECTOR_OWN_FIRST 0x01 // We allocated the 1st block in the vector 1550 1539 1551 1540 #define NET_CHECK_SIGNATURE(PData, SIGNATURE) \ … … 1556 1545 // 1557 1546 typedef struct { 1558 UINT32 Len;// The block's length1559 UINT8 *Bulk;// The block's Data1547 UINT32 Len; // The block's length 1548 UINT8 *Bulk; // The block's Data 1560 1549 } NET_BLOCK; 1561 1550 1562 typedef VOID (EFIAPI *NET_VECTOR_EXT_FREE) 1563 1564 // 1565 // NET_VECTOR contains several blocks to hold all packet's1566 // fragments and other house-keeping stuff for sharing. It1567 // doesn't specify the where actual packet fragment begins.1551 typedef VOID (EFIAPI *NET_VECTOR_EXT_FREE)(VOID *Arg); 1552 1553 // 1554 // NET_VECTOR contains several blocks to hold all packet's 1555 // fragments and other house-keeping stuff for sharing. It 1556 // doesn't specify the where actual packet fragment begins. 1568 1557 // 1569 1558 typedef struct { 1570 UINT32 Signature;1571 INTN RefCnt;// Reference count to share NET_VECTOR.1572 NET_VECTOR_EXT_FREE Free;// external function to free NET_VECTOR1573 VOID *Arg;// opaque argument to Free1574 UINT32 Flag;// Flags, NET_VECTOR_OWN_FIRST1575 UINT32 Len;// Total length of the associated BLOCKs1576 1577 UINT32 BlockNum;1578 NET_BLOCK Block[1];1559 UINT32 Signature; 1560 INTN RefCnt; // Reference count to share NET_VECTOR. 1561 NET_VECTOR_EXT_FREE Free; // external function to free NET_VECTOR 1562 VOID *Arg; // opaque argument to Free 1563 UINT32 Flag; // Flags, NET_VECTOR_OWN_FIRST 1564 UINT32 Len; // Total length of the associated BLOCKs 1565 1566 UINT32 BlockNum; 1567 NET_BLOCK Block[1]; 1579 1568 } NET_VECTOR; 1580 1569 1581 1570 // 1582 // NET_BLOCK_OP operates on the NET_BLOCK. It specifies1583 // where the actual fragment begins and ends1571 // NET_BLOCK_OP operates on the NET_BLOCK. It specifies 1572 // where the actual fragment begins and ends 1584 1573 // 1585 1574 typedef struct { 1586 UINT8 *BlockHead;// Block's head, or the smallest valid Head1587 UINT8 *BlockTail;// Block's tail. BlockTail-BlockHead=block length1588 UINT8 *Head;// 1st byte of the data in the block1589 UINT8 *Tail;// Tail of the data in the block, Tail-Head=Size1590 UINT32 Size;// The size of the data1575 UINT8 *BlockHead; // Block's head, or the smallest valid Head 1576 UINT8 *BlockTail; // Block's tail. BlockTail-BlockHead=block length 1577 UINT8 *Head; // 1st byte of the data in the block 1578 UINT8 *Tail; // Tail of the data in the block, Tail-Head=Size 1579 UINT32 Size; // The size of the data 1591 1580 } NET_BLOCK_OP; 1592 1581 … … 1597 1586 1598 1587 // 1599 // NET_BUF is the buffer manage structure used by the1600 // network stack. Every network packet may be fragmented. The Vector points to1601 // memory blocks used by each fragment, and BlockOp1602 // specifies where each fragment begins and ends.1603 // 1604 // It also contains an opaque area for the protocol to store1605 // per-packet information. Protocol must be careful not1606 // to overwrite the members after that.1588 // NET_BUF is the buffer manage structure used by the 1589 // network stack. Every network packet may be fragmented. The Vector points to 1590 // memory blocks used by each fragment, and BlockOp 1591 // specifies where each fragment begins and ends. 1592 // 1593 // It also contains an opaque area for the protocol to store 1594 // per-packet information. Protocol must be careful not 1595 // to overwrite the members after that. 1607 1596 // 1608 1597 typedef struct { 1609 UINT32 Signature;1610 INTN RefCnt;1611 LIST_ENTRY List;// The List this NET_BUF is on1612 1613 NET_IP_HEAD Ip;// Network layer header, for fast access1614 TCP_HEAD *Tcp;// Transport layer header, for fast access1615 EFI_UDP_HEADER *Udp;// User Datagram Protocol header1616 UINT8 ProtoData [NET_PROTO_DATA]; //Protocol specific data1617 1618 NET_VECTOR *Vector;// The vector containing the packet1619 1620 UINT32 BlockOpNum;// Total number of BlockOp in the buffer1621 UINT32 TotalSize;// Total size of the actual packet1622 NET_BLOCK_OP BlockOp[1];// Specify the position of actual packet1598 UINT32 Signature; 1599 INTN RefCnt; 1600 LIST_ENTRY List; // The List this NET_BUF is on 1601 1602 NET_IP_HEAD Ip; // Network layer header, for fast access 1603 TCP_HEAD *Tcp; // Transport layer header, for fast access 1604 EFI_UDP_HEADER *Udp; // User Datagram Protocol header 1605 UINT8 ProtoData[NET_PROTO_DATA]; // Protocol specific data 1606 1607 NET_VECTOR *Vector; // The vector containing the packet 1608 1609 UINT32 BlockOpNum; // Total number of BlockOp in the buffer 1610 UINT32 TotalSize; // Total size of the actual packet 1611 NET_BLOCK_OP BlockOp[1]; // Specify the position of actual packet 1623 1612 } NET_BUF; 1624 1613 1625 1614 // 1626 // A queue of NET_BUFs. It is a thin extension of1627 // NET_BUF functions.1615 // A queue of NET_BUFs. It is a thin extension of 1616 // NET_BUF functions. 1628 1617 // 1629 1618 typedef struct { 1630 UINT32 1631 INTN 1632 LIST_ENTRY List;// The List this buffer queue is on1633 1634 LIST_ENTRY BufList;// list of queued buffers1635 UINT32 BufSize;// total length of DATA in the buffers1636 UINT32 BufNum;// total number of buffers on the chain1619 UINT32 Signature; 1620 INTN RefCnt; 1621 LIST_ENTRY List; // The List this buffer queue is on 1622 1623 LIST_ENTRY BufList; // list of queued buffers 1624 UINT32 BufSize; // total length of DATA in the buffers 1625 UINT32 BufNum; // total number of buffers on the chain 1637 1626 } NET_BUF_QUEUE; 1638 1627 … … 1642 1631 #pragma pack(1) 1643 1632 typedef struct { 1644 IP4_ADDR 1645 IP4_ADDR 1646 UINT8 1647 UINT8 1648 UINT16 1633 IP4_ADDR SrcIp; 1634 IP4_ADDR DstIp; 1635 UINT8 Reserved; 1636 UINT8 Protocol; 1637 UINT16 Len; 1649 1638 } NET_PSEUDO_HDR; 1650 1639 … … 1653 1642 EFI_IPv6_ADDRESS DstIp; 1654 1643 UINT32 Len; 1655 UINT32 Reserved :24;1656 UINT32 NextHeader :8;1644 UINT32 Reserved : 24; 1645 UINT32 NextHeader : 8; 1657 1646 } NET_IP6_PSEUDO_HDR; 1658 1647 #pragma pack() … … 1664 1653 // 1665 1654 typedef struct { 1666 UINT32 1667 UINT8 1655 UINT32 Len; 1656 UINT8 *Bulk; 1668 1657 } NET_FRAGMENT; 1669 1658 1670 #define NET_GET_REF(PData) ((PData)->RefCnt++)1671 #define NET_PUT_REF(PData) ((PData)->RefCnt--)1672 #define NETBUF_FROM_PROTODATA(Info) BASE_CR((Info), NET_BUF, ProtoData)1659 #define NET_GET_REF(PData) ((PData)->RefCnt++) 1660 #define NET_PUT_REF(PData) ((PData)->RefCnt--) 1661 #define NETBUF_FROM_PROTODATA(Info) BASE_CR((Info), NET_BUF, ProtoData) 1673 1662 1674 1663 #define NET_BUF_SHARED(Buf) \ … … 1700 1689 EFIAPI 1701 1690 NetbufAlloc ( 1702 IN UINT32 1691 IN UINT32 Len 1703 1692 ); 1704 1693 … … 1718 1707 EFIAPI 1719 1708 NetbufFree ( 1720 IN NET_BUF 1709 IN NET_BUF *Nbuf 1721 1710 ); 1722 1711 … … 1741 1730 EFIAPI 1742 1731 NetbufGetByte ( 1743 IN NET_BUF 1744 IN UINT32 1745 OUT UINT32 1732 IN NET_BUF *Nbuf, 1733 IN UINT32 Offset, 1734 OUT UINT32 *Index OPTIONAL 1746 1735 ); 1747 1736 … … 1761 1750 EFIAPI 1762 1751 NetbufClone ( 1763 IN NET_BUF 1752 IN NET_BUF *Nbuf 1764 1753 ); 1765 1754 … … 1783 1772 EFIAPI 1784 1773 NetbufDuplicate ( 1785 IN NET_BUF 1786 IN OUT NET_BUF 1787 IN UINT32 1774 IN NET_BUF *Nbuf, 1775 IN OUT NET_BUF *Duplicate OPTIONAL, 1776 IN UINT32 HeadSpace 1788 1777 ); 1789 1778 … … 1808 1797 EFIAPI 1809 1798 NetbufGetFragment ( 1810 IN NET_BUF 1811 IN UINT32 1812 IN UINT32 1813 IN UINT32 1799 IN NET_BUF *Nbuf, 1800 IN UINT32 Offset, 1801 IN UINT32 Len, 1802 IN UINT32 HeadSpace 1814 1803 ); 1815 1804 … … 1829 1818 EFIAPI 1830 1819 NetbufReserve ( 1831 IN OUT NET_BUF 1832 IN UINT32 1820 IN OUT NET_BUF *Nbuf, 1821 IN UINT32 Len 1833 1822 ); 1834 1823 … … 1845 1834 1846 1835 **/ 1847 UINT8 *1836 UINT8 * 1848 1837 EFIAPI 1849 1838 NetbufAllocSpace ( 1850 IN OUT NET_BUF 1851 IN UINT32 1852 IN BOOLEAN 1839 IN OUT NET_BUF *Nbuf, 1840 IN UINT32 Len, 1841 IN BOOLEAN FromHead 1853 1842 ); 1854 1843 … … 1868 1857 EFIAPI 1869 1858 NetbufTrim ( 1870 IN OUT NET_BUF 1871 IN UINT32 1872 IN BOOLEAN 1859 IN OUT NET_BUF *Nbuf, 1860 IN UINT32 Len, 1861 IN BOOLEAN FromHead 1873 1862 ); 1874 1863 … … 1891 1880 EFIAPI 1892 1881 NetbufCopy ( 1893 IN NET_BUF 1894 IN UINT32 1895 IN UINT32 1896 IN UINT8 1882 IN NET_BUF *Nbuf, 1883 IN UINT32 Offset, 1884 IN UINT32 Len, 1885 IN UINT8 *Dest 1897 1886 ); 1898 1887 … … 1922 1911 EFIAPI 1923 1912 NetbufFromExt ( 1924 IN NET_FRAGMENT 1925 IN UINT32 1926 IN UINT32 1927 IN UINT32 1928 IN NET_VECTOR_EXT_FREE 1929 IN VOID 1913 IN NET_FRAGMENT *ExtFragment, 1914 IN UINT32 ExtNum, 1915 IN UINT32 HeadSpace, 1916 IN UINT32 HeadLen, 1917 IN NET_VECTOR_EXT_FREE ExtFree, 1918 IN VOID *Arg OPTIONAL 1930 1919 ); 1931 1920 … … 1946 1935 EFIAPI 1947 1936 NetbufBuildExt ( 1948 IN NET_BUF 1949 IN OUT NET_FRAGMENT 1950 IN OUT UINT32 1937 IN NET_BUF *Nbuf, 1938 IN OUT NET_FRAGMENT *ExtFragment, 1939 IN OUT UINT32 *ExtNum 1951 1940 ); 1952 1941 … … 1971 1960 EFIAPI 1972 1961 NetbufFromBufList ( 1973 IN LIST_ENTRY 1974 IN UINT32 1975 IN UINT32 1976 IN NET_VECTOR_EXT_FREE 1977 IN VOID 1962 IN LIST_ENTRY *BufList, 1963 IN UINT32 HeadSpace, 1964 IN UINT32 HeaderLen, 1965 IN NET_VECTOR_EXT_FREE ExtFree, 1966 IN VOID *Arg OPTIONAL 1978 1967 ); 1979 1968 … … 1987 1976 EFIAPI 1988 1977 NetbufFreeList ( 1989 IN OUT LIST_ENTRY 1978 IN OUT LIST_ENTRY *Head 1990 1979 ); 1991 1980 … … 1999 1988 EFIAPI 2000 1989 NetbufQueInit ( 2001 IN OUT NET_BUF_QUEUE 1990 IN OUT NET_BUF_QUEUE *NbufQue 2002 1991 ); 2003 1992 … … 2028 2017 EFIAPI 2029 2018 NetbufQueFree ( 2030 IN NET_BUF_QUEUE 2019 IN NET_BUF_QUEUE *NbufQue 2031 2020 ); 2032 2021 … … 2043 2032 EFIAPI 2044 2033 NetbufQueRemove ( 2045 IN OUT NET_BUF_QUEUE 2034 IN OUT NET_BUF_QUEUE *NbufQue 2046 2035 ); 2047 2036 … … 2056 2045 EFIAPI 2057 2046 NetbufQueAppend ( 2058 IN OUT NET_BUF_QUEUE 2059 IN OUT NET_BUF 2047 IN OUT NET_BUF_QUEUE *NbufQue, 2048 IN OUT NET_BUF *Nbuf 2060 2049 ); 2061 2050 … … 2079 2068 EFIAPI 2080 2069 NetbufQueCopy ( 2081 IN NET_BUF_QUEUE 2082 IN UINT32 2083 IN UINT32 2084 OUT UINT8 2070 IN NET_BUF_QUEUE *NbufQue, 2071 IN UINT32 Offset, 2072 IN UINT32 Len, 2073 OUT UINT8 *Dest 2085 2074 ); 2086 2075 … … 2101 2090 EFIAPI 2102 2091 NetbufQueTrim ( 2103 IN OUT NET_BUF_QUEUE *NbufQue, 2104 IN UINT32 Len 2105 ); 2106 2092 IN OUT NET_BUF_QUEUE *NbufQue, 2093 IN UINT32 Len 2094 ); 2107 2095 2108 2096 /** … … 2115 2103 EFIAPI 2116 2104 NetbufQueFlush ( 2117 IN OUT NET_BUF_QUEUE 2105 IN OUT NET_BUF_QUEUE *NbufQue 2118 2106 ); 2119 2107 … … 2130 2118 EFIAPI 2131 2119 NetblockChecksum ( 2132 IN UINT8 2133 IN UINT32 2120 IN UINT8 *Bulk, 2121 IN UINT32 Len 2134 2122 ); 2135 2123 … … 2146 2134 EFIAPI 2147 2135 NetAddChecksum ( 2148 IN UINT16 2149 IN UINT16 2136 IN UINT16 Checksum1, 2137 IN UINT16 Checksum2 2150 2138 ); 2151 2139 … … 2161 2149 EFIAPI 2162 2150 NetbufChecksum ( 2163 IN NET_BUF 2151 IN NET_BUF *Nbuf 2164 2152 ); 2165 2153 … … 2180 2168 EFIAPI 2181 2169 NetPseudoHeadChecksum ( 2182 IN IP4_ADDR 2183 IN IP4_ADDR 2184 IN UINT8 2185 IN UINT16 2170 IN IP4_ADDR Src, 2171 IN IP4_ADDR Dst, 2172 IN UINT8 Proto, 2173 IN UINT16 Len 2186 2174 ); 2187 2175 … … 2202 2190 EFIAPI 2203 2191 NetIp6PseudoHeadChecksum ( 2204 IN EFI_IPv6_ADDRESS 2205 IN EFI_IPv6_ADDRESS 2206 IN UINT8 2207 IN UINT32 2192 IN EFI_IPv6_ADDRESS *Src, 2193 IN EFI_IPv6_ADDRESS *Dst, 2194 IN UINT8 NextHeader, 2195 IN UINT32 Len 2208 2196 ); 2209 2197 … … 2221 2209 VOID 2222 2210 NetIpSecNetbufFree ( 2223 NET_BUF 2211 NET_BUF *Nbuf 2224 2212 ); 2225 2213 … … 2238 2226 EFIAPI 2239 2227 NetLibGetSystemGuid ( 2240 OUT EFI_GUID 2228 OUT EFI_GUID *SystemGuid 2241 2229 ); 2242 2230 … … 2261 2249 EFIAPI 2262 2250 NetLibCreateDnsQName ( 2263 IN CHAR16 2251 IN CHAR16 *DomainName 2264 2252 ); 2265 2253
Note:
See TracChangeset
for help on using the changeset viewer.