From f6e5cdd5cfa100e777db38e5f7b26b7ffcf41330 Mon Sep 17 00:00:00 2001 From: lpleahy Date: Thu, 9 Feb 2012 19:18:06 +0000 Subject: Merged socket development branch: * Add TCPv6 support to DataSink * Add TCPv6 support to DataSource * Add GetAddrInfo test application * Add GetNameInfo test application * Fixed copyright date * Completed TFTP server - now downloads files from local directory * Added ports and exit pages to web server * Made PCD values package specific Signed-off-by: lpleahy git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13003 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Applications/Sockets/GetNameInfo/GetNameInfo.c | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 AppPkg/Applications/Sockets/GetNameInfo/GetNameInfo.c (limited to 'AppPkg/Applications/Sockets/GetNameInfo/GetNameInfo.c') diff --git a/AppPkg/Applications/Sockets/GetNameInfo/GetNameInfo.c b/AppPkg/Applications/Sockets/GetNameInfo/GetNameInfo.c new file mode 100644 index 000000000..c9292e1fa --- /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; +} -- cgit v1.2.3