xref: /freebsd/tests/atf_python/sys/netlink/base_headers.py (revision 3e5d0784b9b5296bda801add034b057ad68237f7)
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