javacommons/gcfprotocols/socket/socket/src.linux/socketlocalhostinfo.cpp
branchRCL_3
changeset 19 04becd199f91
child 23 98ccebc37403
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/gcfprotocols/socket/socket/src.linux/socketlocalhostinfo.cpp	Tue Apr 27 16:30:29 2010 +0300
@@ -0,0 +1,48 @@
+/*
+ * 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 "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;
+}