/* * ADD INDICATION command stuff */ static int handle_add_indication(int fd, int argc, char *argv[]) { struct ind_tone_zone *tz; int created_country = 0; if (argc != 5) return RESULT_SHOWUSAGE; tz = ast_get_indication_zone(argv[2]); if (!tz) { /* country does not exist, create it */ ast_log(LOG_NOTICE, "Country '%s' does not exist, creating it.\n",argv[2]); if (!(tz = ast_calloc(1, sizeof(*tz)))) { return -1; } ast_copy_string(tz->country,argv[2],sizeof(tz->country)); if (ast_register_indication_country(tz)) { ast_log(LOG_WARNING, "Unable to register new country\n"); free(tz); return -1; } created_country = 1; } if (ast_register_indication(tz,argv[3],argv[4])) { ast_log(LOG_WARNING, "Unable to register indication %s/%s\n",argv[2],argv[3]); if (created_country) ast_unregister_indication_country(argv[2]); return -1; } return 0; }
static int reload(void) { /* remove the registed indications... */ ast_unregister_indication_country(NULL); return ind_load_module(); }
/* * REMOVE INDICATION command stuff */ static int handle_remove_indication(int fd, int argc, char *argv[]) { struct ind_tone_zone *tz; if (argc != 3 && argc != 4) return RESULT_SHOWUSAGE; if (argc == 3) { /* remove entiry country */ if (ast_unregister_indication_country(argv[2])) { ast_log(LOG_WARNING, "Unable to unregister indication country %s\n",argv[2]); return -1; } return 0; } tz = ast_get_indication_zone(argv[2]); if (!tz) { ast_log(LOG_WARNING, "Unable to unregister indication %s/%s, country does not exists\n",argv[2],argv[3]); return -1; } if (ast_unregister_indication(tz,argv[3])) { ast_log(LOG_WARNING, "Unable to unregister indication %s/%s\n",argv[2],argv[3]); return -1; } return 0; }
/* * Standard module functions ... */ static int unload_module(void) { /* remove the registed indications... */ ast_unregister_indication_country(NULL); /* and the functions */ ast_cli_unregister_multiple(cli_indications, sizeof(cli_indications) / sizeof(struct ast_cli_entry)); ast_unregister_application("PlayTones"); ast_unregister_application("StopPlayTones"); return 0; }
/* * Standard module functions ... */ int unload_module(void) { /* remove the registed indications... */ ast_unregister_indication_country(NULL); /* and the functions */ ast_cli_unregister(&add_indication_cli); ast_cli_unregister(&remove_indication_cli); ast_cli_unregister(&show_indications_cli); ast_unregister_application("PlayTones"); ast_unregister_application("StopPlayTones"); return 0; }