198 int loopback = 1; |
198 int loopback = 1; |
199 err = CAN_SETSOCKOPT(*(int *)fd0, SOL_CAN_RAW, CAN_RAW_LOOPBACK, |
199 err = CAN_SETSOCKOPT(*(int *)fd0, SOL_CAN_RAW, CAN_RAW_LOOPBACK, |
200 &loopback, sizeof(loopback)); |
200 &loopback, sizeof(loopback)); |
201 if (err) { |
201 if (err) { |
202 fprintf(stderr, "rt_dev_setsockopt: %s\n", strerror (CAN_ERRNO (err))); |
202 fprintf(stderr, "rt_dev_setsockopt: %s\n", strerror (CAN_ERRNO (err))); |
203 goto failure; |
203 goto error_close; |
204 } |
204 } |
205 } |
205 } |
206 |
206 |
207 #ifndef RTCAN_SOCKET /*CAN_RAW_RECV_OWN_MSGS not supported in rtsocketcan*/ |
207 #ifndef RTCAN_SOCKET /*CAN_RAW_RECV_OWN_MSGS not supported in rtsocketcan*/ |
208 { |
208 { |
209 int recv_own_msgs = 0; /* 0 = disabled (default), 1 = enabled */ |
209 int recv_own_msgs = 0; /* 0 = disabled (default), 1 = enabled */ |
210 err = CAN_SETSOCKOPT(*(int *)fd0, SOL_CAN_RAW, CAN_RAW_RECV_OWN_MSGS, |
210 err = CAN_SETSOCKOPT(*(int *)fd0, SOL_CAN_RAW, CAN_RAW_RECV_OWN_MSGS, |
211 &recv_own_msgs, sizeof(recv_own_msgs)); |
211 &recv_own_msgs, sizeof(recv_own_msgs)); |
212 if (err) { |
212 if (err) { |
213 fprintf(stderr, "rt_dev_setsockopt: %s\n", strerror (CAN_ERRNO (err))); |
213 fprintf(stderr, "rt_dev_setsockopt: %s\n", strerror (CAN_ERRNO (err))); |
214 goto failure; |
214 goto error_close; |
215 } |
215 } |
216 } |
216 } |
217 #endif |
217 #endif |
218 |
218 |
219 addr.can_family = AF_CAN; |
219 addr.can_family = AF_CAN; |