static inline void main_init(void) { mcu_init(); sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL); stateInit(); actuators_init(); modules_init(); #if USE_AHRS_ALIGNER ahrs_aligner_init(); #endif ahrs_init(); settings_init(); mcu_int_enable(); downlink_init(); modules_init(); register_periodic_telemetry(DefaultPeriodic, PPRZ_MSG_ID_AUTOPILOT_VERSION, send_autopilot_version); register_periodic_telemetry(DefaultPeriodic, PPRZ_MSG_ID_ALIVE, send_alive); register_periodic_telemetry(DefaultPeriodic, PPRZ_MSG_ID_COMMANDS, send_commands); register_periodic_telemetry(DefaultPeriodic, PPRZ_MSG_ID_ACTUATORS, send_actuators); // send body_to_imu from here for now AbiSendMsgBODY_TO_IMU_QUAT(1, orientationGetQuat_f(&imu.body_to_imu)); }
void atheme_setup(void) { #if HAVE_UMASK /* file creation mask */ umask(077); #endif base_eventloop = mowgli_eventloop_create(); hooks_init(); db_init(); init_resolver(); translation_init(); #ifdef ENABLE_NLS language_init(); #endif init_nodes(); init_confprocess(); init_newconf(); servtree_init(); hook_add_event("email_canonicalize"); hook_add_email_canonicalize(canonicalize_email_case); /* No need for canonicalize_emails(), no accounts exist yet. */ modules_init(); pcommand_init(); authcookie_init(); common_ctcp_init(); }
static void arch_init( void ) { openbios_init(); modules_init(); #ifdef CONFIG_DRIVER_PCI arch = &default_pci_host; ob_pci_init(); #endif #ifdef CONFIG_DRIVER_IDE setup_timers(); ob_ide_init("/pci/isa", 0x1f0, 0x3f4, 0x170, 0x374); #endif #ifdef CONFIG_DRIVER_FLOPPY ob_floppy_init("/isa", "floppy0", 0x3f0, 0); #endif #ifdef CONFIG_XBOX setup_video(0x3C00000, phys_to_virt(0x3C00000)); /* Force video to 32-bit depth */ VIDEO_DICT_VALUE(video.depth) = 32; init_video(); node_methods_init(); #endif device_end(); bind_func("platform-boot", boot ); bind_func("(go)", go ); }
void atheme_setup(void) { #if HAVE_UMASK /* file creation mask */ umask(077); #endif base_eventloop = mowgli_eventloop_create(); hooks_init(); db_init(); init_resolver(); translation_init(); #ifdef ENABLE_NLS language_init(); #endif init_nodes(); init_confprocess(); init_newconf(); servtree_init(); register_email_canonicalizer(canonicalize_email_case, NULL); modules_init(); pcommand_init(); authcookie_init(); common_ctcp_init(); }
STATIC_INLINE void main_init(void) { // fbw_init fbw_mode = FBW_MODE_FAILSAFE; mcu_init(); actuators_init(); electrical_init(); #if USE_MOTOR_MIXING motor_mixing_init(); #endif radio_control_init(); modules_init(); mcu_int_enable(); intermcu_init(); // register the timers for the periodic functions main_periodic_tid = sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL); modules_tid = sys_time_register_timer(1. / MODULES_FREQUENCY, NULL); radio_control_tid = sys_time_register_timer((1. / 60.), NULL); electrical_tid = sys_time_register_timer(0.1, NULL); telemetry_tid = sys_time_register_timer((1. / 20.), NULL); }
void k_main(multiboot_info_t * multiboot_info) { system_info.total_memory = multiboot_info->mem_upper; clrscr(); printf("%s\n", &uname); printf(" Copyright 2005-2006 Draco Project\n"); printf("%dM of extended memory.\n", multiboot_info->mem_upper >> 10); cons_attribute = 7; init_gdt(); init_idt(); init_irq(0x20, 0x28); paging_kernel_env(system_info.total_memory / 4); paging_init(); proc_init(); modules_init(multiboot_info); printf("Kernel is initialized.\n"); sti(); while(1); }
//--------------------------------------------------------------------------------------------- int main(void) { OSStatus err = kNoErr; modules_init(); xTaskCreate(debug_port_task_handler, "debug", DEBUG_PORT_TASK_STACK_SIZE, NULL, DEBUG_PORT_TASK_PRIORITY, NULL); err = xTaskCreate(uart_task_handler, "uart2", UART_TASK_STACK_SIZE, &ports[0], UART_TASK_PRIORITY, NULL); require_action( err, exit, app_log("Creat task uart2: disabled.") ); err = xTaskCreate(uart_task_handler, "uart3", UART_TASK_STACK_SIZE, &ports[1], UART_TASK_PRIORITY, NULL); require_action( err, exit, app_log("Creat task uart3: disabled.") ); for (int i = 0; i < array_size(timers); ++i) { timers[i].timer = xTimerCreate(NULL, timers[i].period, pdTRUE, NULL, timers[i].handler); xTimerStart(timers[i].timer, portMAX_DELAY); } err = xTaskCreate(key_task_handler, "key1", KEY_TASK_STACK_SIZE, &keys[0], KEY_TASK_PRIORITY, NULL); require_action( err, exit, app_log("Creat task key1: disabled.") ); err = xTaskCreate(key_task_handler, "key2", KEY_TASK_STACK_SIZE, &keys[1], KEY_TASK_PRIORITY, NULL); require_action( err, exit, app_log("Creat task key2: disabled.") ); vTaskStartScheduler(); exit: app_log("Creat task disabled,exit."); return 0; }
void core_init(void) { modules_init(); #ifndef WIN32 pidwait_init(); #endif net_disconnect_init(); net_sendbuffer_init(); signals_init(); settings_init(); commands_init(); nickmatch_cache_init(); chat_protocols_init(); chatnets_init(); expandos_init(); ignore_init(); servers_init(); write_buffer_init(); log_init(); rawlog_init(); channels_init(); queries_init(); nicklist_init(); chat_commands_init(); settings_check(); }
static void set_up(void) { if (p == NULL) { p = permanent_pool = make_sub_pool(NULL); } modules_init(); }
STATIC_INLINE void main_init( void ) { mcu_init(); electrical_init(); stateInit(); actuators_init(); #if USE_MOTOR_MIXING motor_mixing_init(); #endif radio_control_init(); air_data_init(); #if USE_BARO_BOARD baro_init(); #endif imu_init(); #if USE_IMU_FLOAT imu_float_init(); #endif ahrs_aligner_init(); ahrs_init(); ins_init(); #if USE_GPS gps_init(); #endif autopilot_init(); modules_init(); settings_init(); mcu_int_enable(); #if DATALINK == XBEE xbee_init(); #endif #if DATALINK == UDP udp_init(); #endif // register the timers for the periodic functions main_periodic_tid = sys_time_register_timer((1./PERIODIC_FREQUENCY), NULL); modules_tid = sys_time_register_timer(1./MODULES_FREQUENCY, NULL); radio_control_tid = sys_time_register_timer((1./60.), NULL); failsafe_tid = sys_time_register_timer(0.05, NULL); electrical_tid = sys_time_register_timer(0.1, NULL); telemetry_tid = sys_time_register_timer((1./TELEMETRY_FREQUENCY), NULL); #if USE_BARO_BOARD baro_tid = sys_time_register_timer(1./BARO_PERIODIC_FREQUENCY, NULL); #endif }
STATIC_INLINE void main_init( void ) { mcu_init(); electrical_init(); stateInit(); actuators_init(); #if USE_MOTOR_MIXING // motor_mixing_init(); // servo_mixing_init(); set_servo_init(); #endif radio_control_init(); baro_init(); imu_init(); autopilot_init(); nav_init(); guidance_h_init(); guidance_v_init(); stabilization_init(); ahrs_aligner_init(); ahrs_init(); ins_init(); #if USE_GPS gps_init(); #endif modules_init(); settings_init(); mcu_int_enable(); #if DATALINK == XBEE xbee_init(); #endif #if DATALINK == UDP udp_init(); #endif // register the timers for the periodic functions main_periodic_tid = sys_time_register_timer((1./PERIODIC_FREQUENCY), NULL); modules_tid = sys_time_register_timer(1./MODULES_FREQUENCY, NULL); radio_control_tid = sys_time_register_timer((1./60.), NULL); failsafe_tid = sys_time_register_timer(0.05, NULL); electrical_tid = sys_time_register_timer(0.1, NULL); baro_tid = sys_time_register_timer(1./BARO_PERIODIC_FREQUENCY, NULL); telemetry_tid = sys_time_register_timer((1./TELEMETRY_FREQUENCY), NULL); }
void core_init(void) { dialog_type_queue = NULL; dialog_text_queue = NULL; client_start_time = time(NULL); modules_init(); pidwait_init(); net_disconnect_init(); signals_init(); signal_add_first("gui dialog", (SIGNAL_FUNC) sig_gui_dialog); signal_add_first("irssi init finished", (SIGNAL_FUNC) sig_init_finished); settings_init(); commands_init(); nickmatch_cache_init(); session_init(); #ifdef HAVE_CAPSICUM capsicum_init(); #endif chat_protocols_init(); chatnets_init(); expandos_init(); ignore_init(); servers_init(); write_buffer_init(); log_init(); log_away_init(); rawlog_init(); recode_init(); channels_init(); queries_init(); nicklist_init(); chat_commands_init(); wcwidth_wrapper_init(); settings_add_str("misc", "ignore_signals", ""); settings_add_bool("misc", "override_coredump_limit", FALSE); #ifdef HAVE_SYS_RESOURCE_H getrlimit(RLIMIT_CORE, &orig_core_rlimit); #endif read_settings(); signal_add("setup changed", (SIGNAL_FUNC) read_settings); signal_add("irssi init finished", (SIGNAL_FUNC) sig_irssi_init_finished); settings_check(); module_register("core", "core"); }
void core_init(int argc, char *argv[]) { dialog_type_queue = NULL; dialog_text_queue = NULL; modules_init(); #ifndef WIN32 pidwait_init(); #endif net_disconnect_init(); net_sendbuffer_init(); signals_init(); signal_add_first("gui dialog", (SIGNAL_FUNC) sig_gui_dialog); signal_add_first("irssi init finished", (SIGNAL_FUNC) sig_init_finished); settings_init(); commands_init(); nickmatch_cache_init(); session_init(); chat_protocols_init(); chatnets_init(); expandos_init(); ignore_init(); servers_init(); write_buffer_init(); log_init(); log_away_init(); rawlog_init(); recode_init(); channels_init(); queries_init(); nicklist_init(); chat_commands_init(); settings_add_str("misc", "ignore_signals", ""); settings_add_bool("misc", "override_coredump_limit", TRUE); #ifdef HAVE_SYS_RESOURCE_H getrlimit(RLIMIT_CORE, &orig_core_rlimit); #endif read_settings(); signal_add("setup changed", (SIGNAL_FUNC) read_settings); signal_add("irssi init finished", (SIGNAL_FUNC) sig_irssi_init_finished); settings_check(); module_register("core", "core"); }
void init(struct multiboot *mb) { size_t i; for(i=0;i<TEXT_HEIGHT*TEXT_WIDTH*2;i++) { *(((char *)TEXT_BUFFER)+i)=0; } text_pos=0; printk("benaryOS booted"); if(mb->mbs_cmdline) { printk(" with cmdline \"%s\"",(char *)mb->mbs_cmdline); } putchar('\n'); hardware_detection(); //Physical Memory Management printk("initialise PMM\n"); pmm_init(mb); //Global Descriptor Table printk("loading GDT\n"); gdt_init(); //Programmable Interrupt Timer printk("initialise PIT\n"); pit_init(100); //Programmable Interrupt Controller printk("initialise PIC\n"); pic_init(); //Interrupt Descriptor Table printk("initialise IDT\n"); idt_init(); //Paging printk("initialise Paging\n"); paging_init(mb); //Modules printk("loading modules(%d)\n",mb->mbs_mods_count); modules_init(mb); printk("benaryOS running\n"); printk("starting first task now\n"); asm volatile("sti"); //find_com(); //this will forget our thread asm volatile("int $0x20"); }
int main() { modules_init(); wmprintf("Build Time: " __DATE__ " " __TIME__ "\r\n"); /* Start the application framework */ if (app_framework_start(common_event_handler) != WM_SUCCESS) { wmprintf("Failed to start application framework\r\n"); appln_critical_error_handler((void *) -WM_FAIL); } return 0; }
static void arch_init( void ) { void setup_timers(void); openbios_init(); modules_init(); #ifdef CONFIG_DRIVER_IDE setup_timers(); ob_ide_init("/pci/pci-ata", 0x1f0, 0x3f4, 0x170, 0x374); #endif device_end(); bind_func("platform-boot", boot ); }
int main(int argc,char **argv) { bool success; /* initialize global variables */ globals_init(argv[0]); /* initialize modules */ modules_init(); /* parse command line */ success = parse_main(argc,argv); return (success) ? ST_EXIT_SUCCESS : ST_EXIT_ERROR; }
void core_init(void) { modules_init(); pidwait_init(); net_disconnect_init(); signals_init(); settings_init(); commands_init(); servers_init(); log_init(); rawlog_init(); special_vars_init(); }
STATIC_INLINE void main_init( void ) { #ifndef RADIO_CONTROL_SPEKTRUM_PRIMARY_PORT /* IF THIS IS NEEDED SOME PERHIPHERAL THEN PLEASE MOVE IT THERE */ for (uint32_t startup_counter=0; startup_counter<2000000; startup_counter++){ __asm("nop"); } #endif hw_init(); sys_time_init(); actuators_init(); radio_control_init(); booz2_analog_init(); baro_init(); #if defined USE_CAM || USE_DROP booz2_pwm_init_hw(); #endif battery_init(); imu_init(); // booz_fms_init(); // FIXME autopilot_init(); nav_init(); guidance_h_init(); guidance_v_init(); stabilization_init(); ahrs_aligner_init(); ahrs_init(); ins_init(); #ifdef USE_GPS booz_gps_init(); #endif modules_init(); int_enable(); }
STATIC_INLINE void main_init( void ) { #ifndef NO_FUCKING_STARTUP_DELAY #ifndef RADIO_CONTROL_SPEKTRUM_PRIMARY_PORT /* IF THIS IS NEEDED SOME PERHIPHERAL THEN PLEASE MOVE IT THERE */ for (uint32_t startup_counter=0; startup_counter<2000000; startup_counter++){ __asm("nop"); } #endif #endif mcu_init(); sys_time_init(); electrical_init(); actuators_init(); radio_control_init(); #if DATALINK == XBEE xbee_init(); #endif baro_init(); imu_init(); autopilot_init(); nav_init(); guidance_h_init(); guidance_v_init(); stabilization_init(); ahrs_aligner_init(); ahrs_init(); ins_init(); #ifdef USE_GPS gps_init(); #endif modules_init(); settings_init(); mcu_int_enable(); }
void arch_of_init( void ) { #if USE_RTAS phandle_t ph; #endif int autoboot; devtree_init(); node_methods_init(); modules_init(); setup_timers(); #ifdef CONFIG_DRIVER_PCI ob_pci_init(); #endif #if USE_RTAS if( !(ph=find_dev("/rtas")) ) printk("Warning: No /rtas node\n"); else { ulong size = 0x1000; while( size < (ulong)of_rtas_end - (ulong)of_rtas_start ) size *= 2; set_property( ph, "rtas-size", (char*)&size, sizeof(size) ); } #endif #if 0 /* tweak boot settings */ autoboot = !!get_bool_res("autoboot"); #endif autoboot = 0; if( !autoboot ) printk("Autobooting disabled - dropping into OpenFirmware\n"); setenv("auto-boot?", autoboot ? "true" : "false" ); setenv("boot-command", "briqboot"); #if 0 if( get_bool_res("tty-interface") == 1 ) #endif fword("activate-tty-interface"); /* hack */ device_end(); bind_func("briqboot", boot ); }
static inline void main_init(void) { mcu_init(); sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL); led_init(); uart0_init(); motor_power = 0; wt_servo_init(); wt_servo_set(500); spi_init(); wt_baro_init(); modules_init(); mcu_int_enable(); }
static inline void main_init(void) { mcu_init(); sys_time_register_timer((1. / PERIODIC_FREQUENCY), NULL); modules_init(); mcu_int_enable(); downlink_init(); AbiBindMsgIMU_GYRO_INT32(ABI_BROADCAST, &gyro_ev, gyro_cb); AbiBindMsgIMU_ACCEL_INT32(ABI_BROADCAST, &accel_ev, accel_cb); AbiBindMsgIMU_MAG_INT32(ABI_BROADCAST, &mag_ev, mag_cb); }
PROCESS_THREAD(eeprom_write_contiki_test, ev, data) { PROCESS_BEGIN(); static config_section_t * led_conf = 0; int i; led_conf = config_cnf_create_section(config_get()); strcpy(led_conf->name, "led"); config_section_set_uint(led_conf, "ddr", 39); config_section_set_uint(led_conf, "port", 40); config_section_set_uint(led_conf, "offset", 0); config_save(); config_close(); config_init(); if (config_open() == -1) alarma(10); modules_init(); devices_init(); if (admin_get_device_by_id(2) && admin_get_device_by_id(1)) { static led_t * led_m = 0; static led_t * led = 0; led_m = (led_t *)admin_get_device_by_id(2)->device; led = (led_t *)admin_get_device_by_id(1)->device; led->init(led); led_m->init(led_m); if (module_get(MODULE_LED1)->config == led_conf) { for (i = 0; i < 10; ++i) { led->on(led); _delay_ms(50); led->off(led); _delay_ms(50); } } led->on(led); led_m->on(led_m); } PROCESS_END(); }
STATIC_INLINE void main_init( void ) { mcu_init(); electrical_init(); actuators_init(); radio_control_init(); #if DATALINK == XBEE xbee_init(); #endif imu_init(); autopilot_init(); nav_init(); guidance_h_init(); guidance_v_init(); stabilization_init(); ahrs_aligner_init(); ahrs_init(); baro_init(); ins_init(); #if USE_GPS gps_init(); #endif modules_init(); settings_init(); mcu_int_enable(); // register the timers for the periodic functions main_periodic_tid = sys_time_register_timer((1./PERIODIC_FREQUENCY), NULL); radio_control_tid = sys_time_register_timer((1./60.), NULL); failsafe_tid = sys_time_register_timer(0.05, NULL); electrical_tid = sys_time_register_timer(0.1, NULL); baro_tid = sys_time_register_timer(0.02, NULL); telemetry_tid = sys_time_register_timer((1./60.), NULL); }
int main(int argc, char **argv) { MBDesktop *mb; mb = mbdesktop_init(argc, argv); mbdesktop_view_init_bg(mb); /* Add the root topelevel item */ mb->top_head_item = mbdesktop_item_new_with_params (mb, mb->top_level_name, NULL, NULL, ITEM_TYPE_ROOT ); mb->current_folder_item = mb->top_head_item; modules_init(mb); /* Do we have item modules loaded ? */ if (mb->top_head_item->item_child) mb->kbd_focus_item = mb->current_head_item = mb->scroll_offset_item = mb->top_head_item->item_child; else mb->kbd_focus_item = mb->current_head_item = mb->scroll_offset_item = mb->top_head_item; mbdesktop_calculate_item_dimentions(mb); /* mbdesktop_win_plugin_init (mb); if (mbdesktop_win_plugin_load (mb, "gpe-today")) mbdesktop_win_plugin_reparent (mb); */ mbdesktop_main(mb); return 0; }
void arch_of_init( void ) { mol_phandle_t ph; int autoboot; devtree_init(); node_methods_init(); nvram_init("/pci/mac-io/nvram"); openbios_init(); modules_init(); pseudodisk_init(); osiblk_init(); osiscsi_init(); init_video(); if( (ph=prom_find_device("/rtas")) == -1 ) printk("Warning: No /rtas node\n"); else { unsigned long size = 0x1000; while( size < (unsigned long)of_rtas_end - (unsigned long)of_rtas_start ) size *= 2; prom_set_prop( ph, "rtas-size", (char*)&size, sizeof(size) ); } /* tweak boot settings */ autoboot = !!get_bool_res("autoboot"); if( !autoboot ) printk("Autobooting disabled - dropping into OpenFirmware\n"); setenv("auto-boot?", autoboot ? "true" : "false" ); setenv("boot-command", "molboot"); if( get_bool_res("tty-interface") == 1 ) fword("activate-tty-interface"); /* hack */ device_end(); bind_func("molboot", boot ); }
int main(int argc, char *argv[]) { init(); freemem_init(); init_breakpoints(); //tracking_init(); modules_init(); stabs_init(); modules_load_list(); arexx_open_port(); if (argc < 2 || strcmp("NOGUI", argv[1]) ) main_open_window(); load_preferences(); event_loop(); cleanup(); //tracking_cleanup(); modules_cleanup(); //remove_hook(); end(); return 0; }
void initialise_sigyn(char *nick, char *ident, char *gecos, char *uplink, char * port, bool use_ssl, char *vhost) { me.client = mowgli_alloc(sizeof(irc_user_t)); me.stats.start = time(NULL); me.stats.inB = 0; me.stats.outB = 0; me.client->nick = nick; me.client->user = ident; me.client->gecos = gecos; me.uplink.port = port; me.uplink.hostname = uplink; me.uplink.ssl = use_ssl; me.uplink.vhost = vhost; me.uplink.connected = false; me.maxfd = 3; modules_init(); queue_init(); command_init(); channel_init(); isupport_table = mowgli_patricia_create(strcasecanon); }
/* * The main guy. */ int main(int argc, char *argv[]) { int rcode = EXIT_SUCCESS; int argval; const char *input_file = NULL; const char *output_file = NULL; const char *filter_file = NULL; FILE *fp; REQUEST *request = NULL; VALUE_PAIR *vp; VALUE_PAIR *filter_vps = NULL; /* * If the server was built with debugging enabled always install * the basic fatal signal handlers. */ #ifndef NDEBUG if (fr_fault_setup(getenv("PANIC_ACTION"), argv[0]) < 0) { fr_perror("unittest"); exit(EXIT_FAILURE); } #endif if ((progname = strrchr(argv[0], FR_DIR_SEP)) == NULL) progname = argv[0]; else progname++; debug_flag = 0; set_radius_dir(NULL, RADIUS_DIR); /* * Ensure that the configuration is initialized. */ memset(&main_config, 0, sizeof(main_config)); main_config.myip.af = AF_UNSPEC; main_config.port = 0; main_config.name = "radiusd"; /* * The tests should have only IPs, not host names. */ fr_hostname_lookups = false; /* * We always log to stdout. */ fr_log_fp = stdout; default_log.dst = L_DST_STDOUT; default_log.fd = STDOUT_FILENO; /* Process the options. */ while ((argval = getopt(argc, argv, "d:D:f:hi:mMn:o:xX")) != EOF) { switch (argval) { case 'd': set_radius_dir(NULL, optarg); break; case 'D': main_config.dictionary_dir = talloc_typed_strdup(NULL, optarg); break; case 'f': filter_file = optarg; break; case 'h': usage(0); break; case 'i': input_file = optarg; break; case 'm': main_config.debug_memory = true; break; case 'M': memory_report = true; main_config.debug_memory = true; break; case 'n': main_config.name = optarg; break; case 'o': output_file = optarg; break; case 'X': debug_flag += 2; main_config.log_auth = true; main_config.log_auth_badpass = true; main_config.log_auth_goodpass = true; break; case 'x': debug_flag++; break; default: usage(1); break; } } if (debug_flag) { version(); } fr_debug_flag = debug_flag; /* * Mismatch between the binary and the libraries it depends on */ if (fr_check_lib_magic(RADIUSD_MAGIC_NUMBER) < 0) { fr_perror("radiusd"); exit(EXIT_FAILURE); } /* Read the configuration files, BEFORE doing anything else. */ if (main_config_init() < 0) { rcode = EXIT_FAILURE; goto finish; } /* * Load the modules */ if (modules_init(main_config.config) < 0) { rcode = EXIT_FAILURE; goto finish; } fr_state_init(); /* Set the panic action (if required) */ if (main_config.panic_action && #ifndef NDEBUG !getenv("PANIC_ACTION") && #endif (fr_fault_setup(main_config.panic_action, argv[0]) < 0)) { rcode = EXIT_FAILURE; goto finish; } setlinebuf(stdout); /* unbuffered output */ if (!input_file || (strcmp(input_file, "-") == 0)) { fp = stdin; } else { fp = fopen(input_file, "r"); if (!fp) { fprintf(stderr, "Failed reading %s: %s\n", input_file, strerror(errno)); rcode = EXIT_FAILURE; goto finish; } } /* * Grab the VPs from stdin, or from the file. */ request = request_setup(fp); if (!request) { fprintf(stderr, "Failed reading input: %s\n", fr_strerror()); rcode = EXIT_FAILURE; goto finish; } /* * No filter file, OR there's no more input, OR we're * reading from a file, and it's different from the * filter file. */ if (!filter_file || filedone || ((input_file != NULL) && (strcmp(filter_file, input_file) != 0))) { if (output_file) { fclose(fp); fp = NULL; } filedone = false; } /* * There is a filter file. If necessary, open it. If we * already are reading it via "input_file", then we don't * need to re-open it. */ if (filter_file) { if (!fp) { fp = fopen(filter_file, "r"); if (!fp) { fprintf(stderr, "Failed reading %s: %s\n", filter_file, strerror(errno)); rcode = EXIT_FAILURE; goto finish; } } if (readvp2(request, &filter_vps, fp, &filedone) < 0) { fprintf(stderr, "Failed reading attributes from %s: %s\n", filter_file, fr_strerror()); rcode = EXIT_FAILURE; goto finish; } /* * FIXME: loop over input packets. */ fclose(fp); } rad_virtual_server(request); if (!output_file || (strcmp(output_file, "-") == 0)) { fp = stdout; } else { fp = fopen(output_file, "w"); if (!fp) { fprintf(stderr, "Failed writing %s: %s\n", output_file, strerror(errno)); exit(EXIT_FAILURE); } } print_packet(fp, request->reply); if (output_file) fclose(fp); /* * Update the list with the response type. */ vp = radius_paircreate(request->reply, &request->reply->vps, PW_RESPONSE_PACKET_TYPE, 0); vp->vp_integer = request->reply->code; { VALUE_PAIR const *failed[2]; if (filter_vps && !pairvalidate(failed, filter_vps, request->reply->vps)) { pairvalidate_debug(request, failed); fr_perror("Output file %s does not match attributes in filter %s", output_file ? output_file : input_file, filter_file); rcode = EXIT_FAILURE; goto finish; } } INFO("Exiting normally"); finish: talloc_free(request); /* * Detach any modules. */ modules_free(); xlat_free(); /* modules may have xlat's */ fr_state_delete(); /* * Free the configuration items. */ main_config_free(); if (memory_report) { INFO("Allocated memory at time of report:"); fr_log_talloc_report(NULL); } return rcode; }