aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorjeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b>2003-09-14 00:05:37 +0000
committerjeremy <jeremy@f38db490-d61c-443f-a65b-d21fe96a405b>2003-09-14 00:05:37 +0000
commit085cbb8139cd4f3e87a190fd033958e521390f86 (patch)
tree2cc1cf56a93f8efa7ebdc4df3fa2647144469db7 /channels
parentd8d1e1354c0876e927f3be4cb86971b9a68a85cb (diff)
implement reload
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1510 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rwxr-xr-xchannels/chan_skinny.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c
index 3784b06de..c50b49ab5 100755
--- a/channels/chan_skinny.c
+++ b/channels/chan_skinny.c
@@ -2601,6 +2601,45 @@ static int reload_config(void)
return 0;
}
+void delete_devices(void)
+{
+ struct skinny_device *d, *dlast;
+ struct skinny_line *l, *llast;
+ struct skinny_subchannel *sub, *slast;
+
+ ast_mutex_lock(&devicelock);
+
+ /* Delete all devices */
+ for (d=devices;d;) {
+
+ /* Delete all lines for this device */
+ for (l=d->lines;l;) {
+ /* Delete all subchannels for this line */
+ for (sub=l->sub;sub;) {
+ slast = sub;
+ sub = sub->next;
+ free(slast);
+ }
+ llast = l;
+ l = l->next;
+ free(llast);
+ }
+ dlast = d;
+ d = d->next;
+ free(dlast);
+ }
+ devices=NULL;
+ ast_mutex_unlock(&devicelock);
+}
+
+int reload(void)
+{
+ delete_devices();
+ reload_config();
+ restart_monitor();
+ return 0;
+}
+
int load_module()
{