[CA] Fix for tizen build error and CA sample for Tizen
authorkoushik.girijala <g.koushik@samsung.com>
Mon, 20 Jul 2015 09:07:56 +0000 (14:37 +0530)
committerErich Keane <erich.keane@intel.com>
Tue, 21 Jul 2015 20:12:55 +0000 (20:12 +0000)
Fix for tizen build error and fixed CA sample for Tizen for IPv6 changes

Change-Id: Idb551359c3223c0c1d26a08a8443ac6874f3ff87
Signed-off-by: koushik.girijala <g.koushik@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1755
Reviewed-by: Erich Keane <erich.keane@intel.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
resource/csdk/connectivity/inc/ifaddrs.h
resource/csdk/connectivity/samples/tizen/casample.c
resource/csdk/connectivity/src/adapter_util/ifaddrs.c
resource/csdk/connectivity/src/ip_adapter/caipserver.c
resource/csdk/connectivity/src/ip_adapter/tizen/caipnwmonitor.c

index 9cd19fe..ec2f458 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1995, 1999
- *     Berkeley Software Design, Inc.  All rights reserved.
+ *  Berkeley Software Design, Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *     BSDI ifaddrs.h,v 2.5 2000/02/23 14:51:59 dab Exp
+ *  BSDI ifaddrs.h,v 2.5 2000/02/23 14:51:59 dab Exp
  */
 
-#ifndef        _IFADDRS_H_
-#define        _IFADDRS_H_
+#ifndef _IFADDRS_H_
+#define _IFADDRS_H_
 
 struct ifaddrs {
-       struct ifaddrs  *ifa_next;
-       char            *ifa_name;
-       unsigned int     ifa_flags;
-       struct sockaddr *ifa_addr;
-       struct sockaddr *ifa_netmask;
-       struct sockaddr *ifa_dstaddr;
-       void            *ifa_data;
+    struct ifaddrs  *ifa_next;
+    char        *ifa_name;
+    unsigned int     ifa_flags;
+    struct sockaddr *ifa_addr;
+    struct sockaddr *ifa_netmask;
+    union {
+        struct sockaddr *ifu_broadaddr; /* Broadcast address of interface */
+        struct sockaddr *ifu_dstaddr;   /* Point-to-point destination address */
+    } ifa_ifu;
+    void        *ifa_data;
 };
+#define ifa_broadaddr ifa_ifu.ifu_broadaddr
+#define ifa_dstaddr ifa_ifu.ifu_dstaddr
 
 /*
  * This may have been defined in <net/if.h>.  Note that if <net/if.h> is
  * to be included it must be included before this header file.
  */
-#ifndef        ifa_broadaddr
-#define        ifa_broadaddr   ifa_dstaddr     /* broadcast address interface */
+#ifndef ifa_broadaddr
+#define ifa_broadaddr   ifa_dstaddr /* broadcast address interface */
 #endif
 
 #include <sys/cdefs.h>
index d8f80cf..4afae38 100644 (file)
@@ -515,7 +515,9 @@ void send_request()
             CADestroyToken(token);
             return;
         }
-        snprintf(requestData.payload, length, SECURE_INFO_DATA, resourceURI, g_local_secure_port);
+        snprintf((char *) requestData.payload, length, SECURE_INFO_DATA,
+                 (const char *) resourceURI, g_local_secure_port);
+        requestData.payloadSize = length;
     }
     else
     {
@@ -528,7 +530,9 @@ void send_request()
             CADestroyToken(token);
             return;
         }
-        snprintf(requestData.payload, length, NORMAL_INFO_DATA, resourceURI);
+        snprintf((char *) requestData.payload, length, NORMAL_INFO_DATA,
+                 (const char *) resourceURI);
+        requestData.payloadSize = length;
     }
     requestData.type = msgType;
 
@@ -632,22 +636,13 @@ void send_request_all()
 
     // create remote endpoint
     CAEndpoint_t *endpoint = NULL;
-    res = CACreateEndpoint(0, g_selected_nw_type, NULL, 0, &endpoint);
+    res = CACreateEndpoint(CA_IPV4, g_selected_nw_type, NULL, 0, &endpoint);
     if (CA_STATUS_OK != res)
     {
         printf("Create remote endpoint error, error code: %d\n", res);
         return;
     }
 
-    CAEndpoint_t *group = (CAEndpoint_t *) malloc(sizeof(CAEndpoint_t));
-    if (NULL == group)
-    {
-        printf("Memory allocation failed!\n");
-        CADestroyEndpoint(endpoint);
-        return;
-    }
-    group->adapter = endpoint->adapter;
-
     // create token
     CAToken_t token = NULL;
     uint8_t tokenLength = CA_MAX_TOKEN_LEN;
@@ -657,7 +652,6 @@ void send_request_all()
     {
         printf("Token generate error!!\n");
         CADestroyEndpoint(endpoint);
-        free(group);
         return;
     }
 
@@ -666,7 +660,8 @@ void send_request_all()
     CAInfo_t requestData = { 0 };
     requestData.token = token;
     requestData.tokenLength = tokenLength;
-    requestData.payload = "Temp Json Payload";
+    requestData.payload = (CAPayload_t) "TempJsonPayload";
+    requestData.payloadSize = strlen((const char *) requestData.payload);
     requestData.type = CA_MSG_NONCONFIRM;
     requestData.resourceUri = (CAURI_t)resourceURI;
 
@@ -676,11 +671,11 @@ void send_request_all()
     requestInfo.isMulticast = true;
 
     // send request
-    res = CASendRequest(group, &requestInfo);
+    res = CASendRequest(endpoint, &requestInfo);
     if (CA_STATUS_OK != res)
     {
         printf("Could not send request to all\n");
-        CADestroyToken(token);
+        CADestroyEndpoint(endpoint);
     }
     else
     {
@@ -690,7 +685,6 @@ void send_request_all()
 
     // destroy remote endpoint
     CADestroyEndpoint(endpoint);
-    free(group);
 
     printf("=============================================\n");
 }
@@ -775,7 +769,8 @@ void send_notification()
     CAInfo_t respondData = { 0 };
     respondData.token = token;
     respondData.tokenLength = tokenLength;
-    respondData.payload = "Temp Notification Data";
+    respondData.payload = (CAPayload_t) "TempNotificationData";
+    respondData.payloadSize = strlen((const char *) respondData.payload);
     respondData.type = messageType;
     respondData.resourceUri = (CAURI_t)uri;
 
@@ -1182,8 +1177,9 @@ void send_response(const CAEndpoint_t *endpoint, const CAInfo_t *info)
                 printf("Memory allocation fail\n");
                 return;
             }
-            snprintf(responseData.payload, length, SECURE_INFO_DATA, responseData.resourceUri,
-                     g_local_secure_port);
+            snprintf((char *) responseData.payload, length, SECURE_INFO_DATA,
+                     (const char *) responseData.resourceUri, g_local_secure_port);
+            responseData.payloadSize = length;
         }
         else
         {
@@ -1196,7 +1192,9 @@ void send_response(const CAEndpoint_t *endpoint, const CAInfo_t *info)
                 printf("Memory allocation fail\n");
                 return;
             }
-            snprintf(responseData.payload, length, NORMAL_INFO_DATA, responseData.resourceUri);
+            snprintf((char *) responseData.payload, length, NORMAL_INFO_DATA,
+                     (const char *) responseData.resourceUri);
+            responseData.payloadSize = length;
         }
     }
 
@@ -1229,13 +1227,13 @@ int get_secure_information(CAPayload_t payLoad)
     }
 
     char *subString = NULL;
-    if (NULL == (subString = strstr(payLoad, "\"sec\":1")))
+    if (NULL == (subString = strstr((const char *) payLoad, "\"sec\":1")))
     {
         printf("This is not secure resource\n");
         return -1;
     }
 
-    if (NULL == (subString = strstr(payLoad, "\"port\":")))
+    if (NULL == (subString = strstr((const char *) payLoad, "\"port\":")))
     {
         printf("This secure resource does not have port information\n");
         return -1;
@@ -1357,7 +1355,7 @@ void parse_coap_uri(const char* uri, addressSet_t* address, CATransportFlags_t *
     {
         printf("uri has '%s' prefix\n", COAP_PREFIX);
         startIndex = COAP_PREFIX_LEN;
-        *flags = CA_DEFAULT_FLAGS;
+        *flags = CA_IPV4;
     }
 
     // #2. copy uri for parse
index 9176a32..4d9f9e8 100644 (file)
@@ -22,6 +22,7 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+#include <net/if.h>
 #include "ifaddrs.h"
 
 #include <string.h>
@@ -35,6 +36,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <netinet/in.h>
 #include <linux/netlink.h>
 #include <linux/rtnetlink.h>
+#include <sys/ioctl.h>
 
 typedef struct NetlinkList
 {
index 404d4a8..0013ab9 100644 (file)
@@ -451,12 +451,12 @@ CAResult_t CAIPStartServer(const ca_thread_pool_t threadPool)
         NEWSOCKET(AF_INET, m4s)
     }
 
-    const char f[] = "socket summary: u6=%d, u6s=%d, u4=%d, u4s=%d, m6=%d, m6s=%d, m4=%d, m4s=%d";
-    OIC_LOG_V(DEBUG, TAG, f, caglobals.ip.u6.fd, caglobals.ip.u6s.fd,
+    OIC_LOG_V(DEBUG, TAG,
+              "socket summary: u6=%d, u6s=%d, u4=%d, u4s=%d, m6=%d, m6s=%d, m4=%d, m4s=%d",
+                             caglobals.ip.u6.fd, caglobals.ip.u6s.fd,
                              caglobals.ip.u4.fd, caglobals.ip.u4s.fd,
                              caglobals.ip.m6.fd, caglobals.ip.m6s.fd,
                              caglobals.ip.m4.fd, caglobals.ip.m4s.fd);
-    (void)f;    // eliminates release warning
 
     // create pipe for fast shutdown
     CAInitializePipe();
index 0fb68e6..90e200f 100644 (file)
@@ -36,7 +36,7 @@
 
 #define TAG "IP_MONITOR"
 
-u_arraylist_t *CAIPGetInterfaceInformation()
+u_arraylist_t *CAIPGetInterfaceInformation(int desiredIndex)
 {
     u_arraylist_t *iflist = u_arraylist_create();
     if (!iflist)