2 Netlink message generation/parsing
4 Copyright 2007 Johannes Berg <johannes@sipsolutions.net>
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
, payload
=[GenlHdr(self
.cmd
)]+attrs
)
48 def __init__(self
, conn
):
50 def get_family_id(self
, family
):
51 a
= NulStrAttr(CTRL_ATTR_FAMILY_NAME
, family
)
52 m
= GeNlMessage(GENL_ID_CTRL
, CTRL_CMD_GETFAMILY
, flags
=NLM_F_REQUEST
, attrs
=[a
])
55 gh
= _genl_hdr_parse(m
.payload
[:4])
56 attrs
= parse_attributes(m
.payload
[4:])
57 return attrs
[CTRL_ATTR_FAMILY_ID
].u16()
59 connection
= Connection(NETLINK_GENERIC
)
60 controller
= Controller(connection
)