*
* Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
*
- * Contact:
+ * Contact:
*
* Hyunjong Park <phjwithyou.park@samsung.com>
* Juyoung Kim <j0.kim@samsung.com>
#include "daprobe.h"
-#define SOCKET_SEND_SIZE 256;
-#define NO_DESTINATIONINFO (NULL)
-#define POST_PROBEBLOCK_MIDDLE_LIBC_SOCK(OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO ) \
+
+#define SOCKET_SEND_SIZE 1024
+#define NO_TOTAL_INFO (NULL)
+#define POST_PROBEBLOCK_MIDDLE_LIBC_SOCK(OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO) \
do { \
BUF_PTR = pack_int64(BUF_PTR, (uintptr_t)OBJECTPTR); \
BUF_PTR = pack_int64(BUF_PTR, FDVALUE); \
BUF_PTR = pack_int32(BUF_PTR, APITYPE); \
- struct sockaddr *tmp_dest = ((struct sockaddr *)DESTINATIONINFO); \
- if ( tmp_dest != NO_DESTINATIONINFO) { \
+ struct sockaddr *tmp_dest = ((struct sockaddr *)TOTAL_INFO.sock); \
+ if ( tmp_dest != NO_TOTAL_INFO) { \
switch (tmp_dest->sa_family) { \
case AF_INET:\
BUF_PTR = pack_int32(BUF_PTR, ((struct sockaddr_in *)tmp_dest)->sin_addr.s_addr ); \
BUF_PTR = pack_int32(BUF_PTR, (uint32_t) 0); \
BUF_PTR = pack_int32(BUF_PTR, (uint32_t) 0); \
}; \
- BUF_PTR = pack_string(BUF_PTR, MESSAGE); \
+ BUF_PTR = pack_int64(BUF_PTR, TOTAL_INFO.msg_total_size); \
+ BUF_PTR = pack_bin(BUF_PTR, TOTAL_INFO.msg_buf, TOTAL_INFO.msg_pack_size); \
} while (0)
//lib Common Function
-#define AFTER_ORIGINAL_LIBC_SOCK(RVAL,OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO, INPUTFORMAT, ...) \
+#define AFTER_ORIGINAL_LIBC_SOCK(RTYPE, RVAL, OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO, INPUTFORMAT, ...) \
POST_PROBEBLOCK_BEGIN(LC_SOCKET, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
- POST_PROBEBLOCK_MIDDLE_LIBC_SOCK(OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO ); \
- /* POST_PROBEBLOCK_CALLSTACK(); */ \
+ POST_PROBEBLOCK_MIDDLE_LIBC_SOCK(OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO ); \
POST_PROBEBLOCK_END();
//lib START Function
-#define AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_START(RVAL,OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO, INPUTFORMAT, ...) \
- POST_PROBEBLOCK_FUNC_START_BEGIN(LC_SOCKET, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
- POST_PROBEBLOCK_MIDDLE_LIBC_SOCK(OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO ); \
- FLUSH_LOCAL_BUF(); \
+#define AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_START(RTYPE, RVAL,OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO, INPUTFORMAT, ...) \
+ POST_PROBEBLOCK_FUNC_START_BEGIN(LC_SOCKET, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
+ POST_PROBEBLOCK_MIDDLE_LIBC_SOCK(OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO ); \
+ FLUSH_LOCAL_BUF(); \
PRE_PROBEBLOCK_END()
-#define POST_PROBEBLOCK_FUNC_START_BEGIN(LCTYPE, RETTYPE, RETVALUE, INPUTFORMAT, ...) \
+#define POST_PROBEBLOCK_FUNC_START_BEGIN(LCTYPE, RTYPE, RETVALUE, INPUTFORMAT, ...) \
newerrno = errno; \
if(postBlockBegin(blockresult)) { \
PREPARE_LOCAL_BUF(); \
PACK_COMMON_BEGIN(MSG_PROBE_NETWORK, vAPI_ID, INPUTFORMAT, __VA_ARGS__);\
- PACK_COMMON_END(RETVALUE, errno, blockresult)
+ PACK_COMMON_END(RTYPE, RETVALUE, errno, blockresult)
//lib END Function
-#define AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_END(RVAL, OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO, INPUTFORMAT, ...) \
+#define AFTER_ORIGINAL_LIBC_SOCK_WAIT_FUNC_END(RTYPE, RVAL, OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO, INPUTFORMAT, ...) \
POST_PROBEBLOCK_FUNC_END_BEGIN(LC_SOCKET, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
- POST_PROBEBLOCK_MIDDLE_LIBC_SOCK(OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO ); \
+ POST_PROBEBLOCK_MIDDLE_LIBC_SOCK(OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO ); \
POST_PROBEBLOCK_END()
-#define POST_PROBEBLOCK_FUNC_END_BEGIN(LCTYPE, RETTYPE, RETVALUE, INPUTFORMAT, ...) \
+#define POST_PROBEBLOCK_FUNC_END_BEGIN(LCTYPE, RTYPE, RETVALUE, INPUTFORMAT, ...) \
newerrno = errno; \
if(postBlockBegin(blockresult)) { \
setProbePoint(&probeInfo); \
PREPARE_LOCAL_BUF(); \
PACK_COMMON_BEGIN(MSG_PROBE_NETWORK, vAPI_ID, INPUTFORMAT, __VA_ARGS__);\
- PACK_COMMON_END(RETVALUE, errno, blockresult)
-
-#define BEFORE_ORIGINAL_TIZEN_NET(FUNCNAME, FUNCTIONPOINTER) \
- DECLARE_VARIABLE_STANDARD_OSP_NET(FUNCNAME); \
- GET_REAL_FUNC_TIZEN(FUNCNAME, LIBOSP_NET,FUNCTIONPOINTER); \
- PRE_PROBEBLOCK()
-
-#define DECLARE_VARIABLE_STANDARD_OSP_NET(FUNCNAME) \
- PREPARE_LOCAL_BUF(); \
- int blockresult; \
- bool bfiltering = true; \
- int olderrno = 0, newerrno = 0;\
- int32_t __attribute__((unused)) vAPI_ID = API_ID_ ## FUNCNAME /* FIXME bad way*/;
+ PACK_COMMON_END(RTYPE, RETVALUE, errno, blockresult)
-#define POST_PROBEBLOCK_MIDDLE_TIZEN_SOCK(OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO ) \
- do { \
+#define POST_PROBEBLOCK_MIDDLE_TIZEN_SOCK(OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO ) \
+ do { \
BUF_PTR = pack_int64(BUF_PTR, (uintptr_t)OBJECTPTR); \
- BUF_PTR = pack_int64(BUF_PTR, FDVALUE); \
- BUF_PTR = pack_int32(BUF_PTR, APITYPE); \
- BUF_PTR = pack_int32(BUF_PTR, 1); /* FIXME need destination IP*/\
- BUF_PTR = pack_int32(BUF_PTR, 2); /* FIXME need destination PORT*/\
- BUF_PTR = pack_string(BUF_PTR, MESSAGE); \
+ BUF_PTR = pack_int64(BUF_PTR, FDVALUE); \
+ BUF_PTR = pack_int32(BUF_PTR, APITYPE); \
+ BUF_PTR = pack_int32(BUF_PTR, TOTAL_INFO.host_ip); \
+ BUF_PTR = pack_int32(BUF_PTR, TOTAL_INFO.host_port); \
+ BUF_PTR = pack_int64(BUF_PTR, TOTAL_INFO.msg_total_size); \
+ BUF_PTR = pack_bin(BUF_PTR, TOTAL_INFO.msg_buf, \
+ TOTAL_INFO.msg_pack_size); \
} while (0)
-//TIZEN
-#define CALL_ORIGINAL_TIZEN_NET(FUNCNAME, FUNCTIONPOINTER) \
- GET_REAL_FUNC_TIZEN(FUNCNAME, LIBOSP_NET,FUNCTIONPOINTER); \
-
//Tizen Common Function
-#define AFTER_ORIGINAL_TIZEN_SOCK(APINAME, RTYPE, RVAL,OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO, INPUTFORMAT, ...) \
- POST_PROBEBLOCK_TIZEN_BEGIN(APINAME, LC_SOCKET, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
- POST_PROBEBLOCK_MIDDLE_TIZEN_SOCK(OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO ); \
+#define AFTER_ORIGINAL_TIZEN_SOCK(APINAME, RTYPE, RVAL, OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO, INPUTFORMAT, ...) \
+ POST_PROBEBLOCK_TIZEN_BEGIN(APINAME, LC_SOCKET, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
+ POST_PROBEBLOCK_MIDDLE_TIZEN_SOCK(OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO ); \
POST_PROBEBLOCK_END()
// Tizen Start Function
-#define AFTER_ORIGINAL_TIZEN_SOCK_WAIT_FUNC_START(APINAME,RTYPE, RVAL,OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO, INPUTFORMAT, ...) \
- POST_PROBEBLOCK_TIZEN_FUNC_START_BEGIN(APINAME,LC_SOCKET, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
- POST_PROBEBLOCK_MIDDLE_TIZEN_SOCK(OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE,DESTINATIONINFO ); \
- APPEND_LOG_NULL_CALLSTACK(); \
- printLog(&log, MSG_LOG); \
+#define AFTER_ORIGINAL_TIZEN_SOCK_WAIT_FUNC_START(APINAME, RTYPE, RVAL,OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO, INPUTFORMAT, ...) \
+ POST_PROBEBLOCK_TIZEN_FUNC_START_BEGIN(APINAME,LC_SOCKET, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
+ POST_PROBEBLOCK_MIDDLE_TIZEN_SOCK(OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO ); \
+ FLUSH_LOCAL_BUF(); \
PRE_PROBEBLOCK_END();
//Tizen END Function
-#define AFTER_ORIGINAL_TIZEN_SOCK_WAIT_FUNC_END(APINAME,RTYPE, RVAL,OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE, DESTINATIONINFO, INPUTFORMAT, ...) \
- POST_PROBEBLOCK_TIZEN_FUNC_END_BEGIN(APINAME,LC_SOCKET, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
- POST_PROBEBLOCK_MIDDLE_TIZEN_SOCK(OBJECTPTR, FDVALUE, APITYPE, MESSAGE, BYTESIZE,DESTINATIONINFO ); \
+#define AFTER_ORIGINAL_TIZEN_SOCK_WAIT_FUNC_END(APINAME,RTYPE, RVAL,OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO, INPUTFORMAT, ...) \
+ POST_PROBEBLOCK_TIZEN_FUNC_END_BEGIN(APINAME,LC_SOCKET, RTYPE, RVAL, INPUTFORMAT, __VA_ARGS__); \
+ POST_PROBEBLOCK_MIDDLE_TIZEN_SOCK(OBJECTPTR, FDVALUE, APITYPE, TOTAL_INFO ); \
POST_PROBEBLOCK_END()
-#define POST_PROBEBLOCK_TIZEN_BEGIN(APINAME, LCTYPE, RETTYPE, RETVALUE, INPUTFORMAT, ...) \
+#define POST_PROBEBLOCK_TIZEN_BEGIN(APINAME, LCTYPE, RTYPE, RETVALUE, INPUTFORMAT, ...) \
if(postBlockBegin(blockresult)) { \
PREPARE_LOCAL_BUF(); \
PACK_COMMON_BEGIN(MSG_PROBE_NETWORK, vAPI_ID, INPUTFORMAT, __VA_ARGS__);\
- PACK_COMMON_END(RETVALUE, errno, blockresult)
+ PACK_COMMON_END(RTYPE, RETVALUE, errno, blockresult)
#define APPEND_NETWORK_LOG_BASIC(LCTYPE, APINAME) \
log.length = sprintf(log.data, "%d`,%d`,%s`,%lu`,%d`,%d", \
LCTYPE, probeInfo.eventIndex, APINAME, \
probeInfo.currentTime, probeInfo.pID, probeInfo.tID)
-#define POST_PROBEBLOCK_TIZEN_FUNC_START_BEGIN(APINAME, LCTYPE, RETTYPE, RETVALUE, INPUTFORMAT, ...) \
+#define POST_PROBEBLOCK_TIZEN_FUNC_START_BEGIN(APINAME, LCTYPE, RTYPE, RETVALUE, INPUTFORMAT, ...) \
if(postBlockBegin(blockresult)) { \
PREPARE_LOCAL_BUF(); \
PACK_COMMON_BEGIN(MSG_PROBE_NETWORK, vAPI_ID, INPUTFORMAT, __VA_ARGS__);\
- PACK_COMMON_END(RETVALUE, errno, blockresult)
+ PACK_COMMON_END(RTYPE, RETVALUE, errno, blockresult)
-#define POST_PROBEBLOCK_TIZEN_FUNC_END_BEGIN(APINAME, LCTYPE, RETTYPE, RETVALUE, INPUTFORMAT, ...) \
+#define POST_PROBEBLOCK_TIZEN_FUNC_END_BEGIN(APINAME, LCTYPE, RTYPE, RETVALUE, INPUTFORMAT, ...) \
if(postBlockBegin(blockresult)) { \
setProbePoint(&probeInfo); \
PREPARE_LOCAL_BUF(); \
PACK_COMMON_BEGIN(MSG_PROBE_NETWORK, vAPI_ID, INPUTFORMAT, __VA_ARGS__);\
- PACK_COMMON_END(RETVALUE, errno, blockresult)
-
-#define APPEND_LOG_TIZEN_RESULT(RETTYPE, RETVALUE) \
- __appendTypeLog(&log, 4, NULL, RETTYPE, RETVALUE, VT_INT, 0, \
- VT_INT, newerrno, VT_INT, blockresult)
-
-#define BEFORE_ORIGINAL_SOCK(FUNCNAME, LIBNAME) \
- DECLARE_VARIABLE_STANDARD; \
- /*PREPARE_LOCAL_BUF();*/ \
- int32_t __attribute__((unused)) vAPI_ID = API_ID_ ## FUNCNAME; \
- GET_REAL_FUNC(FUNCNAME, LIBNAME); \
+ PACK_COMMON_END(RTYPE, RETVALUE, errno, blockresult)
+
+#define BEFORE_ORIGINAL_SOCK(FUNCNAME, LIBNAME) \
+ DECLARE_VARIABLE_STANDARD; \
+ info_t info; \
+ INIT_INFO; \
+ int32_t __attribute__((unused)) vAPI_ID = API_ID_ ## FUNCNAME; \
+ GET_REAL_FUNC(FUNCNAME, LIBNAME); \
PRE_PROBEBLOCK()
#endif // __DA_SOCKET_H__