Merge pull request #151 from olerem/recvown
commit
a8d4827d0f
|
|
@ -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
13
jacd.c
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue