intrig-unicamp / mininet-wifi

Emulator for Software-Defined Wireless Networks
https://mn-wifi.readthedocs.io/
Other
432 stars 239 forks source link

Error on network startup while using 4address mode #352

Closed onurklngc closed 3 years ago

onurklngc commented 3 years ago

Hello Dr. Ramon,

Happy new years!

I have built the latest version of the master branch on Ubuntu 16.04. When I run examples/4address.py script, I get the following error:

mn-wifi/mininet-wifi/examples# python 4address.py 
*** Creating nodes
*** Configuring Propagation Model
*** Configuring wifi nodes
*** Adding Links
*** Starting network
Traceback (most recent call last):
  File "4address.py", line 71, in <module>
    topology(sys.argv)
  File "4address.py", line 56, in topology
    net.build()
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/net.py", line 721, in build
    self.init_wmediumd()
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/net.py", line 1235, in init_wmediumd
    self.start_wmediumd()
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/net.py", line 1232, in start_wmediumd
    aps=self.aps, cars=self.cars, ppm=ppm)
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/link.py", line 1424, in __init__
    self.configWmediumd(**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/link.py", line 1465, in configWmediumd
    self.interference(nodes)
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/link.py", line 1490, in interference
    self.positions.append(w_pos(intf.wmIface, [posX, posY, posZ]))
AttributeError: '_4addrAP' object has no attribute 'wmIface'

I haven't experienced the issue on v2.4.3.

ramonfontes commented 3 years ago

Fixed! https://github.com/intrig-unicamp/mininet-wifi/commit/3a8fc6b223c1abb10ccab0ec96df04078244cbd7

onurklngc commented 3 years ago

Thank you for your fast fix, I am now able to run the example script without an error. However, if multi-wlans are added to 4adress client AP by setting wlans=3 in 4adress.py

 ap2 = net.addAccessPoint('ap2', ssid="ap2-ssid", mode="g", channel="1", position='40,60,0', wlans=3) 

it gives the following error:

`*** Creating nodes
*** Configuring Propagation Model
*** Configuring wifi nodes
*** Adding Links
*** Starting network
Traceback (most recent call last):
  File "4address.py", line 76, in <module>
    topology(sys.argv)
  File "4address.py", line 61, in topology
    net.build()
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/net.py", line 721, in build
    self.init_wmediumd()
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/net.py", line 1235, in init_wmediumd
    self.start_wmediumd()
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/net.py", line 1232, in start_wmediumd
    aps=self.aps, cars=self.cars, ppm=ppm)
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/link.py", line 1426, in __init__
    self.configWmediumd(**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/link.py", line 1467, in configWmediumd
    self.interference(nodes)
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/link.py", line 1493, in interference
    self.positions.append(w_pos(intf.wmIface, [posX, posY, posZ]))
AttributeError: '_4addrClient' object has no attribute 'wmIface'

After changing line 1490 in link.py as

if intf.mac in self.mac_list and not isinstance(intf, (phyAP, _4addrAP, _4addrClient)):

Error received changes to:

*** Creating nodes
*** Configuring Propagation Model
*** Configuring wifi nodes
*** Adding Links
*** Starting network
*** Connecting to wmediumd server /var/run/wmediumd.sock
Traceback (most recent call last):
  File "4address.py", line 71, in <module>
    topology(sys.argv)
  File "4address.py", line 56, in topology
    net.build()
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/net.py", line 721, in build
    self.init_wmediumd()
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/net.py", line 1242, in init_wmediumd
    self.config_antenna()
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/net.py", line 1266, in config_antenna
    intf.setTxPower(intf.txpower)
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/link.py", line 328, in setTxPower
    self.setTXPowerWmediumd(txpower)
  File "/usr/local/lib/python2.7/dist-packages/mininet_wifi-2.5-py2.7.egg/mn_wifi/link.py", line 128, in setTXPowerWmediumd
    w_server.update_txpower(w_txpower(self.wmIface, int(txpower)))
AttributeError: '_4addrClient' object has no attribute 'wmIface'

Is it okay to use 4address mode with multi wlan interface?

ramonfontes commented 3 years ago

Fixed https://github.com/intrig-unicamp/mininet-wifi/commit/728af0e9a4e8418735340bf2e8d70b199981362c

onurklngc commented 3 years ago

Thank you!