X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=AppPkg%2FApplications%2FSockets%2FGetNameInfo%2FGetNameInfo.c;fp=AppPkg%2FApplications%2FSockets%2FGetNameInfo%2FGetNameInfo.c;h=c9292e1fa70d588025480ec1332b79b59ad0721a;hp=0000000000000000000000000000000000000000;hb=f6e5cdd5cfa100e777db38e5f7b26b7ffcf41330;hpb=3bdf9aae5f7f4c5f47fc8f807ae4409dfe3bdd58 diff --git a/AppPkg/Applications/Sockets/GetNameInfo/GetNameInfo.c b/AppPkg/Applications/Sockets/GetNameInfo/GetNameInfo.c new file mode 100644 index 0000000000..c9292e1fa7 --- /dev/null +++ b/AppPkg/Applications/Sockets/GetNameInfo/GetNameInfo.c @@ -0,0 +1,120 @@ +/** @file + Test the getnameinfo API + + Copyright (c) 2011, Intel Corporation + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include +#include +#include +#include +#include +#include + +#include + +#include + +char mBuffer[65536]; +char mHostName[256]; +char mServiceName[256]; + +/** + Test the getnameinfo API + + @param [in] Argc The number of arguments + @param [in] Argv The argument value array + + @retval 0 The application exited normally. + @retval Other An error occurred. +**/ +int +main ( + IN int Argc, + IN char **Argv + ) +{ + int AppStatus; + struct addrinfo * pAddrInfo; + char * pHostName; + struct addrinfo * pInfo; + char * pServerName; + + // + // Determine if the host name is specified + // + AppStatus = 0; + if ( 1 == Argc ) { + printf ( "%s \r\n", Argv[0]); + } + else { + // + // Translate the host name + // + pHostName = Argv[1]; + pServerName = NULL; + if ( 2 < Argc ) { + pServerName = Argv[2]; + } + AppStatus = getaddrinfo ( pHostName, + pServerName, + NULL, + &pAddrInfo ); + if ( 0 != AppStatus ) { + printf ( "ERROR - address info not found, errno: %d\r\n", AppStatus ); + } + if ( NULL == pAddrInfo ) { + printf ( "ERROR - No address info structure allocated\r\n" ); + } + else { + // + // Walk the list of names + // + pInfo = pAddrInfo; + while ( NULL != pInfo ) { + // + // Get the name info + // + AppStatus = getnameinfo ((struct sockaddr *)pInfo->ai_addr, + pInfo->ai_addrlen, + &mHostName[0], + sizeof ( mHostName ), + &mServiceName[0], + sizeof ( mServiceName ), + 0 ); + if ( 0 != AppStatus ) { + break; + } + + // + // Display this entry + // + printf ( "%s: HostName\r\n", mHostName[0]); + printf ( "%s: Service Name\r\n", &mServiceName[0]); + + // + // Set the next entry + // + pInfo = pInfo->ai_next; + } + + // + // Done with this structures + // + freeaddrinfo ( pAddrInfo ); + } + } + + // + // All done + // + return AppStatus; +}