openwrt/package/network/utils/linux-atm/patches/501-br2684ctl_itfname.patch
Martin Schiller 1b1388f640 linux-atm: add br2684ctl option to specify the netdev name
Add the uci option nameprefix to specifc a target netdev name. Patch the
br2684ctl code to accept and set a netdev name via commandline parameters.

It allows to use the same netdev name for ATM and PTM lines on lantiq
xdsl hardware.

Signed-off-by: Martin Schiller <ms@dev.tdt.de>
Signed-off-by: Mathis Kresin <dev@kresin.me>
2018-01-10 08:08:53 +01:00

75 lines
2.5 KiB
Diff

--- a/src/br2684/br2684ctl.c
+++ b/src/br2684/br2684ctl.c
@@ -45,6 +45,7 @@ struct br2684_params {
int lastsock, lastitf;
static char *up_script;
+const char *itfname = "nas";
void fatal(const char *str, int err)
@@ -73,7 +74,7 @@ int create_pidfile(int num)
if (num < 0) return -1;
- snprintf(name, 32, "/var/run/br2684ctl-nas%d.pid", num);
+ snprintf(name, 32, "/var/run/br2684ctl-%s%d.pid", itfname, num);
pidfile = fopen(name, "w");
if (pidfile == NULL) return -1;
fprintf(pidfile, "%d", getpid());
@@ -102,7 +103,7 @@ int create_br(int itfnum, int payload)
ni.media |= BR2684_FLAG_ROUTED;
#endif
ni.mtu = 1500;
- sprintf(ni.ifname, "nas%d", itfnum);
+ sprintf(ni.ifname, "%s%d", itfname, itfnum);
err=ioctl (lastsock, ATM_NEWBACKENDIF, &ni);
if (err == 0)
@@ -167,7 +168,7 @@ int assign_vcc(char *astr, int encap, in
be.backend_num = ATM_BACKEND_BR2684;
be.ifspec.method = BR2684_FIND_BYIFNAME;
- sprintf(be.ifspec.spec.ifname, "nas%d", lastitf);
+ sprintf(be.ifspec.spec.ifname, "%s%d", itfname, lastitf);
be.fcs_in = BR2684_FCSIN_NO;
be.fcs_out = BR2684_FCSOUT_NO;
be.fcs_auto = 0;
@@ -198,7 +199,7 @@ void start_interface(struct br2684_param
assign_vcc(params->astr, params->encap, params->payload, params->sndbuf,
params->reqqos);
if (up_script) {
- asprintf(&cmd, "%s nas%d", up_script, lastitf);
+ asprintf(&cmd, "%s %s%d", up_script, itfname, lastitf);
system(cmd);
free(cmd);
}
@@ -207,7 +208,7 @@ void start_interface(struct br2684_param
void usage(char *s)
{
- printf("usage: %s [-b] [[-c number] [-e 0|1] [-s sndbuf] [-q qos] [-p 0|1] "
+ printf("usage: %s [-b] [-n name] [[-c number] [-e 0|1] [-s sndbuf] [-q qos] [-p 0|1] "
"[-a [itf.]vpi.vci]*]* [-S script]\n", s);
printf(" encapsulations: 0=llc, 1=vcmux\n payloads: 0=routed, 1=bridged\n");
exit(1);
@@ -234,7 +235,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:S:p:?h")) !=EOF)
+ while ((c = getopt(argc, argv,"q:a:bn:c:e:s:S:p:?h")) !=EOF)
switch (c) {
case 'q':
printf ("optarg : %s",optarg);
@@ -247,6 +248,9 @@ int main (int argc, char **argv)
case 'b':
background=1;
break;
+ case 'n':
+ itfname = optarg;
+ break;
case 'c':
/* temporary, to make it work with multiple interfaces: */
if (params.itfnum>=0) start_interface(&params);