Add secure and port in policy
authorHabib Virji <habib.virji@samsung.com>
Thu, 24 Nov 2016 11:14:26 +0000 (11:14 +0000)
committerZiran Sun <ziran.sun@samsung.com>
Fri, 25 Nov 2016 14:59:18 +0000 (14:59 +0000)
In the collection response, add secure and port information.

Change-Id: Iaec8788bba04fa0a404dfb16ddf54a704493e65b
Signed-off-by: Habib Virji <habib.virji@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/14751
Reviewed-by: Dwarkaprasad Dayama <dwarka.dayama@samsung.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Phil Coval <philippe.coval@osg.samsung.com>
Reviewed-by: Ziran Sun <ziran.sun@samsung.com>
resource/csdk/stack/include/internal/ocresourcehandler.h
resource/csdk/stack/src/occollection.c
resource/csdk/stack/src/ocresource.c

index 60bca1b..5d2ac03 100644 (file)
@@ -186,7 +186,7 @@ void DeleteDeviceInfo();
  * Prepare payload for resource representation.
  */
 OCStackResult BuildResponseRepresentation(const OCResource *resourcePtr,
-                    OCRepPayload** payload);
+                    OCRepPayload** payload, OCDevAddr *devAddr);
 
 /**
  * A helper function that Maps an @ref OCEntityHandlerResult type to an
@@ -198,4 +198,3 @@ OCStackResult EntityHandlerCodeToOCStackCode(OCEntityHandlerResult ehResult);
 }
 #endif // __cplusplus
 #endif //OC_RESOURCEHANDLER_H
-
index f3648de..4e20bd7 100755 (executable)
@@ -247,7 +247,7 @@ HandleLinkedListInterface(OCEntityHandlerRequest *ehRequest,
         return OC_STACK_INVALID_PARAM;
     }
 
-    OCStackResult ret = BuildResponseRepresentation(collResource, &payload);
+    OCStackResult ret = BuildResponseRepresentation(collResource, &payload, &ehRequest->devAddr);
     if (ret == OC_STACK_OK)
     {
         tempChildResource = collResource->rsrcChildResourcesHead;
@@ -258,7 +258,7 @@ HandleLinkedListInterface(OCEntityHandlerRequest *ehRequest,
             {
                 //TODO : Add resource type filtering once collections
                 // start supporting queries.
-                ret = BuildResponseRepresentation(temp, &payload);
+                ret = BuildResponseRepresentation(temp, &payload, &ehRequest->devAddr);
             }
 
             tempChildResource = tempChildResource->next;
index 2bf6d8e..a987b29 100755 (executable)
@@ -339,7 +339,7 @@ exit:
 }
 
 OCStackResult BuildResponseRepresentation(const OCResource *resourcePtr,
-                    OCRepPayload** payload)
+                    OCRepPayload** payload, OCDevAddr *devAddr)
 {
     OCRepPayload *tempPayload = OCRepPayloadCreate();
 
@@ -388,9 +388,23 @@ OCStackResult BuildResponseRepresentation(const OCResource *resourcePtr,
     }
 
     OCResourceProperty p = OCGetResourceProperties((OCResourceHandle *)resourcePtr);
-    p = (OCResourceProperty) ((p & OC_DISCOVERABLE) | (p & OC_OBSERVABLE));
     OCRepPayload *policy = OCRepPayloadCreate();
-    OCRepPayloadSetPropInt(policy, OC_RSRVD_BITMAP, p);
+    if (!policy)
+    {
+        OCPayloadDestroy((OCPayload *)tempPayload);
+        return OC_STACK_NO_MEMORY;
+    }
+    OCRepPayloadSetPropInt(policy, OC_RSRVD_BITMAP, ((p & OC_DISCOVERABLE) | (p & OC_OBSERVABLE)));
+    if (p & OC_SECURE)
+    {
+        OCRepPayloadSetPropBool(policy, OC_RSRVD_SECURE, p & OC_SECURE);
+        uint16_t securePort = 0;
+        if (GetSecurePortInfo(devAddr, &securePort) != OC_STACK_OK)
+        {
+            securePort = 0;
+        }
+        OCRepPayloadSetPropInt(policy, OC_RSRVD_HOSTING_PORT, securePort);
+    }
     OCRepPayloadSetPropObjectAsOwner(tempPayload, OC_RSRVD_POLICY, policy);
 
     if(!*payload)
@@ -888,13 +902,13 @@ static OCStackResult HandleVirtualResource (OCServerRequest *request, OCResource
     {
         OCResource *resourcePtr = FindResourceByUri(OC_RSRVD_DEVICE_URI);
         VERIFY_PARAM_NON_NULL(TAG, resourcePtr, "Device URI not found.");
-        discoveryResult = BuildResponseRepresentation(resourcePtr, (OCRepPayload **)&payload);
+        discoveryResult = BuildResponseRepresentation(resourcePtr, (OCRepPayload **)&payload, &request->devAddr);
     }
     else if (virtualUriInRequest == OC_PLATFORM_URI)
     {
         OCResource *resourcePtr = FindResourceByUri(OC_RSRVD_PLATFORM_URI);
         VERIFY_PARAM_NON_NULL(TAG, resourcePtr, "Platform URI not found.");
-        discoveryResult = BuildResponseRepresentation(resourcePtr, (OCRepPayload **)&payload);
+        discoveryResult = BuildResponseRepresentation(resourcePtr, (OCRepPayload **)&payload, &request->devAddr);
     }
 #ifdef ROUTING_GATEWAY
     else if (OC_GATEWAY_URI == virtualUriInRequest)