merged latest from 5.2
This commit is contained in:
commit
b18d5b5805
90 changed files with 5060 additions and 3665 deletions
|
@ -27,7 +27,7 @@ def example(options):
|
|||
|
||||
# create wlan network node
|
||||
wlan = session.add_node(_type=NodeTypes.WIRELESS_LAN)
|
||||
session.set_wireless_model(wlan, BasicRangeModel)
|
||||
session.mobility.set_model(wlan, BasicRangeModel)
|
||||
|
||||
# create nodes
|
||||
wireless_nodes = []
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
|
||||
|
||||
from core.emane import emanemanifest
|
||||
from core.emane import emanemodel
|
||||
|
||||
|
||||
## Custom EMANE Model
|
||||
class ExampleModel(emanemodel.EmaneModel):
|
||||
### MAC Definition
|
||||
|
@ -47,10 +46,3 @@ class ExampleModel(emanemodel.EmaneModel):
|
|||
# Allows you to ignore options within phy/mac, used typically if you needed to add a custom option for display
|
||||
# within the gui.
|
||||
config_ignore = set()
|
||||
# Allows you to override how options are displayed with the GUI, using the GUI format of
|
||||
# "name:1-2|othername:3-4". This will be parsed into tabs, split by "|" and account for items based on the indexed
|
||||
# numbers after ":" for including values in each tab.
|
||||
config_groups_override = None
|
||||
# Allows you to override the default config matrix list. This value by default is the mac_config + phy_config, in
|
||||
# that order.
|
||||
config_matrix_override = None
|
||||
|
|
|
@ -4,7 +4,6 @@ Sample user-defined service.
|
|||
|
||||
from core.misc.ipaddress import Ipv4Prefix
|
||||
from core.service import CoreService
|
||||
from core.service import ServiceManager
|
||||
|
||||
|
||||
class MyService(CoreService):
|
||||
|
@ -12,25 +11,25 @@ class MyService(CoreService):
|
|||
This is a sample user-defined service.
|
||||
"""
|
||||
# a unique name is required, without spaces
|
||||
_name = "MyService"
|
||||
name = "MyService"
|
||||
# you can create your own group here
|
||||
_group = "Utility"
|
||||
group = "Utility"
|
||||
# list executables that this service requires
|
||||
executables = ()
|
||||
# list of other services this service depends on
|
||||
_depends = ()
|
||||
dependencies = ()
|
||||
# per-node directories
|
||||
_dirs = ()
|
||||
dirs = ()
|
||||
# generated files (without a full path this file goes in the node's dir,
|
||||
# e.g. /tmp/pycore.12345/n1.conf/)
|
||||
_configs = ('myservice.sh',)
|
||||
# this controls the starting order vs other enabled services
|
||||
_startindex = 50
|
||||
configs = ("myservice.sh",)
|
||||
# list of startup commands, also may be generated during startup
|
||||
_startup = ('sh myservice.sh',)
|
||||
startup = ("sh myservice.sh",)
|
||||
# list of shutdown commands
|
||||
_shutdown = ()
|
||||
shutdown = ()
|
||||
|
||||
@classmethod
|
||||
def generateconfig(cls, node, filename, services):
|
||||
def generate_config(cls, node, filename):
|
||||
"""
|
||||
Return a string that will be written to filename, or sent to the
|
||||
GUI for user customization.
|
||||
|
@ -57,9 +56,3 @@ class MyService(CoreService):
|
|||
else:
|
||||
net = Ipv4Prefix(x)
|
||||
return 'echo " network %s"' % net
|
||||
|
||||
|
||||
# this is needed to load desired services when being integrated into core, otherwise this is not needed
|
||||
def load_services():
|
||||
# this line is required to add the above class to the list of available services
|
||||
ServiceManager.add(MyService)
|
||||
|
|
|
@ -159,8 +159,8 @@ def main():
|
|||
n.newnetif(switch, ["%s/%s" % (prefix.addr(i), prefix.prefixlen)])
|
||||
n.cmd([constants.SYSCTL_BIN, "net.ipv4.icmp_echo_ignore_broadcasts=0"])
|
||||
if options.services is not None:
|
||||
session.services.addservicestonode(n, "", options.services)
|
||||
n.boot()
|
||||
session.services.add_services(n, "", options.services.split("|"))
|
||||
session.services.boot_services(n)
|
||||
nodelist.append(n)
|
||||
if i % 25 == 0:
|
||||
print "\n%s nodes created " % i,
|
||||
|
|
|
@ -88,7 +88,7 @@ ip forwarding
|
|||
|
||||
def boot(self):
|
||||
self.config()
|
||||
self.session.services.bootnodeservices(self)
|
||||
self.session.services.boot_services(self)
|
||||
|
||||
def bootscript(self):
|
||||
return """\
|
||||
|
|
|
@ -420,8 +420,8 @@ class Experiment(object):
|
|||
tmp = self.session.add_object(cls=nodes.CoreNode, objid=i, name="n%d" % i)
|
||||
tmp.newnetif(self.net, [addr])
|
||||
self.nodes.append(tmp)
|
||||
self.session.services.addservicestonode(tmp, "router", "IPForward")
|
||||
self.session.services.bootnodeservices(tmp)
|
||||
self.session.services.add_services(tmp, "router", "IPForward")
|
||||
self.session.services.boot_services(tmp)
|
||||
self.staticroutes(i, prefix, numnodes)
|
||||
|
||||
# link each node in a chain, with the previous node
|
||||
|
@ -429,8 +429,7 @@ class Experiment(object):
|
|||
self.net.link(prev.netif(0), tmp.netif(0))
|
||||
prev = tmp
|
||||
|
||||
def createemanesession(self, numnodes, verbose=False, cls=None,
|
||||
values=None):
|
||||
def createemanesession(self, numnodes, verbose=False, cls=None, values=None):
|
||||
""" Build a topology consisting of the given number of LxcNodes
|
||||
connected to an EMANE WLAN.
|
||||
"""
|
||||
|
@ -440,7 +439,6 @@ class Experiment(object):
|
|||
self.session.master = True
|
||||
self.session.location.setrefgeo(47.57917, -122.13232, 2.00000)
|
||||
self.session.location.refscale = 150.0
|
||||
self.session.config["emane_models"] = "RfPipe, Ieee80211abg, Bypass"
|
||||
self.session.emane.loadmodels()
|
||||
self.net = self.session.add_object(cls=EmaneNode, objid=numnodes + 1, name="wlan1")
|
||||
self.net.verbose = verbose
|
||||
|
@ -453,7 +451,7 @@ class Experiment(object):
|
|||
tmp.setposition(50, 50, None)
|
||||
tmp.newnetif(self.net, [addr])
|
||||
self.nodes.append(tmp)
|
||||
self.session.services.addservicestonode(tmp, "router", "IPForward")
|
||||
self.session.services.add_services(tmp, "router", "IPForward")
|
||||
|
||||
if values is None:
|
||||
values = cls.getdefaultvalues()
|
||||
|
@ -465,7 +463,7 @@ class Experiment(object):
|
|||
|
||||
for i in xrange(1, numnodes + 1):
|
||||
tmp = self.nodes[i - 1]
|
||||
self.session.services.bootnodeservices(tmp)
|
||||
self.session.services.boot_services(tmp)
|
||||
self.staticroutes(i, prefix, numnodes)
|
||||
|
||||
def setnodes(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue