From 1afd52c1b21fe3cecec1d9944f20c06dd69221a0 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Sat, 10 Jan 2015 16:01:02 +0000 Subject: [PATCH] Move attribute parsing down a level to make family definition simpler. --- nl80211.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/nl80211.py b/nl80211.py index d1024aa..d69656d 100755 --- a/nl80211.py +++ b/nl80211.py @@ -260,7 +260,7 @@ class GenericNetlink(object): def __init__(self): self._netlink = Netlink() 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(): msgtype, attrs = msg assert msgtype == self._commands['newfamily'], msgtype @@ -278,17 +278,22 @@ class GenericNetlink(object): def RegisterMsgType(self, family_name, parser): self._msgtypes_by_name[family_name][2] = parser - def Send(self, msgtype, flags, cmd, version, msg): - accumulator = Accumulator() + def Send(self, msgtype, flags, cmd, version, **attrs): if isinstance(cmd, str): cmd = self._commands[cmd] + msgtype_id, _, parser = self._msgtypes_by_name[msgtype] + + accumulator = Accumulator() self._genlmsghdr.Pack( accumulator, cmd=cmd, version=version, 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)) def Recv(self): @@ -359,9 +364,7 @@ class NL80211(object): self._gnl.RegisterMsgType('nl80211', self._nl80211_attr) def Send(self, flags, cmd, version, **attrs): - accumulator = Accumulator() - self._nl80211_attr.Pack(accumulator, **attrs) - self._gnl.Send('nl80211', flags, self._commands[cmd], version, str(accumulator)) + self._gnl.Send('nl80211', flags, self._commands[cmd], version, **attrs) def Recv(self): return self._gnl.Recv()