1*cf78ab8cSAndroid Build Coastguard Worker// PDL grammar file for netlink packet format. 2*cf78ab8cSAndroid Build Coastguard Worker// 3*cf78ab8cSAndroid Build Coastguard Worker// This only includes definitions necessary for the mac80211_hwsim 4*cf78ab8cSAndroid Build Coastguard Worker// use case. 5*cf78ab8cSAndroid Build Coastguard Worker// 6*cf78ab8cSAndroid Build Coastguard Worker// See 7*cf78ab8cSAndroid Build Coastguard Worker// - [RFC 3549](https://datatracker.ietf.org/doc/html/rfc3549) 8*cf78ab8cSAndroid Build Coastguard Worker// - netlink.h 9*cf78ab8cSAndroid Build Coastguard Worker 10*cf78ab8cSAndroid Build Coastguard Worker 11*cf78ab8cSAndroid Build Coastguard Worker// Host byte order 12*cf78ab8cSAndroid Build Coastguard Workerlittle_endian_packets 13*cf78ab8cSAndroid Build Coastguard Worker 14*cf78ab8cSAndroid Build Coastguard Worker// Netlink Message Header 15*cf78ab8cSAndroid Build Coastguard Worker 16*cf78ab8cSAndroid Build Coastguard Workerstruct NlMsgHdr { 17*cf78ab8cSAndroid Build Coastguard Worker nlmsg_len : 32, // Length of message including header 18*cf78ab8cSAndroid Build Coastguard Worker nlmsg_type : 16, // Message type identifier 19*cf78ab8cSAndroid Build Coastguard Worker nlmsg_flags : 16, // Flags (NLM_F_) 20*cf78ab8cSAndroid Build Coastguard Worker nlmsg_seq : 32, // Sequence number 21*cf78ab8cSAndroid Build Coastguard Worker nlmsg_pid : 32, // Sending process port ID 22*cf78ab8cSAndroid Build Coastguard Worker} 23*cf78ab8cSAndroid Build Coastguard Worker 24*cf78ab8cSAndroid Build Coastguard Worker// Netlink Attribute Header 25*cf78ab8cSAndroid Build Coastguard Worker 26*cf78ab8cSAndroid Build Coastguard Worker/* 27*cf78ab8cSAndroid Build Coastguard Worker * <------- NLA_HDRLEN ------> <-- NLA_ALIGN(payload)--> 28*cf78ab8cSAndroid Build Coastguard Worker * +---------------------+- - -+- - - - - - - - - -+- - -+ 29*cf78ab8cSAndroid Build Coastguard Worker * | Header | Pad | Payload | Pad | 30*cf78ab8cSAndroid Build Coastguard Worker * | (struct nlattr) | ing | | ing | 31*cf78ab8cSAndroid Build Coastguard Worker * +---------------------+- - -+- - - - - - - - - -+- - -+ 32*cf78ab8cSAndroid Build Coastguard Worker * <-------------- nlattr->nla_len --------------> 33*cf78ab8cSAndroid Build Coastguard Worker */ 34*cf78ab8cSAndroid Build Coastguard Worker 35*cf78ab8cSAndroid Build Coastguard Worker/* 36*cf78ab8cSAndroid Build Coastguard Worker * nla_type (16 bits) 37*cf78ab8cSAndroid Build Coastguard Worker * +---+---+-------------------------------+ 38*cf78ab8cSAndroid Build Coastguard Worker * | N | O | Attribute Type | 39*cf78ab8cSAndroid Build Coastguard Worker * +---+---+-------------------------------+ 40*cf78ab8cSAndroid Build Coastguard Worker * N := Carries nested attributes 41*cf78ab8cSAndroid Build Coastguard Worker * O := Payload stored in network byte order 42*cf78ab8cSAndroid Build Coastguard Worker * 43*cf78ab8cSAndroid Build Coastguard Worker * Note: The N and O flag are mutually exclusive. 44*cf78ab8cSAndroid Build Coastguard Worker */ 45*cf78ab8cSAndroid Build Coastguard Worker 46*cf78ab8cSAndroid Build Coastguard Worker// Base netlink attribute TLV header. 47*cf78ab8cSAndroid Build Coastguard Worker 48*cf78ab8cSAndroid Build Coastguard Workerstruct NlAttrHdr { 49*cf78ab8cSAndroid Build Coastguard Worker nla_len : 16, 50*cf78ab8cSAndroid Build Coastguard Worker nla_type: 14, 51*cf78ab8cSAndroid Build Coastguard Worker nla_m : 1, 52*cf78ab8cSAndroid Build Coastguard Worker nla_o : 1, 53*cf78ab8cSAndroid Build Coastguard Worker} 54*cf78ab8cSAndroid Build Coastguard Worker 55