// 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, }