Allow to specify the name of the IP tunnel netdevice via commandline option '-n <name>'
parent
d68d6132da
commit
f135ce3d47
12
isotptun.c
12
isotptun.c
|
|
@ -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");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue