1fee65b7eSAlexander V. Chernikovfrom ctypes import c_ubyte 2fee65b7eSAlexander V. Chernikovfrom ctypes import c_uint 3fee65b7eSAlexander V. Chernikovfrom ctypes import c_ushort 4fee65b7eSAlexander V. Chernikovfrom ctypes import Structure 5fee65b7eSAlexander V. Chernikovfrom enum import Enum 6fee65b7eSAlexander V. Chernikov 7fee65b7eSAlexander V. Chernikov 8fee65b7eSAlexander V. Chernikovclass Nlmsghdr(Structure): 9fee65b7eSAlexander V. Chernikov _fields_ = [ 10fee65b7eSAlexander V. Chernikov ("nlmsg_len", c_uint), 11fee65b7eSAlexander V. Chernikov ("nlmsg_type", c_ushort), 12fee65b7eSAlexander V. Chernikov ("nlmsg_flags", c_ushort), 13fee65b7eSAlexander V. Chernikov ("nlmsg_seq", c_uint), 14fee65b7eSAlexander V. Chernikov ("nlmsg_pid", c_uint), 15fee65b7eSAlexander V. Chernikov ] 16fee65b7eSAlexander V. Chernikov 17fee65b7eSAlexander V. Chernikov 18*3e5d0784SAlexander V. Chernikovclass Nlattr(Structure): 19*3e5d0784SAlexander V. Chernikov _fields_ = [ 20*3e5d0784SAlexander V. Chernikov ("nla_len", c_ushort), 21*3e5d0784SAlexander V. Chernikov ("nla_type", c_ushort), 22*3e5d0784SAlexander V. Chernikov ] 23*3e5d0784SAlexander V. Chernikov 24*3e5d0784SAlexander V. Chernikov 25fee65b7eSAlexander V. Chernikovclass NlMsgType(Enum): 26fee65b7eSAlexander V. Chernikov NLMSG_NOOP = 1 27fee65b7eSAlexander V. Chernikov NLMSG_ERROR = 2 28fee65b7eSAlexander V. Chernikov NLMSG_DONE = 3 29fee65b7eSAlexander V. Chernikov NLMSG_OVERRUN = 4 30fee65b7eSAlexander V. Chernikov 31fee65b7eSAlexander V. Chernikov 32fee65b7eSAlexander V. Chernikovclass NlmBaseFlags(Enum): 33fee65b7eSAlexander V. Chernikov NLM_F_REQUEST = 0x01 34fee65b7eSAlexander V. Chernikov NLM_F_MULTI = 0x02 35fee65b7eSAlexander V. Chernikov NLM_F_ACK = 0x04 36fee65b7eSAlexander V. Chernikov NLM_F_ECHO = 0x08 37fee65b7eSAlexander V. Chernikov NLM_F_DUMP_INTR = 0x10 38fee65b7eSAlexander V. Chernikov NLM_F_DUMP_FILTERED = 0x20 39fee65b7eSAlexander V. Chernikov 40fee65b7eSAlexander V. Chernikov 41fee65b7eSAlexander V. Chernikov# XXX: in python3.8 it is possible to 42fee65b7eSAlexander V. Chernikov# class NlmGetFlags(Enum, NlmBaseFlags): 43fee65b7eSAlexander V. Chernikov 44fee65b7eSAlexander V. Chernikov 45fee65b7eSAlexander V. Chernikovclass NlmGetFlags(Enum): 46fee65b7eSAlexander V. Chernikov NLM_F_ROOT = 0x100 47fee65b7eSAlexander V. Chernikov NLM_F_MATCH = 0x200 48fee65b7eSAlexander V. Chernikov NLM_F_ATOMIC = 0x400 49fee65b7eSAlexander V. Chernikov 50fee65b7eSAlexander V. Chernikov 51fee65b7eSAlexander V. Chernikovclass NlmNewFlags(Enum): 52fee65b7eSAlexander V. Chernikov NLM_F_REPLACE = 0x100 53fee65b7eSAlexander V. Chernikov NLM_F_EXCL = 0x200 54fee65b7eSAlexander V. Chernikov NLM_F_CREATE = 0x400 55fee65b7eSAlexander V. Chernikov NLM_F_APPEND = 0x800 56fee65b7eSAlexander V. Chernikov 57fee65b7eSAlexander V. Chernikov 58fee65b7eSAlexander V. Chernikovclass NlmDeleteFlags(Enum): 59fee65b7eSAlexander V. Chernikov NLM_F_NONREC = 0x100 60fee65b7eSAlexander V. Chernikov 61fee65b7eSAlexander V. Chernikov 62fee65b7eSAlexander V. Chernikovclass NlmAckFlags(Enum): 63fee65b7eSAlexander V. Chernikov NLM_F_CAPPED = 0x100 64fee65b7eSAlexander V. Chernikov NLM_F_ACK_TLVS = 0x200 65fee65b7eSAlexander V. Chernikov 66fee65b7eSAlexander V. Chernikov 67fee65b7eSAlexander V. Chernikovclass GenlMsgHdr(Structure): 68fee65b7eSAlexander V. Chernikov _fields_ = [ 69fee65b7eSAlexander V. Chernikov ("cmd", c_ubyte), 70fee65b7eSAlexander V. Chernikov ("version", c_ubyte), 71fee65b7eSAlexander V. Chernikov ("reserved", c_ushort), 72fee65b7eSAlexander V. Chernikov ] 73