2 Netlink message generation/parsing
4 Copyright 2007 Johannes Berg <johannes@sipsolutions.net>
6 GPLv2+; See copying for details.
13 CTRL_CMD_NEWFAMILY
= 1
14 CTRL_CMD_DELFAMILY
= 2
15 CTRL_CMD_GETFAMILY
= 3
21 CTRL_ATTR_FAMILY_ID
= 1
22 CTRL_ATTR_FAMILY_NAME
= 2
29 def __init__(self
, cmd
, version
= 0):
31 self
.version
= version
33 return struct
.pack("BBxx", self
.cmd
, self
.version
)
35 def _genl_hdr_parse(data
):
36 return GenlHdr(*struct
.unpack("BBxx", data
))
38 GENL_ID_CTRL
= NLMSG_MIN_TYPE
40 class GeNlMessage(Message
):
41 def __init__(self
, family
, cmd
, attrs
=[], flags
=0):
45 Message
.__init
__(self
, family
, flags
=flags
,
46 payload
=[GenlHdr(self
.cmd
)]+attrs
)
49 def __init__(self
, conn
):
51 def get_family_id(self
, family
):
52 a
= NulStrAttr(CTRL_ATTR_FAMILY_NAME
, family
)
53 m
= GeNlMessage(GENL_ID_CTRL
, CTRL_CMD_GETFAMILY
,
54 flags
=NLM_F_REQUEST
, attrs
=[a
])
57 gh
= _genl_hdr_parse(m
.payload
[:4])
58 attrs
= parse_attributes(m
.payload
[4:])
59 return attrs
[CTRL_ATTR_FAMILY_ID
].u16()
61 connection
= Connection(NETLINK_GENERIC
)
62 controller
= Controller(connection
)