@@ -39,7 +39,12 @@ pub type Elf64_Section = u16;
3939
4040// linux/can.h
4141pub type canid_t = u32 ;
42+
43+ // linux/can/j1939.h
4244pub type can_err_mask_t = u32 ;
45+ pub type pgn_t = u32 ;
46+ pub type priority_t = u8 ;
47+ pub type name_t = u64 ;
4348
4449pub type iconv_t = * mut :: c_void ;
4550
@@ -543,6 +548,16 @@ s! {
543548 pub can_mask: canid_t,
544549 }
545550
551+ // linux/can/j1939.h
552+ pub struct j1939_filter {
553+ pub name: name_t,
554+ pub name_mask: name_t,
555+ pub pgn: pgn_t,
556+ pub pgn_mask: pgn_t,
557+ pub addr: u8 ,
558+ pub addr_mask: u8 ,
559+ }
560+
546561 // linux/filter.h
547562 pub struct sock_filter {
548563 pub code: :: __u16,
@@ -3185,6 +3200,47 @@ pub const CAN_RAW_RECV_OWN_MSGS: ::c_int = 4;
31853200pub const CAN_RAW_FD_FRAMES : :: c_int = 5 ;
31863201pub const CAN_RAW_JOIN_FILTERS : :: c_int = 6 ;
31873202
3203+ // linux/can/j1939.h
3204+ pub const SOL_CAN_J1939 : :: c_int = SOL_CAN_BASE + CAN_J1939 ;
3205+
3206+ pub const J1939_MAX_UNICAST_ADDR : :: c_uchar = 0xfd ;
3207+ pub const J1939_IDLE_ADDR : :: c_uchar = 0xfe ;
3208+ pub const J1939_NO_ADDR : :: c_uchar = 0xff ;
3209+ pub const J1939_NO_NAME : :: c_ulong = 0 ;
3210+ pub const J1939_PGN_REQUEST : :: c_uint = 0x0ea00 ;
3211+ pub const J1939_PGN_ADDRESS_CLAIMED : :: c_uint = 0x0ee00 ;
3212+ pub const J1939_PGN_ADDRESS_COMMANDED : :: c_uint = 0x0fed8 ;
3213+ pub const J1939_PGN_PDU1_MAX : :: c_uint = 0x3ff00 ;
3214+ pub const J1939_PGN_MAX : :: c_uint = 0x3ffff ;
3215+ pub const J1939_NO_PGN : :: c_uint = 0x40000 ;
3216+
3217+ pub const SO_J1939_FILTER : :: c_int = 1 ;
3218+ pub const SO_J1939_PROMISC : :: c_int = 2 ;
3219+ pub const SO_J1939_SEND_PRIO : :: c_int = 3 ;
3220+ pub const SO_J1939_ERRQUEUE : :: c_int = 4 ;
3221+
3222+ pub const SCM_J1939_DEST_ADDR : :: c_int = 1 ;
3223+ pub const SCM_J1939_DEST_NAME : :: c_int = 2 ;
3224+ pub const SCM_J1939_PRIO : :: c_int = 3 ;
3225+ pub const SCM_J1939_ERRQUEUE : :: c_int = 4 ;
3226+
3227+ pub const J1939_NLA_PAD : :: c_int = 0 ;
3228+ pub const J1939_NLA_BYTES_ACKED : :: c_int = 1 ;
3229+ pub const J1939_NLA_TOTAL_SIZE : :: c_int = 2 ;
3230+ pub const J1939_NLA_PGN : :: c_int = 3 ;
3231+ pub const J1939_NLA_SRC_NAME : :: c_int = 4 ;
3232+ pub const J1939_NLA_DEST_NAME : :: c_int = 5 ;
3233+ pub const J1939_NLA_SRC_ADDR : :: c_int = 6 ;
3234+ pub const J1939_NLA_DEST_ADDR : :: c_int = 7 ;
3235+
3236+ pub const J1939_EE_INFO_NONE : :: c_int = 0 ;
3237+ pub const J1939_EE_INFO_TX_ABORT : :: c_int = 1 ;
3238+ pub const J1939_EE_INFO_RX_RTS : :: c_int = 2 ;
3239+ pub const J1939_EE_INFO_RX_DPO : :: c_int = 3 ;
3240+ pub const J1939_EE_INFO_RX_ABORT : :: c_int = 4 ;
3241+
3242+ pub const J1939_FILTER_MAX : :: c_int = 512 ;
3243+
31883244f ! {
31893245 pub fn NLA_ALIGN ( len: :: c_int) -> :: c_int {
31903246 return ( ( len) + NLA_ALIGNTO - 1 ) & !( NLA_ALIGNTO - 1 )
0 commit comments