Merge pull request #151 from olerem/recvown

pull/154/head
Marc Kleine-Budde 2019-08-26 14:16:05 +02:00 committed by GitHub
commit a8d4827d0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 13 deletions

View File

@ -64,9 +64,8 @@ typedef __u64 name_t;
enum { enum {
SO_J1939_FILTER = 1, /* set filters */ SO_J1939_FILTER = 1, /* set filters */
SO_J1939_PROMISC = 2, /* set/clr promiscuous mode */ SO_J1939_PROMISC = 2, /* set/clr promiscuous mode */
SO_J1939_RECV_OWN = 3, SO_J1939_SEND_PRIO = 3,
SO_J1939_SEND_PRIO = 4, SO_J1939_ERRQUEUE = 4,
SO_J1939_ERRQUEUE = 5,
}; };
enum { enum {

13
jacd.c
View File

@ -221,14 +221,6 @@ static int open_socket(const char *device, uint64_t name)
if (ret < 0) if (ret < 0)
error(1, errno, "setsockopt filter"); error(1, errno, "setsockopt filter");
value = 1;
if (s.verbose)
fprintf(stderr, "- setsockopt(, SOL_CAN_J1939, SO_J1939_RECV_OWN, %d, %zd);\n", value, sizeof(value));
ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_RECV_OWN,
&value, sizeof(value));
if (ret < 0)
error(1, errno, "setsockopt receive own msgs");
value = 1; value = 1;
if (s.verbose) if (s.verbose)
fprintf(stderr, "- setsockopt(, SOL_SOCKET, SO_BROADCAST, %d, %zd);\n", value, sizeof(value)); fprintf(stderr, "- setsockopt(, SOL_SOCKET, SO_BROADCAST, %d, %zd);\n", value, sizeof(value));
@ -475,7 +467,7 @@ static void restore_cache(void)
/* main */ /* main */
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int ret, sock, pgn, sa, opt; int ret, sock, sock_rx, pgn, sa, opt;
socklen_t slen; socklen_t slen;
uint8_t dat[9]; uint8_t dat[9];
struct sockaddr_can saddr; struct sockaddr_can saddr;
@ -536,6 +528,7 @@ int main(int argc, char *argv[])
if (!s.intf || !s.name) if (!s.intf || !s.name)
error(1, 0, "bad arguments"); error(1, 0, "bad arguments");
ret = sock = open_socket(s.intf, s.name); ret = sock = open_socket(s.intf, s.name);
sock_rx = open_socket(s.intf, s.name);
install_signal(SIGTERM); install_signal(SIGTERM);
install_signal(SIGINT); install_signal(SIGINT);
@ -579,7 +572,7 @@ int main(int argc, char *argv[])
} }
slen = sizeof(saddr); slen = sizeof(saddr);
ret = recvfrom(sock, dat, sizeof(dat), 0, (void *)&saddr, &slen); ret = recvfrom(sock_rx, dat, sizeof(dat), 0, (void *)&saddr, &slen);
if (ret < 0) { if (ret < 0) {
if (EINTR == errno) if (EINTR == errno)
continue; continue;