From 356ba1469d336a9e1abe26c646ab890864f3bd14 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Radek=20Mat=C4=9Bjka?= Date: Thu, 24 Jan 2013 17:46:08 -0600 Subject: [PATCH 1/1] cegw improved, test distro dns lookup added --- can-utils | 2 +- distro/customroot/etc/host.conf | 3 + distro/customroot/etc/hosts | 1 + distro/customroot/etc/nsswitch.conf | 8 + distro/customroot/lib/libnss_files.so.2 | Bin 0 -> 42580 bytes distro/customroot/sbin/mkcegwdev | 2 +- utils/cegw/cegw.c | 185 +++++++++++++++++------- 7 files changed, 143 insertions(+), 58 deletions(-) create mode 100644 distro/customroot/etc/host.conf create mode 100644 distro/customroot/etc/hosts create mode 100644 distro/customroot/etc/nsswitch.conf create mode 100644 distro/customroot/lib/libnss_files.so.2 diff --git a/can-utils b/can-utils index b5c645f..0d6378d 160000 --- a/can-utils +++ b/can-utils @@ -1 +1 @@ -Subproject commit b5c645f83c7fc395b36918f79634ea553eae4e43 +Subproject commit 0d6378dffe86fecbbb5b02c4c59a3e1b01fcff75 diff --git a/distro/customroot/etc/host.conf b/distro/customroot/etc/host.conf new file mode 100644 index 0000000..ca6e762 --- /dev/null +++ b/distro/customroot/etc/host.conf @@ -0,0 +1,3 @@ +order hosts,bind +multi on + diff --git a/distro/customroot/etc/hosts b/distro/customroot/etc/hosts new file mode 100644 index 0000000..33ed302 --- /dev/null +++ b/distro/customroot/etc/hosts @@ -0,0 +1 @@ +127.0.0.1 localhost diff --git a/distro/customroot/etc/nsswitch.conf b/distro/customroot/etc/nsswitch.conf new file mode 100644 index 0000000..847e31e --- /dev/null +++ b/distro/customroot/etc/nsswitch.conf @@ -0,0 +1,8 @@ +passwd: files +group: files +hosts: files dns +networks: files dns +services: files +protocols: files +netmasks: files + diff --git a/distro/customroot/lib/libnss_files.so.2 b/distro/customroot/lib/libnss_files.so.2 new file mode 100644 index 0000000000000000000000000000000000000000..e2d6982d2c2a6f8cb530667eea95026810d5101a GIT binary patch literal 42580 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�fU_ZY!P+ItIu;PCdI&__9%dk2lV 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ð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 literal 0 HcmV?d00001 diff --git a/distro/customroot/sbin/mkcegwdev b/distro/customroot/sbin/mkcegwdev index 9d59a31..1d55735 100755 --- a/distro/customroot/sbin/mkcegwdev +++ b/distro/customroot/sbin/mkcegwdev @@ -1,4 +1,4 @@ #/bin/sh modprobe canethgw -mknod /dev/cegw c 10 59 +mknod /dev/canethgw c 10 59 diff --git a/utils/cegw/cegw.c b/utils/cegw/cegw.c index 3e0e9d5..feb083a 100644 --- a/utils/cegw/cegw.c +++ b/utils/cegw/cegw.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -25,42 +26,47 @@ #include #include #include +#include +#include #include unsigned int cegw_errno = 0; -enum -{ +enum { CEGW_ERR_UNKNOWN, CEGW_ERR_COLON, - CEGW_ERR_UNEXLEN, - CEGW_ERR_ATON, - CEGW_ERR_PORT + CEGW_ERR_GETADDRI, + CEGW_ERR_FLTALCK, + CEGW_ERR_FLTPARSE }; -char* cegw_errlist[] = -{ - [CEGW_ERR_UNKNOWN] = "", - [CEGW_ERR_COLON ] = "expected ':' (:)", - [CEGW_ERR_UNEXLEN] = "unexpected ip address length, please use dot notation" - " (eg. 127.0.0.1)", - [CEGW_ERR_ATON ] = "ip address mismatch", - [CEGW_ERR_PORT ] = "port number" +char *cegw_errlist[] = { + + [CEGW_ERR_UNKNOWN ] = "", + [CEGW_ERR_COLON ] = "expected ':' (:)", + [CEGW_ERR_GETADDRI] = "getaddrinfo failed", + [CEGW_ERR_FLTALCK ] = "filter alloc failed", + [CEGW_ERR_FLTPARSE] = "filter parsing failed" }; static const char help_msg[] = "usage:\n" - " %s : :\n" - " [list of additional udp recipients ]\n" + " %s [,filter]* : :\n" + " [list of additional udp recipients :]\n" "example:\n" " %s can0 192.168.0.1:10501 192.168.0.4:980 192.168.0.7:1160\n\n" " Executing this command will set the gateway so that it will\n" " listen for udp messages on 192.168.0.1:10501 and send them\n" " to can0. Simultaneously, it will send all messages from can0\n" " to 192.168.0.4:980 and 192.168.0.7:1160 via udp. The message is\n" - " therefore cloned. Notice that there can be any number\n" - " of udp recipients.\n"; + " therefore cloned. Notice that there can be more udp recipients.\n" + " The can filter is specified in the same way as in candump utility.\n"; + +const struct addrinfo hints = { + .ai_family = AF_INET, + .ai_socktype = SOCK_DGRAM +}; -static void perr(char* s) +static void perr(char *s) { if (s) { if (cegw_errno == 0) { @@ -76,66 +82,115 @@ static void perr(char* s) } /** - * read_addrport - parses @in for eth address. + * readsockaddr - parses @in for eth address. * Valid input is e.g. 127.0.0.1:10502. If parsing fails - * the cause is stored in cegw_errno. + * the cause is stored in cegw_errno. Please note that + * the function modifies content of arg. * - * @param[in] in string to search in - * @param[out] addr ip address - * @param[out] port transport layer port + * @param[in] arg hostname:port string + * @param[out] addr filled sockaddr_in structure * @return 0 on success, -1 otherwise */ -int read_addrport(char* in, struct in_addr* addr, unsigned short* port) +int readsockaddr(char *arg, struct sockaddr_in *addr) { - char* delim = NULL; - const int addrstr_len = 16; - char addrstr[addrstr_len]; - int addrlen; + int ret; + char *delim; + struct addrinfo *res; + + delim = strchr(arg, ':'); - if ((delim = strchr(in, ':')) == NULL) { + if (delim == NULL) { cegw_errno = CEGW_ERR_COLON; return -1; } - /* get address */ - addrlen = delim - in; - if (addrlen > addrstr_len) { - cegw_errno = CEGW_ERR_UNEXLEN; + *delim = '\0'; + delim++; + + ret = getaddrinfo(arg, delim, &hints, &res); + if (ret != 0) { + fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(ret)); + cegw_errno = CEGW_ERR_GETADDRI; return -1; } - memcpy(addrstr, in, addrlen); - addrstr[addrlen] = '\0'; - if (inet_aton(addrstr, addr) == 0) { - cegw_errno = CEGW_ERR_ATON; - return -1; + memcpy(addr, res->ai_addr, sizeof(*addr)); + + freeaddrinfo(res); + return 0; +} + +/** + * readfilter - reads can filter definition from nptr + */ +int readfilter(char *nptr, struct can_filter **filter, int *out_numfilter, can_err_mask_t *err_mask) +{ + char *ptr; + int numfilter; + struct can_filter *rfilter; + + numfilter = 0; + ptr = nptr; + while (ptr) { + numfilter++; + ptr++; /* hop behind the ',' */ + ptr = strchr(ptr, ','); /* exit condition */ } - /* get port */ - /* ToDo: handle overflow */ - if (sscanf(delim, ":%hu", port) != 1) { - cegw_errno = CEGW_ERR_PORT; + rfilter = malloc(numfilter * sizeof(*rfilter)); + if (!rfilter) { + cegw_errno = CEGW_ERR_FLTALCK; return -1; } + numfilter = 0; + *err_mask = 0; + + while (nptr) { + + ptr = nptr+1; /* hop behind the ',' */ + nptr = strchr(ptr, ','); /* update exit condition */ + + if (sscanf(ptr, "%x:%x", + &rfilter[numfilter].can_id, + &rfilter[numfilter].can_mask) == 2) { + rfilter[numfilter].can_mask &= ~CAN_ERR_FLAG; + numfilter++; + } else if (sscanf(ptr, "%x~%x", + &rfilter[numfilter].can_id, + &rfilter[numfilter].can_mask) == 2) { + rfilter[numfilter].can_id |= CAN_INV_FILTER; + rfilter[numfilter].can_mask &= ~CAN_ERR_FLAG; + numfilter++; + } else if (sscanf(ptr, "#%x", err_mask) != 1) { + cegw_errno = CEGW_ERR_FLTPARSE; + free(rfilter); + return -1; + } + } + + *filter = rfilter; + *out_numfilter = numfilter; return 0; } -int main(int argc, char* argv[]) +int main(int argc, char *argv[]) { int i; int fd; int tmpi; int dstcnt; - unsigned short port; + char *nptr; + int numfilter = 0; int udp_sock, can_sock; + can_err_mask_t err_mask = 0; struct sockaddr_in udp_addr; struct sockaddr_can can_addr; - struct sockaddr_in* dst = NULL; - struct cegw_ioctl* gwctl = NULL; + struct sockaddr_in *dst = NULL; + struct cegw_ioctl *gwctl = NULL; + struct can_filter *filter = NULL; - if (argc == 1) - { + if (argc == 1) { printf(help_msg, argv[0], argv[0]); return 0; } @@ -153,6 +208,11 @@ int main(int argc, char* argv[]) for (i=1; iudp_dst[i-3]; - dst->sin_family = AF_INET; - if (read_addrport(argv[i], &dst->sin_addr, &port) != 0) { - perr("udp destination mismatch"); + if (readsockaddr(argv[i], dst) != 0) { + perr("reading udp destination failed"); free(gwctl); return 1; } - dst->sin_port = htons(port); break; } } @@ -212,6 +268,22 @@ int main(int argc, char* argv[]) return 1; } + /* can filter */ + if (nptr && (readfilter(nptr, &filter, &numfilter, &err_mask) != 0)) { + perr("can filter"); + free(gwctl); + return 1; + } + + if (err_mask) + setsockopt(can_sock, SOL_CAN_RAW, CAN_RAW_ERR_FILTER, + &err_mask, sizeof(err_mask)); + + if (numfilter) + setsockopt(can_sock, SOL_CAN_RAW, CAN_RAW_FILTER, + filter, numfilter * sizeof(struct can_filter)); + free(filter); + /* send it to kernel gateway */ fd = open("/dev/canethgw", O_RDONLY); if (fd == -1) { @@ -238,3 +310,4 @@ int main(int argc, char* argv[]) return 0; } + -- 2.39.2