Move attribute parsing down a level to make family definition simpler.
This commit is contained in:
19
nl80211.py
19
nl80211.py
@@ -260,7 +260,7 @@ class GenericNetlink(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._netlink = Netlink()
|
self._netlink = Netlink()
|
||||||
self._UpdateMsgTypes()
|
self._UpdateMsgTypes()
|
||||||
self.Send('nlctrl', self._netlink.NLMSG_F_DUMP, 'getfamily', 1, '')
|
self.Send('nlctrl', self._netlink.NLMSG_F_DUMP, 'getfamily', 1)
|
||||||
for msg in self.Recv():
|
for msg in self.Recv():
|
||||||
msgtype, attrs = msg
|
msgtype, attrs = msg
|
||||||
assert msgtype == self._commands['newfamily'], msgtype
|
assert msgtype == self._commands['newfamily'], msgtype
|
||||||
@@ -278,17 +278,22 @@ class GenericNetlink(object):
|
|||||||
def RegisterMsgType(self, family_name, parser):
|
def RegisterMsgType(self, family_name, parser):
|
||||||
self._msgtypes_by_name[family_name][2] = parser
|
self._msgtypes_by_name[family_name][2] = parser
|
||||||
|
|
||||||
def Send(self, msgtype, flags, cmd, version, msg):
|
def Send(self, msgtype, flags, cmd, version, **attrs):
|
||||||
accumulator = Accumulator()
|
|
||||||
if isinstance(cmd, str):
|
if isinstance(cmd, str):
|
||||||
cmd = self._commands[cmd]
|
cmd = self._commands[cmd]
|
||||||
|
msgtype_id, _, parser = self._msgtypes_by_name[msgtype]
|
||||||
|
|
||||||
|
accumulator = Accumulator()
|
||||||
self._genlmsghdr.Pack(
|
self._genlmsghdr.Pack(
|
||||||
accumulator,
|
accumulator,
|
||||||
cmd=cmd,
|
cmd=cmd,
|
||||||
version=version,
|
version=version,
|
||||||
reserved=0)
|
reserved=0)
|
||||||
accumulator.Append(msg)
|
|
||||||
msgtype_id = self._msgtypes_by_name[msgtype][0]
|
parser.Pack(
|
||||||
|
accumulator,
|
||||||
|
**attrs)
|
||||||
|
|
||||||
self._netlink.Send(msgtype_id, flags, str(accumulator))
|
self._netlink.Send(msgtype_id, flags, str(accumulator))
|
||||||
|
|
||||||
def Recv(self):
|
def Recv(self):
|
||||||
@@ -359,9 +364,7 @@ class NL80211(object):
|
|||||||
self._gnl.RegisterMsgType('nl80211', self._nl80211_attr)
|
self._gnl.RegisterMsgType('nl80211', self._nl80211_attr)
|
||||||
|
|
||||||
def Send(self, flags, cmd, version, **attrs):
|
def Send(self, flags, cmd, version, **attrs):
|
||||||
accumulator = Accumulator()
|
self._gnl.Send('nl80211', flags, self._commands[cmd], version, **attrs)
|
||||||
self._nl80211_attr.Pack(accumulator, **attrs)
|
|
||||||
self._gnl.Send('nl80211', flags, self._commands[cmd], version, str(accumulator))
|
|
||||||
|
|
||||||
def Recv(self):
|
def Recv(self):
|
||||||
return self._gnl.Recv()
|
return self._gnl.Recv()
|
||||||
|
|||||||
Reference in New Issue
Block a user