JNIEXPORT jint JNICALL Java_org_openoverlayrouter_noroot_OOR_1JNI_oor_1start (JNIEnv *env, jobject thisObj, jint vpn_tun_fd, jstring storage_path) { oor_dev_type_e dev_type; jintArray fd_list; uint32_t iseed = 0; /* initial random number generator */ pid_t pid = 0; /* child pid */ pid_t sid = 0; char log_file[1024]; const char *path = NULL; lisp_xtr_t *tunnel_router; memset (log_file,0,sizeof(char)*1024); initial_setup(); jni_init(env,thisObj); /* create socket master, timer wheel, initialize interfaces */ smaster = sockmstr_create(); oor_timers_init(); ifaces_init(); /* create control. Only one instance for now */ lctrl = ctrl_create(); /* Detect the data plane type */ data_plane_select(); /** parse config and create ctrl_dev **/ /* obtain the configuration file */ path = (*env)->GetStringUTFChars(env, storage_path, 0); config_file = calloc(1024, sizeof(char)); strcat(config_file,path); strcat(config_file,"oor.conf"); strcat(log_file,path); strcat(log_file,"oor.log"); (*env)->ReleaseStringUTFChars(env, storage_path, path); open_log_file(log_file); if (parse_config_file()!=GOOD){ exit_cleanup(); close(vpn_tun_fd); return (BAD); } dev_type = ctrl_dev_mode(ctrl_dev); if (dev_type == xTR_MODE || dev_type == RTR_MODE || dev_type == MN_MODE) { OOR_LOG(LDBG_2, "Configuring data plane"); tunnel_router = CONTAINER_OF(ctrl_dev, lisp_xtr_t, super); data_plane->datap_init(dev_type, tr_get_encap_type(tunnel_router), vpn_tun_fd); OOR_LOG(LDBG_1, "Data plane initialized"); } ctrl_init(lctrl); init_netlink(); /* run lisp control device xtr/ms */ if (!ctrl_dev) { OOR_LOG(LDBG_1, "device NULL"); return (BAD); } return (GOOD); }
static void main_frontend(int argc, char *argv[]) { GtkWidget *window, *vbox; gtk_init(&argc, &argv); gdk_rgb_init(); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "My WebCam"); gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(delete_event), NULL); gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(delete_event), NULL); gtk_signal_connect(GTK_OBJECT(window), "key_release_event", GTK_SIGNAL_FUNC(key_event), NULL); gtk_container_set_border_width(GTK_CONTAINER(window), 2); /* vertical box */ vbox = gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(window), vbox); /* image */ drawing_area = gtk_drawing_area_new(); gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_area), fmt.fmt.pix.width, fmt.fmt.pix.height); gtk_box_pack_start(GTK_BOX(vbox), drawing_area, FALSE, FALSE, 0); ctrl_create(vbox); gtk_widget_show_all(window); gdk_input_add(fd, GDK_INPUT_READ, frame_ready, NULL); printf("'g' grab an image - 'i' info toggle - 'q' quit\n"); gtk_main(); }
static long ach_ctrl_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { /* TODO: Validate argument */ int ret = 0; if (rt_mutex_lock_interruptible(&ctrl_data.lock)) { return -ERESTARTSYS; } switch (cmd) { case ACH_CTRL_CREATE_CH: { struct ach_ctrl_create_ch create_arg; KDEBUG("ach: Control command create\n"); if (copy_from_user(&create_arg, (void*)arg, sizeof(create_arg)) ) { ret = -EFAULT; } else if ( strnlen(create_arg.name,ACH_CHAN_NAME_MAX) >= ACH_CHAN_NAME_MAX ) { ret = -ENAMETOOLONG; } else { ret = ctrl_create( &create_arg ); } break; } case ACH_CTRL_UNLINK_CH: { struct ach_ctrl_unlink_ch unlink_arg; KDEBUG("ach: Control command unlink\n"); if (copy_from_user(&unlink_arg, (void*)arg, sizeof(unlink_arg)) ) { ret = -EFAULT; } else if ( strnlen(unlink_arg.name,ACH_CHAN_NAME_MAX) >= ACH_CHAN_NAME_MAX ) { ret = -ENAMETOOLONG; } else { /* Find the device */ struct ach_ch_device *dev; dev = ach_ch_device_find(unlink_arg.name); if (!dev) { ret = -ENOENT; goto out_unlock; } /* Free the device. The channel * backing memory is ref-counted, and * won't be freed until all files are * closed.*/ if (ach_ch_device_free(dev)) { ret = -ERESTARTSYS; goto out_unlock; } printk( KERN_INFO "ach: unlinked channel %s\n", unlink_arg.name ); } break; } default: printk(KERN_ERR "ach: Unknown ioctl option: %d\n", cmd); ret = -ENOSYS; break; } out_unlock: rt_mutex_unlock(&ctrl_data.lock); return ret; }
int main(int argc, char **argv) { oor_dev_type_e dev_type; lisp_xtr_t *tunnel_router; initial_setup(); handle_oor_command_line(argc, argv); /* see if we need to daemonize, and if so, do it */ demonize_start(); /* create socket master, timer wheel, initialize interfaces */ smaster = sockmstr_create(); oor_timers_init(); ifaces_init(); /* create control. Only one instance for now */ if ((lctrl = ctrl_create())==NULL){ exit_cleanup(); } /* Detect the data plane type */ data_plane_select(); /* parse config and create ctrl_dev */ if (parse_config_file() != GOOD){ exit_cleanup(); } dev_type = ctrl_dev_mode(ctrl_dev); if (dev_type == xTR_MODE || dev_type == RTR_MODE || dev_type == MN_MODE) { OOR_LOG(LDBG_2, "Configuring data plane"); tunnel_router = CONTAINER_OF(ctrl_dev, lisp_xtr_t, super); if (data_plane->datap_init(dev_type,tr_get_encap_type(tunnel_router))!=GOOD){ exit_cleanup(); } OOR_LOG(LDBG_1, "Data plane initialized"); } /* The control should be initialized after data plane */ ctrl_init(lctrl); init_netlink(); /* run lisp control device xtr/ms */ if (!ctrl_dev) { OOR_LOG(LDBG_1, "device NULL"); exit(0); } ctrl_dev_run(ctrl_dev); OOR_LOG(LINF,"\n\n Open Overlay Router (%s): started... \n\n",OOR_VERSION); #ifndef ANDROID /* Initialize API for external access */ oor_api_init_server(&oor_api_connection); for (;;) { sockmstr_wait_on_all_read(smaster); sockmstr_process_all(smaster); oor_api_loop(&oor_api_connection); } #else for (;;) { sockmstr_wait_on_all_read(smaster); sockmstr_process_all(smaster); } #endif /* event_loop returned: bad! */ OOR_LOG(LINF, "Exiting..."); exit_cleanup(); return(0); }
JNIEXPORT jint JNICALL Java_org_lispmob_noroot_LISPmob_1JNI_startLispd (JNIEnv *env, jobject thisObj, jint vpn_tun_fd, jstring storage_path) { lisp_dev_type_e dev_type; jintArray fd_list; uint32_t iseed = 0; /* initial random number generator */ pid_t pid = 0; /* child pid */ pid_t sid = 0; char log_file[1024]; const char *path = NULL; memset (log_file,0,sizeof(char)*1024); initial_setup(); jni_init(env,thisObj); /* create socket master, timer wheel, initialize interfaces */ smaster = sockmstr_create(); lmtimers_init(); ifaces_init(); /* create control. Only one instance for now */ lctrl = ctrl_create(); /* Detect the data plane type */ data_plane_select(); /** parse config and create ctrl_dev **/ /* obtain the configuration file */ path = (*env)->GetStringUTFChars(env, storage_path, 0); config_file = calloc(1024, sizeof(char)); strcat(config_file,path); strcat(config_file,"lispd.conf"); strcat(log_file,path); strcat(log_file,"lispd.log"); (*env)->ReleaseStringUTFChars(env, storage_path, path); open_log_file(log_file); if (parse_config_file()!=GOOD){ exit_cleanup(); return (BAD); } dev_type = ctrl_dev_mode(ctrl_dev); if (dev_type == xTR_MODE || dev_type == RTR_MODE || dev_type == MN_MODE) { data_plane->datap_init(dev_type, vpn_tun_fd); } ctrl_init(lctrl); init_netlink(); /* run lisp control device xtr/ms */ if (!ctrl_dev) { LMLOG(LDBG_1, "device NULL"); return (BAD); } return (GOOD); }
int main(int argc, char **argv) { lisp_dev_type_e dev_type; initial_setup(); handle_lispd_command_line(argc, argv); /* see if we need to daemonize, and if so, do it */ demonize_start(); /* create socket master, timer wheel, initialize interfaces */ smaster = sockmstr_create(); lmtimers_init(); ifaces_init(); /* create control. Only one instance for now */ if ((lctrl = ctrl_create())==NULL){ exit_cleanup(); } /* Detect the data plane type */ data_plane_select(); /* parse config and create ctrl_dev */ if (parse_config_file() != GOOD){ exit_cleanup(); } dev_type = ctrl_dev_mode(ctrl_dev); if (dev_type == xTR_MODE || dev_type == RTR_MODE || dev_type == MN_MODE) { data_plane->datap_init(dev_type); } ctrl_init(lctrl); init_netlink(); /* run lisp control device xtr/ms */ if (!ctrl_dev) { LMLOG(LDBG_1, "device NULL"); exit(0); } ctrl_dev_run(ctrl_dev); LMLOG(LINF,"\n\n LISPmob (%s): 'lispd' started... \n\n",LISPD_VERSION); #ifndef ANDROID /* Initialize API for external access */ lmapi_init_server(&lmapi_connection); for (;;) { sockmstr_wait_on_all_read(smaster); sockmstr_process_all(smaster); lmapi_loop(&lmapi_connection); } #else for (;;) { sockmstr_wait_on_all_read(smaster); sockmstr_process_all(smaster); } #endif /* EVENT LOOP */ for (;;) { sockmstr_wait_on_all_read(smaster); sockmstr_process_all(smaster); #ifndef ANDROID lmapi_loop(&lmapi_connection); #endif } /* event_loop returned: bad! */ LMLOG(LINF, "Exiting..."); exit_cleanup(); return(0); }