From: ho.namkoong Date: Wed, 29 Jan 2014 04:10:42 +0000 (+0900) Subject: SDB: annotate device connect X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5786b4b131c80d6b975dfd8078b2cf24c21a467e;p=sdk%2Ftools%2Fsdb.git SDB: annotate device connect annote device connect which is not provided until security issue is resolved Change-Id: I931c12970d8d4a45052fe91a70eb03b02e37c744 --- diff --git a/src/common_modules.h b/src/common_modules.h index 512d69c..273105c 100644 --- a/src/common_modules.h +++ b/src/common_modules.h @@ -71,15 +71,17 @@ typedef enum transport_type { kTransportLocal, kTransportAny, kTransportConnect, - kTransportRemoteDevCon + //TODO REMOTE_DEVICE_CONNECT + //kTransportRemoteDevCon } transport_type; typedef struct transport TRANSPORT; struct transport { LIST_NODE* node; + //TODO REMOTE_DEVICE_CONNECT //list for remote sockets which wait for CNXN - LIST_NODE* remote_cnxn_socket; + //LIST_NODE* remote_cnxn_socket; int (*read_from_remote)(TRANSPORT* t, void* data, int len); int (*write_to_remote)(PACKET *p, TRANSPORT *t); diff --git a/src/sockets.c b/src/sockets.c index a35b503..f2f9a47 100755 --- a/src/sockets.c +++ b/src/sockets.c @@ -47,14 +47,15 @@ static int find_transports(char **serial_out, const char *prefix); static void unregister_all_tcp_transports(); static void connect_emulator(char* host, int port, char* buf, int buf_len); -const unsigned int unsigned_int_bit = sizeof(unsigned int) * 8; -const unsigned int remote_con_right_padding = ~(~0 << sizeof(unsigned int) * 4); -const unsigned int remote_con_flag = 1 << (sizeof(unsigned int) * 8 - 1); -unsigned int remote_con_cur_r_id = 1; -unsigned int remote_con_cur_l_number = 0; -const unsigned int remote_con_l_max = 16; // Ox1111 -const unsigned int remote_con_r_max = ~(~0 << (sizeof(unsigned int) * 8 - 5)); -unsigned int remote_con_l_table[16] = {0,}; +//TODO REMOTE_DEVICE_CONNECT +//const unsigned int unsigned_int_bit = sizeof(unsigned int) * 8; +//const unsigned int remote_con_right_padding = ~(~0 << sizeof(unsigned int) * 4); +//const unsigned int remote_con_flag = 1 << (sizeof(unsigned int) * 8 - 1); +//unsigned int remote_con_cur_r_id = 1; +//unsigned int remote_con_cur_l_number = 0; +//const unsigned int remote_con_l_max = 16; // Ox1111 +//const unsigned int remote_con_r_max = ~(~0 << (sizeof(unsigned int) * 8 - 5)); +//unsigned int remote_con_l_table[16] = {0,}; static unsigned local_socket_next_id = 1; @@ -148,24 +149,25 @@ static void destroy_socket(void* data) { SDB_SOCKET* socket = data; socket->node = NULL; - if(HAS_SOCKET_STATUS(socket, REMOTE_CON)) { - free(socket->read_packet); - unsigned int id = socket->local_id & ~remote_con_flag; - - TRANSPORT* t = socket->transport; - if(t != NULL) { - LIST_NODE* node = t->remote_cnxn_socket; - while(node != NULL) { - SDB_SOCKET* s = node->data; - node = node->next_ptr; - if(s == socket) { - remove_node(&(t->remote_cnxn_socket), s->node, no_free); - break; - } - } - } - remote_con_l_table[id] = 0; - } + //TODO REMOTE_DEVICE_CONNECT +// if(HAS_SOCKET_STATUS(socket, REMOTE_CON)) { +// free(socket->read_packet); +// unsigned int id = socket->local_id & ~remote_con_flag; +// +// TRANSPORT* t = socket->transport; +// if(t != NULL) { +// LIST_NODE* node = t->remote_cnxn_socket; +// while(node != NULL) { +// SDB_SOCKET* s = node->data; +// node = node->next_ptr; +// if(s == socket) { +// remove_node(&(t->remote_cnxn_socket), s->node, no_free); +// break; +// } +// } +// } +// remote_con_l_table[id] = 0; +// } socket->local_id = 0; free(socket); } @@ -445,13 +447,14 @@ static void local_socket_event_func(int fd, unsigned ev, void *_s) PACKET *p = get_apacket(); void *x; - if(HAS_SOCKET_STATUS(s, REMOTE_CON)) { - x = &p->msg; - p->ptr = &p->msg; - } - else { + //TODO REMOTE_DEVICE_CONNECT +// if(HAS_SOCKET_STATUS(s, REMOTE_CON)) { +// x = &p->msg; +// p->ptr = &p->msg; +// } +// else { x = p->data; - } +// } size_t avail = MAX_PAYLOAD; int r = 1; @@ -515,12 +518,13 @@ SDB_SOCKET *create_local_socket(int fd) return s; } -void create_remote_connection_socket(SDB_SOCKET* socket) { - LOG_INFO("FD(%d)\n", socket->fd); - SET_SOCKET_STATUS(socket, REMOTE_CON); - socket->read_packet = malloc(sizeof(PACKET)); - socket->read_packet->len = 0; -} +//TODO REMOTE_DEVICE_CONNECT +//void create_remote_connection_socket(SDB_SOCKET* socket) { +// LOG_INFO("FD(%d)\n", socket->fd); +// SET_SOCKET_STATUS(socket, REMOTE_CON); +// socket->read_packet = malloc(sizeof(PACKET)); +// socket->read_packet->len = 0; +//} void connect_to_remote(SDB_SOCKET *s, const char* destination) { @@ -1239,37 +1243,38 @@ fail: return -1; } -int assign_remote_connect_socket_rid (SDB_SOCKET* s) { - if(remote_con_cur_r_id > remote_con_r_max) { - LOG_ERROR("remote connect socket exceeds limit. cannot create remote socket for LS(%X) FD(%d)\n", s->local_id, s->fd); - return -1; - } - int remote_id = (remote_con_cur_r_id << 4) | remote_con_flag; - LOG_INFO("LS(%X) -> LS_R(%X)\n", s->local_id, remote_id); - s->local_id = remote_id; - remote_con_cur_r_id++; - return 0; -} - -int assign_remote_connect_socket_lid (SDB_SOCKET* s) { - if(remote_con_cur_l_number >= remote_con_l_max) { - LOG_ERROR("remote connect socket exceeds limit. cannot create remote socket for LS(%X) FD(%d)\n", s->local_id, s->fd); - return -1; - } - int i = 0; - for(i = 0; i< remote_con_l_max; i++) { - if(remote_con_l_table[i] == 0) { - unsigned int remote_id = i | remote_con_flag; - remote_con_cur_l_number++; - LOG_INFO("LS(%X) -> LS_L(%X)\n", s->local_id, remote_id); - s->local_id = remote_id; - remote_con_l_table[i] = 1; - return 0; - } - } - LOG_ERROR("not enough space in remote_con_l_table\n"); - return -1; -} +//TODO REMOTE_DEVICE_CONNECT +//int assign_remote_connect_socket_rid (SDB_SOCKET* s) { +// if(remote_con_cur_r_id > remote_con_r_max) { +// LOG_ERROR("remote connect socket exceeds limit. cannot create remote socket for LS(%X) FD(%d)\n", s->local_id, s->fd); +// return -1; +// } +// int remote_id = (remote_con_cur_r_id << 4) | remote_con_flag; +// LOG_INFO("LS(%X) -> LS_R(%X)\n", s->local_id, remote_id); +// s->local_id = remote_id; +// remote_con_cur_r_id++; +// return 0; +//} + +//int assign_remote_connect_socket_lid (SDB_SOCKET* s) { +// if(remote_con_cur_l_number >= remote_con_l_max) { +// LOG_ERROR("remote connect socket exceeds limit. cannot create remote socket for LS(%X) FD(%d)\n", s->local_id, s->fd); +// return -1; +// } +// int i = 0; +// for(i = 0; i< remote_con_l_max; i++) { +// if(remote_con_l_table[i] == 0) { +// unsigned int remote_id = i | remote_con_flag; +// remote_con_cur_l_number++; +// LOG_INFO("LS(%X) -> LS_L(%X)\n", s->local_id, remote_id); +// s->local_id = remote_id; +// remote_con_l_table[i] = 1; +// return 0; +// } +// } +// LOG_ERROR("not enough space in remote_con_l_table\n"); +// return -1; +//} int device_tracker_send( SDB_SOCKET* local_socket, diff --git a/src/sockets.h b/src/sockets.h index 363e617..b066fc9 100644 --- a/src/sockets.h +++ b/src/sockets.h @@ -33,20 +33,22 @@ #define REMOVE_SOCKET_STATUS(asocket, _status) ((asocket)->status &= ~(1 << _status)) #define HAS_SOCKET_STATUS(asocket, _status) ((asocket)->status & (1 << _status)) -extern const unsigned int unsigned_int_bit; -extern const unsigned int remote_con_right_padding; -extern const unsigned int remote_con_flag; -extern unsigned int remote_con_cur_r_id; -extern unsigned int remote_con_cur_l_number; -extern const unsigned int remote_con_l_max; // Ox1111 -extern const unsigned int remote_con_r_max; -extern unsigned int remote_con_l_table[16]; +//TODO REMOTE_DEVICE_CONNECT +//extern const unsigned int unsigned_int_bit; +//extern const unsigned int remote_con_right_padding; +//extern const unsigned int remote_con_flag; +//extern unsigned int remote_con_cur_r_id; +//extern unsigned int remote_con_cur_l_number; +//extern const unsigned int remote_con_l_max; // Ox1111 +//extern const unsigned int remote_con_r_max; +//extern unsigned int remote_con_l_table[16]; typedef enum { NOTIFY = 0, DEVICE_TRACKER, REMOTE_SOCKET, - REMOTE_CON, + //TODO REMOTE_DEVICE_CONNECT +// REMOTE_CON, QEMU_SOCKET } SOCKET_STATUS; @@ -58,6 +60,7 @@ void local_socket_ready(SDB_SOCKET *s); void local_socket_close(SDB_SOCKET *s); SDB_SOCKET *create_local_socket(int fd); void connect_to_remote(SDB_SOCKET *s, const char* destination); -int assign_remote_connect_socket_rid (SDB_SOCKET* s); +//TODO REMOTE_DEVICE_CONNECT +//int assign_remote_connect_socket_rid (SDB_SOCKET* s); int device_tracker_send( SDB_SOCKET* local_socket, const char* buffer, int len ); #endif /* SOCKETS_H_ */ diff --git a/src/transport.c b/src/transport.c index dd2d7e0..a0fe185 100755 --- a/src/transport.c +++ b/src/transport.c @@ -734,16 +734,17 @@ static int check_data(PACKET *p) } } -static unsigned int decoding_to_remote_ls_id(unsigned int encoded_ls_id) { - unsigned int remote_ls_id = encoded_ls_id & ~15; - return remote_ls_id; -} - -static unsigned int decoding_to_local_ls_id(unsigned encoded_ls_id) { - unsigned int local_ls_id = encoded_ls_id & 15; - local_ls_id |= remote_con_flag; - return local_ls_id; -} +//TODO REMOTE_DEVICE_CONNECT +//static unsigned int decoding_to_remote_ls_id(unsigned int encoded_ls_id) { +// unsigned int remote_ls_id = encoded_ls_id & ~15; +// return remote_ls_id; +//} +// +//static unsigned int decoding_to_local_ls_id(unsigned encoded_ls_id) { +// unsigned int local_ls_id = encoded_ls_id & 15; +// local_ls_id |= remote_con_flag; +// return local_ls_id; +//} void wakeup_select_func(int _fd, unsigned ev, void *data) { T_PACKET* t_packet = NULL; @@ -765,30 +766,32 @@ void wakeup_select_func(int _fd, unsigned ev, void *data) { unsigned int local_id = p->msg.arg1; unsigned int remote_id = p->msg.arg0; SDB_SOCKET* sock = NULL; + + //TODO REMOTE_DEVICE_CONNECT //CNXN cannot be distinguished using remote_con_flag - if(t->remote_cnxn_socket != NULL && cmd == A_CNXN) { - dump_packet("remote_con", "wakeup_select_func", p); - sock = t->remote_cnxn_socket->data; - if(sock != NULL) { - remove_first(&(t->remote_cnxn_socket), no_free); - LOG_INFO("LS_L(%X)\n", sock->local_id); - p->ptr = (void*)(&p->msg); - p->len = sizeof(MESSAGE) + p->msg.data_length; - local_socket_enqueue(sock, p); - } - goto endup; - } - //If transport is remote device, packet should not have to be decoded. - if((local_id & remote_con_flag) && t->type != kTransportRemoteDevCon) { - LOG_INFO("LS_L(%X), LS_R(%X), LS_E(%X)\n", decoding_to_local_ls_id(local_id), - decoding_to_remote_ls_id(local_id), local_id); - sock = find_local_socket(decoding_to_local_ls_id(local_id)); - p->msg.arg1 = decoding_to_remote_ls_id(local_id); - p->ptr = (void*)(&p->msg); - p->len = sizeof(MESSAGE) + p->msg.data_length; - local_socket_enqueue(sock, p); - goto endup; - } +// if(t->remote_cnxn_socket != NULL && cmd == A_CNXN) { +// dump_packet("remote_con", "wakeup_select_func", p); +// sock = t->remote_cnxn_socket->data; +// if(sock != NULL) { +// remove_first(&(t->remote_cnxn_socket), no_free); +// LOG_INFO("LS_L(%X)\n", sock->local_id); +// p->ptr = (void*)(&p->msg); +// p->len = sizeof(MESSAGE) + p->msg.data_length; +// local_socket_enqueue(sock, p); +// } +// goto endup; +// } +// //If transport is remote device, packet should not have to be decoded. +// if((local_id & remote_con_flag) && t->type != kTransportRemoteDevCon) { +// LOG_INFO("LS_L(%X), LS_R(%X), LS_E(%X)\n", decoding_to_local_ls_id(local_id), +// decoding_to_remote_ls_id(local_id), local_id); +// sock = find_local_socket(decoding_to_local_ls_id(local_id)); +// p->msg.arg1 = decoding_to_remote_ls_id(local_id); +// p->ptr = (void*)(&p->msg); +// p->len = sizeof(MESSAGE) + p->msg.data_length; +// local_socket_enqueue(sock, p); +// goto endup; +// } sock = find_local_socket(local_id); if(c_state != CS_OFFLINE && sock != NULL) { diff --git a/src/transport_local.c b/src/transport_local.c index 61ddc28..39629dd 100755 --- a/src/transport_local.c +++ b/src/transport_local.c @@ -245,7 +245,8 @@ void register_socket_transport(int s, const char *serial, char* host, int port, t->sdb_port = port; t->suspended = 0; t->type = ttype; - t->remote_cnxn_socket = NULL; + //TODO REMOTE_DEVICE_CONNECT +// t->remote_cnxn_socket = NULL; if(host) { snprintf(t->host, 20, "%s", host); diff --git a/src/transport_usb.c b/src/transport_usb.c index b364e87..41dfa19 100755 --- a/src/transport_usb.c +++ b/src/transport_usb.c @@ -102,7 +102,8 @@ void register_usb_transport(usb_handle *usb, const char *serial) if(serial) { t->serial = strdup(serial); } - t->remote_cnxn_socket = NULL; + //TODO REMOTE_DEVICE_CONNECT +// t->remote_cnxn_socket = NULL; register_transport(t); /* tizen specific */