diff options
author | Jeremy McNamara <jj@nufone.net> | 2003-09-14 00:05:37 +0000 |
---|---|---|
committer | Jeremy McNamara <jj@nufone.net> | 2003-09-14 00:05:37 +0000 |
commit | d6ba77a74b3a013518f185f14b0467382b4292a6 (patch) | |
tree | 2cc1cf56a93f8efa7ebdc4df3fa2647144469db7 /channels/chan_skinny.c | |
parent | b745ba8380a855b5c549a733290342711283372a (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-x | channels/chan_skinny.c | 39 |
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() { |