From f135ce3d4729eca527c1351aaf90707882f1bc05 Mon Sep 17 00:00:00 2001 From: Oliver Hartkopp Date: Wed, 25 Nov 2009 17:15:09 +0000 Subject: [PATCH] Allow to specify the name of the IP tunnel netdevice via commandline option '-n ' --- isotptun.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/isotptun.c b/isotptun.c index 1ea56b9..bda376b 100644 --- a/isotptun.c +++ b/isotptun.c @@ -70,6 +70,7 @@ #include #define NO_CAN_ID 0xFFFFFFFFU +#define DEFAULT_NAME "ctun%d" static volatile int running = 1; @@ -80,6 +81,7 @@ void print_usage(char *prg) fprintf(stderr, "ethernet frames inside ISO15765-2 (unreliable) datagrams on CAN.\n\n"); fprintf(stderr, "Options: -s (source can_id. Use 8 digits for extended IDs)\n"); fprintf(stderr, " -d (destination can_id. Use 8 digits for extended IDs)\n"); + fprintf(stderr, " -n (name of created IP netdevice. Default: '%s')\n", DEFAULT_NAME); fprintf(stderr, " -x (extended addressing mode.)\n"); fprintf(stderr, " -p (padding byte rx path)\n"); fprintf(stderr, " -q (padding byte tx path)\n"); @@ -112,8 +114,8 @@ int main(int argc, char **argv) int opt, ret; extern int optind, opterr, optopt; static int verbose; - unsigned char buffer[4096]; + static char name[IFNAMSIZ] = DEFAULT_NAME; int nbytes; signal(SIGTERM, sigterm); @@ -122,7 +124,7 @@ int main(int argc, char **argv) addr.can_addr.tp.tx_id = addr.can_addr.tp.rx_id = NO_CAN_ID; - while ((opt = getopt(argc, argv, "s:d:x:p:q:P:t:b:m:whv?")) != -1) { + while ((opt = getopt(argc, argv, "s:d:n:x:p:q:P:t:b:m:whv?")) != -1) { switch (opt) { case 's': addr.can_addr.tp.tx_id = strtoul(optarg, (char **)NULL, 16); @@ -136,6 +138,10 @@ int main(int argc, char **argv) addr.can_addr.tp.rx_id |= CAN_EFF_FLAG; break; + case 'n': + strncpy(name, optarg, IFNAMSIZ-1); + break; + case 'x': opts.flags |= CAN_ISOTP_EXTEND_ADDR; opts.ext_address = strtoul(optarg, (char **)NULL, 16) & 0xFF; @@ -237,7 +243,7 @@ int main(int argc, char **argv) memset(&ifr, 0, sizeof(ifr)); ifr.ifr_flags = IFF_TUN | IFF_NO_PI; - strncpy(ifr.ifr_name, "ctun%d", IFNAMSIZ); + strncpy(ifr.ifr_name, name, IFNAMSIZ); if (ioctl(t, TUNSETIFF, (void *) &ifr) < 0) { perror("ioctl tunfd"); -- 2.39.2