| --- a/src/br2684/br2684ctl.c |
| +++ b/src/br2684/br2684ctl.c |
| @@ -1,3 +1,4 @@ |
| +#define _GNU_SOURCE |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <unistd.h> |
| @@ -43,6 +44,7 @@ struct br2684_params { |
| |
| |
| int lastsock, lastitf; |
| +static char *up_script; |
| |
| |
| void fatal(const char *str, int err) |
| @@ -185,6 +187,8 @@ int assign_vcc(char *astr, int encap, in |
| |
| void start_interface(struct br2684_params* params) |
| { |
| + char *cmd; |
| + |
| if (params->astr==NULL) { |
| syslog(LOG_ERR, "Required ATM parameters not specified."); |
| exit(1); |
| @@ -193,13 +197,18 @@ void start_interface(struct br2684_param |
| create_br(params->itfnum, params->payload); |
| assign_vcc(params->astr, params->encap, params->payload, params->sndbuf, |
| params->reqqos); |
| + if (up_script) { |
| + asprintf(&cmd, "%s nas%d", up_script, lastitf); |
| + system(cmd); |
| + free(cmd); |
| + } |
| } |
| |
| |
| void usage(char *s) |
| { |
| printf("usage: %s [-b] [[-c number] [-e 0|1] [-s sndbuf] [-q qos] [-p 0|1] " |
| - "[-a [itf.]vpi.vci]*]*\n", s); |
| + "[-a [itf.]vpi.vci]*]* [-S script]\n", s); |
| printf(" encapsulations: 0=llc, 1=vcmux\n payloads: 0=routed, 1=bridged\n"); |
| exit(1); |
| } |
| @@ -225,7 +234,7 @@ int main (int argc, char **argv) |
| |
| openlog (LOG_NAME,LOG_OPTION,LOG_FACILITY); |
| if (argc>1) |
| - while ((c = getopt(argc, argv,"q:a:bc:e:s:p:?h")) !=EOF) |
| + while ((c = getopt(argc, argv,"q:a:bc:e:s:S:p:?h")) !=EOF) |
| switch (c) { |
| case 'q': |
| printf ("optarg : %s",optarg); |
| @@ -258,6 +267,9 @@ int main (int argc, char **argv) |
| params.sndbuf=8192; |
| } |
| break; |
| + case 'S': |
| + up_script = optarg; |
| + break; |
| case 'p': /* payload type: routed (0) or bridged (1) */ |
| #ifdef BR2684_FLAG_ROUTED |
| params.payload = atoi(optarg); |