Adding shutdown option to interface.conf
authorAndreas Eversberg <jolly@eversberg.eu>
Fri, 13 Jan 2012 04:13:30 +0000 (05:13 +0100)
committerAndreas Eversberg <jolly@eversberg.eu>
Fri, 13 Jan 2012 04:13:30 +0000 (05:13 +0100)
This way an interface can be disabled by just one keyword
and not by uncommenting all lines of it.

interface.c
interface.h

index ee753a9..cbfed2e 100644 (file)
@@ -1070,6 +1070,13 @@ static int inter_remote(struct interface *interface, char *filename, int line, c
        return(0);
 }
 
        return(0);
 }
 
+static int inter_shutdown(struct interface *interface, char *filename, int line, char *parameter, char *value)
+{
+       interface->shutdown = 1;
+
+       return(0);
+}
+
 
 /*
  * structure of parameters
 
 /*
  * structure of parameters
@@ -1234,6 +1241,9 @@ struct interface_param interface_param[] = {
        "Sets up an interface that communicates with the remote application.\n"
        "Use \"asterisk\" to use chan_lcr as remote application."},
 
        "Sets up an interface that communicates with the remote application.\n"
        "Use \"asterisk\" to use chan_lcr as remote application."},
 
+       {"shutdown", &inter_shutdown, "",
+       "Interface will not be loaded when processing interface.conf"},
+
        {NULL, NULL, NULL, NULL}
 };
 
        {NULL, NULL, NULL, NULL}
 };
 
@@ -1545,7 +1555,11 @@ void relink_interfaces(void)
                ifport = interface->ifport;
                while(ifport) {
                        if (!ifport->mISDNport) {
                ifport = interface->ifport;
                while(ifport) {
                        if (!ifport->mISDNport) {
-                               load_port(ifport);
+                               if (!interface->shutdown) {
+                                       load_port(ifport);
+                               } else {
+                                       ifport->block = 2;
+                               }
                        }
                        ifport = ifport->next;
                }
                        }
                        ifport = ifport->next;
                }
index f271080..2dd9889 100644 (file)
@@ -100,6 +100,7 @@ struct interface {
        int                     extension; /* calls are handled as extension */
        int                     is_tones; /* generate tones */
        int                     is_earlyb; /* bridge tones during call setup */
        int                     extension; /* calls are handled as extension */
        int                     is_tones; /* generate tones */
        int                     is_earlyb; /* bridge tones during call setup */
+       int                     shutdown; /* interface will not automatically be loaded */
        int                     hunt; /* select algorithm */
        int                     hunt_next; /* ifport index to start hunt */
        struct interface_port   *ifport; /* link to interface port list */
        int                     hunt; /* select algorithm */
        int                     hunt_next; /* ifport index to start hunt */
        struct interface_port   *ifport; /* link to interface port list */