summaryrefslogtreecommitdiff
path: root/channels/chan_skinny.c
diff options
context:
space:
mode:
authorJeremy McNamara <jj@nufone.net>2003-09-14 00:05:37 +0000
committerJeremy McNamara <jj@nufone.net>2003-09-14 00:05:37 +0000
commitd6ba77a74b3a013518f185f14b0467382b4292a6 (patch)
tree2cc1cf56a93f8efa7ebdc4df3fa2647144469db7 /channels/chan_skinny.c
parentb745ba8380a855b5c549a733290342711283372a (diff)
implement reload
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1510 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_skinny.c')
-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()
{