static void flash_firmware(void) { char* svcs[] = { "l2tpd", "xl2tpd", "pppd", "wpa_cli", "wpa_supplicant", NULL }; stop_misc(); stop_services(0); // don't stop httpd/telnetd/sshd/vpn #if (BOARD_NUM_USB_PORTS > 0) stop_usb_printer_spoolers(); safe_remove_usb_device(0, NULL, 0); #endif stop_igmpproxy(NULL); kill_services(svcs, 6, 1); /* save storage (if changed) */ storage_save_time(60); write_storage_to_mtd(); sync(); sleep(1); if (eval("/tmp/mtd_write", "-r", "write", FW_IMG_NAME, FW_MTD_NAME) != 0) { start_watchdog(); } }
void on_deferred_hotplug_usb(void) { int plug_modem = 0; int unplug_modem = 0; if (nvram_match("usb_hotplug_ms", "1")) { nvram_set_int_temp("usb_hotplug_ms", 0); try_start_usb_apps(); nvram_set_int_temp("usb_opt_start", 0); } if (nvram_match("usb_unplug_lp", "1")) { nvram_set_int_temp("usb_unplug_lp", 0); if (!usb_port_module_used("usblp")) stop_usb_printer_spoolers(); } if (nvram_match("usb_hotplug_lp", "1")) { nvram_set_int_temp("usb_hotplug_lp", 0); try_start_usb_printer_spoolers(); } if (nvram_match("usb_unplug_md", "1")) { nvram_set_int_temp("usb_unplug_md", 0); if (nvram_get_int("modem_rule") > 0) unplug_modem = 1; } if (nvram_match("usb_hotplug_md", "1")) { plug_modem = 1; nvram_set_int_temp("usb_hotplug_md", 0); } if (unplug_modem) { try_wan_reconnect(1, 0); } if (plug_modem && !unplug_modem) { try_start_usb_modem_to_wan(); } }
int mdev_lp_main(int argc, char **argv) { int isLock; const char *device_name, *action; if(argc != 3){ printf("Usage: %s [device_name] [action]\n", argv[0]); return 0; } device_name = argv[1]; action = argv[2]; usb_dbg("(%s): action=%s.\n", device_name, action); if(get_device_type_by_device(device_name) != DEVICE_TYPE_PRINTER){ usb_dbg("(%s): The device is not a printer.\n", device_name); return 0; } // Check Lock. if((isLock = file_lock((char *)device_name)) == -1){ usb_dbg("(%s): Can't set the file lock!\n", device_name); return 0; } // If remove the device? if(!check_hotplug_action(action)){ int ports_used_usblp = usb_port_module_used("usblp"); if (!ports_used_usblp) stop_usb_printer_spoolers(); file_unlock(isLock); return 0; } notify_rc("on_hotplug_usb_printer"); usb_dbg("(%s): Success!\n", device_name); file_unlock(isLock); return 1; }
void shutdown_router(int use_reboot) { int is_ap_mode = get_ap_mode(); stop_misc(); stop_services(1); #if (BOARD_NUM_USB_PORTS > 0) stop_usb_printer_spoolers(); safe_remove_usb_device(0, NULL, !use_reboot); #endif #if defined (BOARD_GPIO_LED_USB) LED_CONTROL(BOARD_GPIO_LED_USB, LED_OFF); #endif stop_wan(); stop_services_lan_wan(); set_ipv4_forward(0); #if defined (BOARD_GPIO_LED_WAN) LED_CONTROL(BOARD_GPIO_LED_WAN, LED_OFF); #endif storage_save_time(10); write_storage_to_mtd(); stop_8021x_all(); stop_wifi_all_wl(); stop_wifi_all_rt(); stop_logger(); stop_lan(is_ap_mode); umount_rwfs_partition(); #if defined (BOARD_GPIO_LED_LAN) LED_CONTROL(BOARD_GPIO_LED_LAN, LED_OFF); #endif #if defined (BOARD_GPIO_LED_POWER) LED_CONTROL(BOARD_GPIO_LED_POWER, LED_OFF); #endif if (!use_reboot) module_smart_unload("rt_timer_wdg", 0); }
static void try_start_usb_printer_spoolers(void) { stop_usb_printer_spoolers(); exec_printer_daemons(1); }
void restart_usb_printer_spoolers(void) { stop_usb_printer_spoolers(); exec_printer_daemons(0); }