mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- 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);
 |