Changeset 26588 in vbox for trunk/src/VBox
- Timestamp:
- Feb 16, 2010 5:02:59 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 57776
- Location:
- trunk/src/VBox/Runtime
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/string/strformatrt.cpp
r26351 r26588 52 52 * - \%RTldrm - Takes a #RTLDRMOD value. 53 53 * - \%RTmac - Takes a #PCRTMAC pointer. 54 * - \%RTnaddr - Takes a #PCRTNETADDR value. 54 55 * - \%RTnaipv4 - Takes a #RTNETADDRIPV4 value. 55 56 * - \%RTnaipv6 - Takes a #PCRTNETADDRIPV6 value. … … 215 216 RTSF_IPV6, 216 217 RTSF_MAC, 218 RTSF_NETADDR, 217 219 RTSF_UUID 218 220 } RTSF; … … 266 268 { STRMEM("Tldrm"), sizeof(RTLDRMOD), 16, RTSF_INTW, 0 }, 267 269 { STRMEM("Tmac"), sizeof(PCRTMAC), 16, RTSF_MAC, 0 }, 270 { STRMEM("Tnaddr"), sizeof(PCRTNETADDR), 10, RTSF_NETADDR,0 }, 268 271 { STRMEM("Tnaipv4"), sizeof(RTNETADDRIPV4), 10, RTSF_IPV4, 0 }, 269 272 { STRMEM("Tnaipv6"), sizeof(PCRTNETADDRIPV6),16, RTSF_IPV6, 0 }, … … 316 319 RTNETADDRIPV4 Ipv4Addr; 317 320 PCRTNETADDRIPV6 pIpv6Addr; 321 PCRTNETADDR pNetAddr; 318 322 PCRTUUID pUuid; 319 323 } u; … … 532 536 } 533 537 538 case RTSF_NETADDR: 539 { 540 if (VALID_PTR(u.pNetAddr)) 541 { 542 switch (u.pNetAddr->enmType) 543 { 544 case RTNETADDRTYPE_IPV4: 545 if (u.pNetAddr->uPort == RTNETADDR_PORT_NA) 546 return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, 547 "%u.%u.%u.%u", 548 u.pNetAddr->uAddr.IPv4.au8[0], 549 u.pNetAddr->uAddr.IPv4.au8[1], 550 u.pNetAddr->uAddr.IPv4.au8[2], 551 u.pNetAddr->uAddr.IPv4.au8[3]); 552 return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, 553 "%u.%u.%u.%u:%u", 554 u.pNetAddr->uAddr.IPv4.au8[0], 555 u.pNetAddr->uAddr.IPv4.au8[1], 556 u.pNetAddr->uAddr.IPv4.au8[2], 557 u.pNetAddr->uAddr.IPv4.au8[3], 558 u.pNetAddr->uPort); 559 560 case RTNETADDRTYPE_IPV6: 561 if (u.pNetAddr->uPort == RTNETADDR_PORT_NA) 562 return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, 563 "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x", 564 u.pNetAddr->uAddr.IPv6.au8[0], 565 u.pNetAddr->uAddr.IPv6.au8[1], 566 u.pNetAddr->uAddr.IPv6.au8[2], 567 u.pNetAddr->uAddr.IPv6.au8[3], 568 u.pNetAddr->uAddr.IPv6.au8[4], 569 u.pNetAddr->uAddr.IPv6.au8[5], 570 u.pNetAddr->uAddr.IPv6.au8[6], 571 u.pNetAddr->uAddr.IPv6.au8[7], 572 u.pNetAddr->uAddr.IPv6.au8[8], 573 u.pNetAddr->uAddr.IPv6.au8[9], 574 u.pNetAddr->uAddr.IPv6.au8[10], 575 u.pNetAddr->uAddr.IPv6.au8[11], 576 u.pNetAddr->uAddr.IPv6.au8[12], 577 u.pNetAddr->uAddr.IPv6.au8[13], 578 u.pNetAddr->uAddr.IPv6.au8[14], 579 u.pNetAddr->uAddr.IPv6.au8[15]); 580 return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, 581 "%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x %u", 582 u.pNetAddr->uAddr.IPv6.au8[0], 583 u.pNetAddr->uAddr.IPv6.au8[1], 584 u.pNetAddr->uAddr.IPv6.au8[2], 585 u.pNetAddr->uAddr.IPv6.au8[3], 586 u.pNetAddr->uAddr.IPv6.au8[4], 587 u.pNetAddr->uAddr.IPv6.au8[5], 588 u.pNetAddr->uAddr.IPv6.au8[6], 589 u.pNetAddr->uAddr.IPv6.au8[7], 590 u.pNetAddr->uAddr.IPv6.au8[8], 591 u.pNetAddr->uAddr.IPv6.au8[9], 592 u.pNetAddr->uAddr.IPv6.au8[10], 593 u.pNetAddr->uAddr.IPv6.au8[11], 594 u.pNetAddr->uAddr.IPv6.au8[12], 595 u.pNetAddr->uAddr.IPv6.au8[13], 596 u.pNetAddr->uAddr.IPv6.au8[14], 597 u.pNetAddr->uAddr.IPv6.au8[15], 598 u.pNetAddr->uPort); 599 600 case RTNETADDRTYPE_MAC: 601 return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, 602 "%02x:%02x:%02x:%02x:%02x:%02x", 603 u.pNetAddr->uAddr.Mac.au8[0], 604 u.pNetAddr->uAddr.Mac.au8[1], 605 u.pNetAddr->uAddr.Mac.au8[2], 606 u.pNetAddr->uAddr.Mac.au8[3], 607 u.pNetAddr->uAddr.Mac.au8[4], 608 u.pNetAddr->uAddr.Mac.au8[5]); 609 610 default: 611 return RTStrFormat(pfnOutput, pvArgOutput, NULL, 0, 612 "unsupported-netaddr-type=%u", u.pNetAddr->enmType); 613 614 } 615 } 616 return pfnOutput(pvArgOutput, s_szNull, sizeof(s_szNull) - 1); 617 } 618 534 619 case RTSF_UUID: 535 620 { -
trunk/src/VBox/Runtime/r3/tcp.cpp
r26252 r26588 910 910 911 911 912 RTR3DECL(int) RTTcpGetPeerAddress(RTSOCKET Sock, PRTNETADDR pAddr) 913 { 914 union 915 { 916 struct sockaddr Addr; 917 struct sockaddr_in Ipv4; 918 struct sockaddr_in6 Ipv6; 919 } u; 920 #ifdef RT_OS_WINDOWS 921 int cbAddr = sizeof(u); 922 #else 923 socklen_t cbAddr = sizeof(u); 924 #endif 925 RT_ZERO(u); 926 if (!getpeername(Sock, &u.Addr, &cbAddr)) 927 { 928 /* 929 * Convert the address. 930 */ 931 if ( cbAddr == sizeof(struct sockaddr_in) 932 && u.Addr.sa_family == AF_INET) 933 { 934 RT_ZERO(*pAddr); 935 pAddr->enmType = RTNETADDRTYPE_IPV4; 936 pAddr->uPort = u.Ipv4.sin_port; 937 pAddr->uAddr.IPv4.u = u.Ipv4.sin_addr.s_addr; 938 } 939 #ifdef AF_INET6 940 else if ( cbAddr == sizeof(struct sockaddr_in6) 941 && u.Addr.sa_family == AF_INET6) 942 { 943 RT_ZERO(*pAddr); 944 pAddr->enmType = RTNETADDRTYPE_IPV6; 945 pAddr->uPort = u.Ipv6.sin6_port; 946 pAddr->uAddr.IPv6.au32[0] = u.Ipv6.sin6_addr.s6_addr32[0]; 947 pAddr->uAddr.IPv6.au32[1] = u.Ipv6.sin6_addr.s6_addr32[1]; 948 pAddr->uAddr.IPv6.au32[2] = u.Ipv6.sin6_addr.s6_addr32[2]; 949 pAddr->uAddr.IPv6.au32[3] = u.Ipv6.sin6_addr.s6_addr32[3]; 950 } 951 #endif 952 else 953 return VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED; 954 return VINF_SUCCESS; 955 } 956 return rtTcpError(); 957 } 958 959 912 960 RTR3DECL(int) RTTcpClientConnect(const char *pszAddress, uint32_t uPort, PRTSOCKET pSock) 913 961 {
Note:
See TracChangeset
for help on using the changeset viewer.