Commit b6da8c8f2fbdb627fedc60df3faa575d9cc3d825

  • avatar
  • Ilkka <ima @fla197…ptop.(none)>
  • Fri Jun 11 14:50:29 CEST 2010
  • Tree SHA1: b0780bd
  • Parent SHA1: 9460983 (l_up: Basic nodes request all cmaps (all IAs) from LManager. This way connecting BN knows where to forward Gateway-calls if LManager is local but Gateway is not.)
  • raw diff | raw patch
ld_tcp_ip: If node is Gateway, it will receive and forward scene requests as LManager does.
  
245245 int ret = -1;
246246
247247 /* if static ip is used print LMANAGER address */
248 if(NODE_IS_MANAGER(ld_tcp)) {
248 if(NODE_IS_MANAGER(ld_tcp) || NODE_IS_GATEWAY(ld_tcp)) {
249249 /* check if static ip is used */
250250 if((mgr_ip = get_manager_ip(&port)) != NULL) {
251 printf("LManager server at static address \"%s\" port (%u)\n", mgr_ip, port);
251 if(NODE_IS_MANAGER(ld_tcp)) {
252 printf("LManager server at static address \"%s\" port (%u)\n", mgr_ip, port);
253 }
252254 }
253255
254256 if(mgr_ip) {
266266 LD_TRACEH("connection less server fd(%d) at address %s port (%d) \n", cl_sock->fd_server, mgr_ip, cl_sock->port_server);
267267
268268 /* if static ip is not used print LMANAGER address */
269 if(NODE_IS_MANAGER(ld_tcp) && !mgr_ip) {
269 if((NODE_IS_MANAGER(ld_tcp) || NODE_IS_GATEWAY(ld_tcp)) && !mgr_ip) {
270270 int ret;
271271 unsigned char address[4];
272272 int* address_ptr = (int*)address;
368368 status = LD_STATUS_NOK;
369369 }
370370 else {
371 if(NODE_IS_MANAGER(ld) && !get_manager_ip(&port)) {
371 if((NODE_IS_MANAGER(ld) || NODE_IS_GATEWAY(ld)) && !get_manager_ip(&port)) {
372372 /* wait scene thread to run */
373373 nota_semaphore_down(ld->scene_thread_sem);
374374 }
422422 nota_semaphore_down(ld->scene_thread_sem);
423423
424424 /* deactivate scene sockets */
425 if(NODE_IS_MANAGER(ld) && !get_manager_ip(&port)) {
425 if((NODE_IS_MANAGER(ld) || NODE_IS_GATEWAY(ld)) && !get_manager_ip(&port)) {
426426 if(scene_sock->scene_server_fd >= 0) {
427427 tcp_disconnect(scene_sock->scene_server_fd);
428428 tcp_close(scene_sock->scene_server_fd);
  
422422
423423 ld->state |= LD_STATE_SCENE_THREAD_RUNNING;
424424
425 if(NODE_IS_MANAGER(ld)) {
425 if(NODE_IS_MANAGER(ld) || NODE_IS_GATEWAY(ld)) {
426426 /* Lmanager enables the ld_tcp_ip_activate to continue */
427427 nota_semaphore_up(ld->scene_thread_sem);
428428 }
433433
434434 while(!(ld->state & LD_STATE_DESTROYING)) {
435435 int ret = 0;
436 if(NODE_IS_MANAGER(ld)) {
436 if(NODE_IS_MANAGER(ld) || NODE_IS_GATEWAY(ld)) {
437437
438
439438 select_zero(ld->scene_thread_select, LD_SOCKET_UPDATE_RWE);
440439
441440 if(scene_sock->ucast_fd < 0) {
468468 int flags = LD_SOCKET_UPDATE_NONE;
469469
470470 /* receive scene data only for LMANAGER */
471 if(NODE_IS_MANAGER(ld)) {
471 if(NODE_IS_MANAGER(ld) || NODE_IS_GATEWAY(ld)) {
472472 if(scene_sock->bcast_fd >= 0) {
473473 flags = select_is_set(ld->scene_thread_select, scene_sock->bcast_fd, LD_SOCKET_UPDATE_READ);
474474 if(flags == LD_SOCKET_UPDATE_READ) {