blob: f435efe2b93643bd7822f4b5fd52edfde196a420 [file] [log] [blame]
// PDL grammar file for netlink packet format.
//
// This only includes definitions necessary for the mac80211_hwsim
// use case.
//
// See
// - [RFC 3549](https://datatracker.ietf.org/doc/html/rfc3549)
// - netlink.h
// Host byte order
little_endian_packets
// Netlink Message Header
struct NlMsgHdr {
nlmsg_len : 32, // Length of message including header
nlmsg_type : 16, // Message type identifier
nlmsg_flags : 16, // Flags (NLM_F_)
nlmsg_seq : 32, // Sequence number
nlmsg_pid : 32, // Sending process port ID
}
// Netlink Attribute Header
/*
* <------- NLA_HDRLEN ------> <-- NLA_ALIGN(payload)-->
* +---------------------+- - -+- - - - - - - - - -+- - -+
* | Header | Pad | Payload | Pad |
* | (struct nlattr) | ing | | ing |
* +---------------------+- - -+- - - - - - - - - -+- - -+
* <-------------- nlattr->nla_len -------------->
*/
/*
* nla_type (16 bits)
* +---+---+-------------------------------+
* | N | O | Attribute Type |
* +---+---+-------------------------------+
* N := Carries nested attributes
* O := Payload stored in network byte order
*
* Note: The N and O flag are mutually exclusive.
*/
// Base netlink attribute TLV header.
struct NlAttrHdr {
nla_len : 16,
nla_type: 14,
nla_m : 1,
nla_o : 1,
}