1# Python class for controlling Multi Link Device 2# Copyright (c) 2024, Jouni Malinen <j@w1.fi> 3# 4# This software may be distributed under the terms of the BSD license. 5# See README for more details. 6 7import os 8import logging 9import wpaspy 10 11logger = logging.getLogger() 12hapd_ctrl = '/var/run/hostapd' 13 14class MultiLinkDevice: 15 def __init__(self, ifname, ctrl=hapd_ctrl, port=8877): 16 self.ifname = ifname 17 self.ctrl = wpaspy.Ctrl(os.path.join(ctrl, ifname)) 18 self.dbg = ifname 19 20 def close_ctrl(self): 21 self.ctrl.close() 22 self.ctrl = None 23 24 def request(self, cmd): 25 logger.debug(self.dbg + ": MLD CTRL: " + cmd) 26 return self.ctrl.request(cmd) 27 28 def ping(self): 29 return "PONG" in self.request("PING") 30 31def get_mld_obj(ifname, ctrl=hapd_ctrl, port=8877): 32 mld = MultiLinkDevice(ifname, ctrl, port) 33 if not mld.ping(): 34 raise Exception("Could not ping MLD %s" % ifname) 35 36 return mld 37