Pass flags as a list of strings.
This commit is contained in:
20
nl80211.py
20
nl80211.py
@@ -186,10 +186,12 @@ class Netlink(object):
|
|||||||
_NLMSG_F_ECHO = 0x08
|
_NLMSG_F_ECHO = 0x08
|
||||||
_NLMSG_F_DUMP_INTR = 0x10
|
_NLMSG_F_DUMP_INTR = 0x10
|
||||||
|
|
||||||
NLMSG_F_ROOT = 0x100
|
flags = {
|
||||||
NLMSG_F_MATCH = 0x200
|
'root': 0x100,
|
||||||
NLMSG_F_ATOMIC = 0x400
|
'match': 0x200,
|
||||||
NLMSG_F_DUMP = NLMSG_F_ROOT | NLMSG_F_MATCH
|
'atomic': 0x400,
|
||||||
|
'dump': 0x100 | 0x200,
|
||||||
|
}
|
||||||
|
|
||||||
_NLMSG_DONE = 3
|
_NLMSG_DONE = 3
|
||||||
|
|
||||||
@@ -200,13 +202,15 @@ class Netlink(object):
|
|||||||
self._sock.bind((0, 0))
|
self._sock.bind((0, 0))
|
||||||
|
|
||||||
def Send(self, msgtype, flags, msg):
|
def Send(self, msgtype, flags, msg):
|
||||||
flags |= self._NLMSG_F_REQUEST
|
flagint = self._NLMSG_F_REQUEST
|
||||||
|
for flag in flags:
|
||||||
|
flagint |= self.flags[flag]
|
||||||
accumulator = Accumulator()
|
accumulator = Accumulator()
|
||||||
self._nlmsghdr.Pack(
|
self._nlmsghdr.Pack(
|
||||||
accumulator,
|
accumulator,
|
||||||
length=len(msg) + self._nlmsghdr.size,
|
length=len(msg) + self._nlmsghdr.size,
|
||||||
type=msgtype,
|
type=msgtype,
|
||||||
flags=flags,
|
flags=flagint,
|
||||||
seq=random.randint(0, 2 ** 32 - 1),
|
seq=random.randint(0, 2 ** 32 - 1),
|
||||||
pid=os.getpid())
|
pid=os.getpid())
|
||||||
accumulator.Append(msg)
|
accumulator.Append(msg)
|
||||||
@@ -263,7 +267,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', ['dump'], 'getfamily', 1)
|
||||||
for msg in self.Recv():
|
for msg in self.Recv():
|
||||||
msgtype, attrs = msg
|
msgtype, attrs = msg
|
||||||
assert msgtype == self._msgtypes_by_name['nlctrl']['commands']['newfamily'], msgtype
|
assert msgtype == self._msgtypes_by_name['nlctrl']['commands']['newfamily'], msgtype
|
||||||
@@ -379,5 +383,5 @@ def GetIfIndex(if_name):
|
|||||||
|
|
||||||
gnl = GenericNetlink()
|
gnl = GenericNetlink()
|
||||||
RegisterNL80211(gnl)
|
RegisterNL80211(gnl)
|
||||||
gnl.Send('nl80211', Netlink.NLMSG_F_DUMP, 'get_station', 0, ifindex=GetIfIndex('wlan0'))
|
gnl.Send('nl80211', ['dump'], 'get_station', 0, ifindex=GetIfIndex('wlan0'))
|
||||||
print list(gnl.Recv())
|
print list(gnl.Recv())
|
||||||
|
|||||||
Reference in New Issue
Block a user