Allow to specify the name of the IP tunnel netdevice via commandline option '-n <name>'

pull/7/head
Oliver Hartkopp 2009-11-25 17:15:09 +00:00
parent d68d6132da
commit f135ce3d47
1 changed files with 9 additions and 3 deletions

View File

@ -70,6 +70,7 @@
#include <linux/if_tun.h> #include <linux/if_tun.h>
#define NO_CAN_ID 0xFFFFFFFFU #define NO_CAN_ID 0xFFFFFFFFU
#define DEFAULT_NAME "ctun%d"
static volatile int running = 1; 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, "ethernet frames inside ISO15765-2 (unreliable) datagrams on CAN.\n\n");
fprintf(stderr, "Options: -s <can_id> (source can_id. Use 8 digits for extended IDs)\n"); fprintf(stderr, "Options: -s <can_id> (source can_id. Use 8 digits for extended IDs)\n");
fprintf(stderr, " -d <can_id> (destination can_id. Use 8 digits for extended IDs)\n"); fprintf(stderr, " -d <can_id> (destination can_id. Use 8 digits for extended IDs)\n");
fprintf(stderr, " -n <name> (name of created IP netdevice. Default: '%s')\n", DEFAULT_NAME);
fprintf(stderr, " -x <addr> (extended addressing mode.)\n"); fprintf(stderr, " -x <addr> (extended addressing mode.)\n");
fprintf(stderr, " -p <byte> (padding byte rx path)\n"); fprintf(stderr, " -p <byte> (padding byte rx path)\n");
fprintf(stderr, " -q <byte> (padding byte tx path)\n"); fprintf(stderr, " -q <byte> (padding byte tx path)\n");
@ -112,8 +114,8 @@ int main(int argc, char **argv)
int opt, ret; int opt, ret;
extern int optind, opterr, optopt; extern int optind, opterr, optopt;
static int verbose; static int verbose;
unsigned char buffer[4096]; unsigned char buffer[4096];
static char name[IFNAMSIZ] = DEFAULT_NAME;
int nbytes; int nbytes;
signal(SIGTERM, sigterm); 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; 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) { switch (opt) {
case 's': case 's':
addr.can_addr.tp.tx_id = strtoul(optarg, (char **)NULL, 16); 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; addr.can_addr.tp.rx_id |= CAN_EFF_FLAG;
break; break;
case 'n':
strncpy(name, optarg, IFNAMSIZ-1);
break;
case 'x': case 'x':
opts.flags |= CAN_ISOTP_EXTEND_ADDR; opts.flags |= CAN_ISOTP_EXTEND_ADDR;
opts.ext_address = strtoul(optarg, (char **)NULL, 16) & 0xFF; opts.ext_address = strtoul(optarg, (char **)NULL, 16) & 0xFF;
@ -237,7 +243,7 @@ int main(int argc, char **argv)
memset(&ifr, 0, sizeof(ifr)); memset(&ifr, 0, sizeof(ifr));
ifr.ifr_flags = IFF_TUN | IFF_NO_PI; 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) { if (ioctl(t, TUNSETIFF, (void *) &ifr) < 0) {
perror("ioctl tunfd"); perror("ioctl tunfd");