javacommons/gcfprotocols/socket/socket/src.linux/socketlocalhostinfo.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 11 May 2010 16:07:20 +0300
branchRCL_3
changeset 24 0fd27995241b
parent 19 04becd199f91
permissions -rw-r--r--
Revision: v2.1.24 Kit: 201019

/*
 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
 *
 * Contributors:
 *
 * Description:  ApnSettings.app
 *
 */
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <cstring>
#include "socketlocalhostinfo.h"
#include "logger.h"

int SocketLocalHostInfo::getLocalAddress(int aSockDesc, char *aLocalAddr, int /* aIadid */, int /* aType */)
{

    int retval;
    struct sockaddr_in saddr;
    socklen_t len = sizeof(saddr);

    if (getsockname(aSockDesc, (struct sockaddr*) &saddr, &len) == -1)
    {
        ELOG1(ESOCKET,
              "SocketServerConnectionJNI::getLocalAddress() : getlocaladdress failed : %d",
              errno);
        strcpy(aLocalAddr, "error");
        retval = -errno;
    }
    else
    {
        strcpy(aLocalAddr, inet_ntoa(saddr.sin_addr));
        retval = 0;
    }

    return 0;
}