added future library to support python2/3, updated xrange calls to leverage builtins range
This commit is contained in:
parent
e79fd6c7ce
commit
e58cbe9421
15 changed files with 50 additions and 36 deletions
|
@ -11,8 +11,10 @@ import shutil
|
||||||
import sys
|
import sys
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
|
from builtins import range
|
||||||
from itertools import repeat
|
from itertools import repeat
|
||||||
|
|
||||||
|
from core import utils
|
||||||
from core.api.tlv import coreapi, dataconversion, structutils
|
from core.api.tlv import coreapi, dataconversion, structutils
|
||||||
from core.config import ConfigShim
|
from core.config import ConfigShim
|
||||||
from core.emulator.data import ConfigData, ExceptionData
|
from core.emulator.data import ConfigData, ExceptionData
|
||||||
|
@ -38,7 +40,6 @@ from core.emulator.enumerations import NodeTypes
|
||||||
from core.emulator.enumerations import RegisterTlvs
|
from core.emulator.enumerations import RegisterTlvs
|
||||||
from core.emulator.enumerations import SessionTlvs
|
from core.emulator.enumerations import SessionTlvs
|
||||||
from core.nodes import nodeutils
|
from core.nodes import nodeutils
|
||||||
from core import utils
|
|
||||||
from core.services.coreservices import ServiceManager
|
from core.services.coreservices import ServiceManager
|
||||||
from core.services.coreservices import ServiceShim
|
from core.services.coreservices import ServiceShim
|
||||||
|
|
||||||
|
@ -79,7 +80,7 @@ class CoreHandler(SocketServer.BaseRequestHandler):
|
||||||
raise ValueError("invalid number of threads: %s" % num_threads)
|
raise ValueError("invalid number of threads: %s" % num_threads)
|
||||||
|
|
||||||
logging.debug("launching core server handler threads: %s", num_threads)
|
logging.debug("launching core server handler threads: %s", num_threads)
|
||||||
for _ in xrange(num_threads):
|
for _ in range(num_threads):
|
||||||
thread = threading.Thread(target=self.handler_thread)
|
thread = threading.Thread(target=self.handler_thread)
|
||||||
self.handler_threads.append(thread)
|
self.handler_threads.append(thread)
|
||||||
thread.start()
|
thread.start()
|
||||||
|
|
|
@ -11,16 +11,17 @@ import signal
|
||||||
import socket
|
import socket
|
||||||
import string
|
import string
|
||||||
import threading
|
import threading
|
||||||
|
from builtins import range
|
||||||
from socket import AF_INET, AF_INET6
|
from socket import AF_INET, AF_INET6
|
||||||
|
|
||||||
from core import CoreCommandError, utils
|
from core import CoreCommandError, utils
|
||||||
from core import constants
|
from core import constants
|
||||||
from core.emulator.data import NodeData, LinkData
|
from core.emulator.data import NodeData, LinkData
|
||||||
from core.emulator.enumerations import NodeTypes, LinkTypes
|
from core.emulator.enumerations import NodeTypes, LinkTypes
|
||||||
from core.nodes.ipaddress import MacAddress
|
|
||||||
from core.nodes import client, nodeutils, ipaddress
|
from core.nodes import client, nodeutils, ipaddress
|
||||||
from core.nodes.interface import TunTap, CoreInterface
|
from core.nodes.interface import TunTap, CoreInterface
|
||||||
from core.nodes.interface import Veth
|
from core.nodes.interface import Veth
|
||||||
|
from core.nodes.ipaddress import MacAddress
|
||||||
|
|
||||||
_DEFAULT_MTU = 1500
|
_DEFAULT_MTU = 1500
|
||||||
|
|
||||||
|
@ -868,8 +869,8 @@ class CoreNode(CoreNodeBase):
|
||||||
:return: nothing
|
:return: nothing
|
||||||
"""
|
"""
|
||||||
tmplen = 8
|
tmplen = 8
|
||||||
tmp1 = "tmp." + "".join([random.choice(string.ascii_lowercase) for _ in xrange(tmplen)])
|
tmp1 = "tmp." + "".join([random.choice(string.ascii_lowercase) for _ in range(tmplen)])
|
||||||
tmp2 = "tmp." + "".join([random.choice(string.ascii_lowercase) for _ in xrange(tmplen)])
|
tmp2 = "tmp." + "".join([random.choice(string.ascii_lowercase) for _ in range(tmplen)])
|
||||||
utils.check_cmd([constants.IP_BIN, "link", "add", "name", tmp1, "type", "veth", "peer", "name", tmp2])
|
utils.check_cmd([constants.IP_BIN, "link", "add", "name", tmp1, "type", "veth", "peer", "name", tmp2])
|
||||||
|
|
||||||
utils.check_cmd([constants.IP_BIN, "link", "set", tmp1, "netns", str(self.pid)])
|
utils.check_cmd([constants.IP_BIN, "link", "set", tmp1, "netns", str(self.pid)])
|
||||||
|
|
|
@ -4,6 +4,7 @@ virtual ethernet classes that implement the interfaces available under Linux.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
|
from builtins import range
|
||||||
|
|
||||||
from core import CoreCommandError, utils
|
from core import CoreCommandError, utils
|
||||||
from core import constants
|
from core import constants
|
||||||
|
@ -300,7 +301,7 @@ class TunTap(CoreInterface):
|
||||||
"""
|
"""
|
||||||
delay = 0.01
|
delay = 0.01
|
||||||
result = False
|
result = False
|
||||||
for i in xrange(1, attempts + 1):
|
for i in range(1, attempts + 1):
|
||||||
r = func()
|
r = func()
|
||||||
if r == 0:
|
if r == 0:
|
||||||
result = True
|
result = True
|
||||||
|
|
|
@ -6,6 +6,7 @@ import logging
|
||||||
import random
|
import random
|
||||||
import socket
|
import socket
|
||||||
import struct
|
import struct
|
||||||
|
from builtins import range
|
||||||
from socket import AF_INET
|
from socket import AF_INET
|
||||||
from socket import AF_INET6
|
from socket import AF_INET6
|
||||||
|
|
||||||
|
@ -154,7 +155,7 @@ class IpAddress(object):
|
||||||
return NotImplemented
|
return NotImplemented
|
||||||
|
|
||||||
tmp = [ord(x) for x in self.addr]
|
tmp = [ord(x) for x in self.addr]
|
||||||
for i in xrange(len(tmp) - 1, -1, -1):
|
for i in range(len(tmp) - 1, -1, -1):
|
||||||
x = tmp[i] + carry
|
x = tmp[i] + carry
|
||||||
tmp[i] = x & 0xff
|
tmp[i] = x & 0xff
|
||||||
carry = x >> 8
|
carry = x >> 8
|
||||||
|
@ -235,7 +236,7 @@ class IpPrefix(object):
|
||||||
addrbits = self.addrlen - self.prefixlen
|
addrbits = self.addrlen - self.prefixlen
|
||||||
netmask = ((1L << self.prefixlen) - 1) << addrbits
|
netmask = ((1L << self.prefixlen) - 1) << addrbits
|
||||||
prefix = ""
|
prefix = ""
|
||||||
for i in xrange(-1, -(addrbits >> 3) - 2, -1):
|
for i in range(-1, -(addrbits >> 3) - 2, -1):
|
||||||
prefix = chr(ord(self.prefix[i]) & (netmask & 0xff)) + prefix
|
prefix = chr(ord(self.prefix[i]) & (netmask & 0xff)) + prefix
|
||||||
netmask >>= 8
|
netmask >>= 8
|
||||||
self.prefix = self.prefix[:i] + prefix
|
self.prefix = self.prefix[:i] + prefix
|
||||||
|
@ -319,7 +320,7 @@ class IpPrefix(object):
|
||||||
|
|
||||||
addr = ""
|
addr = ""
|
||||||
prefix_endpoint = -1
|
prefix_endpoint = -1
|
||||||
for i in xrange(-1, -(self.addrlen >> 3) - 1, -1):
|
for i in range(-1, -(self.addrlen >> 3) - 1, -1):
|
||||||
prefix_endpoint = i
|
prefix_endpoint = i
|
||||||
addr = chr(ord(self.prefix[i]) | (tmp & 0xff)) + addr
|
addr = chr(ord(self.prefix[i]) | (tmp & 0xff)) + addr
|
||||||
tmp >>= 8
|
tmp >>= 8
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
# Example CORE Python script that attaches N nodes to an EMANE 802.11abg network.
|
# Example CORE Python script that attaches N nodes to an EMANE 802.11abg network.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
from builtins import range
|
||||||
|
|
||||||
import parser
|
import parser
|
||||||
from core import load_logging_config
|
from core import load_logging_config
|
||||||
|
@ -33,7 +34,7 @@ def example(options):
|
||||||
emane_network.setposition(x=80, y=50)
|
emane_network.setposition(x=80, y=50)
|
||||||
|
|
||||||
# create nodes
|
# create nodes
|
||||||
for i in xrange(options.nodes):
|
for i in range(options.nodes):
|
||||||
node = session.create_wireless_node()
|
node = session.create_wireless_node()
|
||||||
node.setposition(x=150 * (i + 1), y=150)
|
node.setposition(x=150 * (i + 1), y=150)
|
||||||
interface = prefixes.create_interface(node)
|
interface = prefixes.create_interface(node)
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
# nodestep
|
# nodestep
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
from builtins import range
|
||||||
|
|
||||||
import parser
|
import parser
|
||||||
from core import load_logging_config
|
from core import load_logging_config
|
||||||
|
@ -31,7 +32,7 @@ def example(options):
|
||||||
switch = session.add_node(_type=NodeTypes.SWITCH)
|
switch = session.add_node(_type=NodeTypes.SWITCH)
|
||||||
|
|
||||||
# create nodes
|
# create nodes
|
||||||
for _ in xrange(options.nodes):
|
for _ in range(options.nodes):
|
||||||
node = session.add_node()
|
node = session.add_node()
|
||||||
interface = prefixes.create_interface(node)
|
interface = prefixes.create_interface(node)
|
||||||
session.add_link(node.id, switch.id, interface_one=interface)
|
session.add_link(node.id, switch.id, interface_one=interface)
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
# n nodes are connected to a virtual wlan; run test for testsec
|
# n nodes are connected to a virtual wlan; run test for testsec
|
||||||
# and repeat for minnodes <= n <= maxnodes with a step size of
|
# and repeat for minnodes <= n <= maxnodes with a step size of
|
||||||
# nodestep
|
# nodestep
|
||||||
|
from builtins import range
|
||||||
|
|
||||||
from core import load_logging_config
|
from core import load_logging_config
|
||||||
from core.emulator.emudata import IpPrefixes
|
from core.emulator.emudata import IpPrefixes
|
||||||
from core.emulator.enumerations import NodeTypes, EventTypes
|
from core.emulator.enumerations import NodeTypes, EventTypes
|
||||||
|
@ -26,7 +28,7 @@ def example(nodes):
|
||||||
switch = session.add_node(_type=NodeTypes.SWITCH)
|
switch = session.add_node(_type=NodeTypes.SWITCH)
|
||||||
|
|
||||||
# create nodes
|
# create nodes
|
||||||
for _ in xrange(nodes):
|
for _ in range(nodes):
|
||||||
node = session.add_node()
|
node = session.add_node()
|
||||||
interface = prefixes.create_interface(node)
|
interface = prefixes.create_interface(node)
|
||||||
session.add_link(node.id, switch.id, interface_one=interface)
|
session.add_link(node.id, switch.id, interface_one=interface)
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
# nodestep
|
# nodestep
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
|
from builtins import range
|
||||||
|
|
||||||
import parser
|
import parser
|
||||||
from core import load_logging_config
|
from core import load_logging_config
|
||||||
|
@ -35,7 +36,7 @@ def example(options):
|
||||||
# create nodes, must set a position for wlan basic range model
|
# create nodes, must set a position for wlan basic range model
|
||||||
node_options = NodeOptions()
|
node_options = NodeOptions()
|
||||||
node_options.set_position(0, 0)
|
node_options.set_position(0, 0)
|
||||||
for _ in xrange(options.nodes):
|
for _ in range(options.nodes):
|
||||||
node = session.add_node(node_options=node_options)
|
node = session.add_node(node_options=node_options)
|
||||||
interface = prefixes.create_interface(node)
|
interface = prefixes.create_interface(node)
|
||||||
session.add_link(node.id, wlan.id, interface_one=interface)
|
session.add_link(node.id, wlan.id, interface_one=interface)
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import logging
|
import logging
|
||||||
|
from builtins import range
|
||||||
|
|
||||||
from core.api.grpc import client, core_pb2
|
from core.api.grpc import client, core_pb2
|
||||||
|
|
||||||
|
@ -36,7 +37,7 @@ def main():
|
||||||
# helper to create interfaces
|
# helper to create interfaces
|
||||||
interface_helper = client.InterfaceHelper(ip4_prefix="10.83.0.0/16")
|
interface_helper = client.InterfaceHelper(ip4_prefix="10.83.0.0/16")
|
||||||
|
|
||||||
for i in xrange(2):
|
for i in range(2):
|
||||||
# create node
|
# create node
|
||||||
position = core_pb2.Position(x=50 + 50 * i, y=50)
|
position = core_pb2.Position(x=50 + 50 * i, y=50)
|
||||||
node = core_pb2.Node(position=position)
|
node = core_pb2.Node(position=position)
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
import datetime
|
import datetime
|
||||||
import optparse
|
import optparse
|
||||||
import sys
|
import sys
|
||||||
|
from builtins import range
|
||||||
|
|
||||||
import core.nodes.base
|
import core.nodes.base
|
||||||
import core.nodes.network
|
import core.nodes.network
|
||||||
|
@ -26,12 +27,11 @@ from core.emulator.enumerations import LinkTlvs
|
||||||
from core.emulator.enumerations import LinkTypes
|
from core.emulator.enumerations import LinkTypes
|
||||||
from core.emulator.enumerations import MessageFlags
|
from core.emulator.enumerations import MessageFlags
|
||||||
from core.emulator.enumerations import MessageTypes
|
from core.emulator.enumerations import MessageTypes
|
||||||
|
from core.emulator.session import Session
|
||||||
from core.nodes import ipaddress
|
from core.nodes import ipaddress
|
||||||
|
|
||||||
# declare classes for use with Broker
|
# declare classes for use with Broker
|
||||||
|
|
||||||
from core.emulator.session import Session
|
|
||||||
|
|
||||||
# node list (count from 1)
|
# node list (count from 1)
|
||||||
n = [None]
|
n = [None]
|
||||||
exec_num = 1
|
exec_num = 1
|
||||||
|
@ -148,7 +148,7 @@ def main():
|
||||||
print "creating %d remote nodes with addresses from %s" % (options.numnodes, prefix)
|
print "creating %d remote nodes with addresses from %s" % (options.numnodes, prefix)
|
||||||
|
|
||||||
# create remote nodes via API
|
# create remote nodes via API
|
||||||
for i in xrange(1, number_of_nodes + 1):
|
for i in range(1, number_of_nodes + 1):
|
||||||
node = core.nodes.base.CoreNode(session=session, _id=i, name="n%d" % i, start=False)
|
node = core.nodes.base.CoreNode(session=session, _id=i, name="n%d" % i, start=False)
|
||||||
node.setposition(x=150 * i, y=150)
|
node.setposition(x=150 * i, y=150)
|
||||||
node.server = daemon
|
node.server = daemon
|
||||||
|
@ -158,7 +158,7 @@ def main():
|
||||||
n.append(node)
|
n.append(node)
|
||||||
|
|
||||||
# create remote links via API
|
# create remote links via API
|
||||||
for i in xrange(1, number_of_nodes + 1):
|
for i in range(1, number_of_nodes + 1):
|
||||||
tlvdata = coreapi.CoreLinkTlv.pack(LinkTlvs.N1_NUMBER.value, switch.id)
|
tlvdata = coreapi.CoreLinkTlv.pack(LinkTlvs.N1_NUMBER.value, switch.id)
|
||||||
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.N2_NUMBER.value, i)
|
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.N2_NUMBER.value, i)
|
||||||
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.TYPE.value, LinkTypes.WIRED.value)
|
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.TYPE.value, LinkTypes.WIRED.value)
|
||||||
|
|
|
@ -12,14 +12,15 @@
|
||||||
import datetime
|
import datetime
|
||||||
import optparse
|
import optparse
|
||||||
import sys
|
import sys
|
||||||
|
from builtins import range
|
||||||
|
|
||||||
import core.nodes.base
|
import core.nodes.base
|
||||||
import core.nodes.network
|
import core.nodes.network
|
||||||
from core import constants
|
from core import constants
|
||||||
from core.api.tlv import coreapi, dataconversion
|
from core.api.tlv import coreapi, dataconversion
|
||||||
from core.emulator.enumerations import CORE_API_PORT, EventTypes, EventTlvs, LinkTlvs, LinkTypes, MessageFlags
|
from core.emulator.enumerations import CORE_API_PORT, EventTypes, EventTlvs, LinkTlvs, LinkTypes, MessageFlags
|
||||||
from core.nodes import ipaddress
|
|
||||||
from core.emulator.session import Session
|
from core.emulator.session import Session
|
||||||
|
from core.nodes import ipaddress
|
||||||
|
|
||||||
# node list (count from 1)
|
# node list (count from 1)
|
||||||
n = [None]
|
n = [None]
|
||||||
|
@ -80,7 +81,7 @@ def main():
|
||||||
num_remote = options.numnodes / 2 + options.numnodes % 2
|
num_remote = options.numnodes / 2 + options.numnodes % 2
|
||||||
print "creating %d (%d local / %d remote) nodes with addresses from %s" % \
|
print "creating %d (%d local / %d remote) nodes with addresses from %s" % \
|
||||||
(options.numnodes, num_local, num_remote, prefix)
|
(options.numnodes, num_local, num_remote, prefix)
|
||||||
for i in xrange(1, num_local + 1):
|
for i in range(1, num_local + 1):
|
||||||
node = session.create_node(cls=core.nodes.base.CoreNode, name="n%d" % i, _id=i)
|
node = session.create_node(cls=core.nodes.base.CoreNode, name="n%d" % i, _id=i)
|
||||||
node.newnetif(switch, ["%s/%s" % (prefix.addr(i), prefix.prefixlen)])
|
node.newnetif(switch, ["%s/%s" % (prefix.addr(i), prefix.prefixlen)])
|
||||||
node.cmd([constants.SYSCTL_BIN, "net.ipv4.icmp_echo_ignore_broadcasts=0"])
|
node.cmd([constants.SYSCTL_BIN, "net.ipv4.icmp_echo_ignore_broadcasts=0"])
|
||||||
|
@ -91,7 +92,7 @@ def main():
|
||||||
session.broker.handlerawmsg(switch.tonodemsg(flags=flags))
|
session.broker.handlerawmsg(switch.tonodemsg(flags=flags))
|
||||||
|
|
||||||
# create remote nodes via API
|
# create remote nodes via API
|
||||||
for i in xrange(num_local + 1, options.numnodes + 1):
|
for i in range(num_local + 1, options.numnodes + 1):
|
||||||
node = core.nodes.base.CoreNode(session=session, _id=i, name="n%d" % i, start=False)
|
node = core.nodes.base.CoreNode(session=session, _id=i, name="n%d" % i, start=False)
|
||||||
node.setposition(x=150 * i, y=150)
|
node.setposition(x=150 * i, y=150)
|
||||||
node.server = slave
|
node.server = slave
|
||||||
|
@ -101,7 +102,7 @@ def main():
|
||||||
session.broker.handlerawmsg(node_message)
|
session.broker.handlerawmsg(node_message)
|
||||||
|
|
||||||
# create remote links via API
|
# create remote links via API
|
||||||
for i in xrange(num_local + 1, options.numnodes + 1):
|
for i in range(num_local + 1, options.numnodes + 1):
|
||||||
tlvdata = coreapi.CoreLinkTlv.pack(LinkTlvs.N1_NUMBER.value, switch.id)
|
tlvdata = coreapi.CoreLinkTlv.pack(LinkTlvs.N1_NUMBER.value, switch.id)
|
||||||
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.N2_NUMBER.value, i)
|
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.N2_NUMBER.value, i)
|
||||||
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.TYPE.value, LinkTypes.WIRED.value)
|
tlvdata += coreapi.CoreLinkTlv.pack(LinkTlvs.TYPE.value, LinkTypes.WIRED.value)
|
||||||
|
|
|
@ -13,15 +13,16 @@ import os
|
||||||
import random
|
import random
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
from builtins import range
|
||||||
from string import Template
|
from string import Template
|
||||||
|
|
||||||
import core.nodes.base
|
import core.nodes.base
|
||||||
import core.nodes.network
|
import core.nodes.network
|
||||||
from core.constants import QUAGGA_STATE_DIR
|
from core.constants import QUAGGA_STATE_DIR
|
||||||
from core.nodes import ipaddress
|
|
||||||
from core.utils import check_cmd
|
|
||||||
# this is the /etc/core/core.conf default
|
# this is the /etc/core/core.conf default
|
||||||
from core.emulator.session import Session
|
from core.emulator.session import Session
|
||||||
|
from core.nodes import ipaddress
|
||||||
|
from core.utils import check_cmd
|
||||||
|
|
||||||
quagga_sbin_search = ("/usr/local/sbin", "/usr/sbin", "/usr/lib/quagga")
|
quagga_sbin_search = ("/usr/local/sbin", "/usr/sbin", "/usr/lib/quagga")
|
||||||
quagga_path = "zebra"
|
quagga_path = "zebra"
|
||||||
|
@ -243,14 +244,14 @@ class ManetExperiment(object):
|
||||||
self.session = Session(1)
|
self.session = Session(1)
|
||||||
# emulated network
|
# emulated network
|
||||||
self.net = self.session.create_node(cls=core.nodes.network.WlanNode)
|
self.net = self.session.create_node(cls=core.nodes.network.WlanNode)
|
||||||
for i in xrange(1, numnodes + 1):
|
for i in range(1, numnodes + 1):
|
||||||
addr = "%s/%s" % (prefix.addr(i), 32)
|
addr = "%s/%s" % (prefix.addr(i), 32)
|
||||||
tmp = self.session.create_node(cls=ManetNode, ipaddr=addr, _id="%d" % i, name="n%d" % i)
|
tmp = self.session.create_node(cls=ManetNode, ipaddr=addr, _id="%d" % i, name="n%d" % i)
|
||||||
tmp.newnetif(self.net, [addr])
|
tmp.newnetif(self.net, [addr])
|
||||||
self.nodes.append(tmp)
|
self.nodes.append(tmp)
|
||||||
# connect nodes with probability linkprob
|
# connect nodes with probability linkprob
|
||||||
for i in xrange(numnodes):
|
for i in range(numnodes):
|
||||||
for j in xrange(i + 1, numnodes):
|
for j in range(i + 1, numnodes):
|
||||||
r = random.random()
|
r = random.random()
|
||||||
if r < linkprob:
|
if r < linkprob:
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
|
@ -265,7 +266,7 @@ class ManetExperiment(object):
|
||||||
self.net.link(self.nodes[i].netif(0), self.nodes[j].netif(0))
|
self.net.link(self.nodes[i].netif(0), self.nodes[j].netif(0))
|
||||||
self.nodes[i].boot()
|
self.nodes[i].boot()
|
||||||
# run the boot.sh script on all nodes to start Quagga
|
# run the boot.sh script on all nodes to start Quagga
|
||||||
for i in xrange(numnodes):
|
for i in range(numnodes):
|
||||||
self.nodes[i].cmd(["./%s" % self.nodes[i].bootsh])
|
self.nodes[i].cmd(["./%s" % self.nodes[i].bootsh])
|
||||||
|
|
||||||
def compareroutes(self, node, kr, zr):
|
def compareroutes(self, node, kr, zr):
|
||||||
|
@ -472,7 +473,7 @@ class ZebraRoutes(VtyshCmd):
|
||||||
args = "show ip route"
|
args = "show ip route"
|
||||||
|
|
||||||
def parse(self):
|
def parse(self):
|
||||||
for i in xrange(0, 3):
|
for i in range(0, 3):
|
||||||
# skip first three lines
|
# skip first three lines
|
||||||
self.out.readline()
|
self.out.readline()
|
||||||
r = []
|
r = []
|
||||||
|
|
|
@ -43,8 +43,8 @@ from core import emane
|
||||||
from core.emane.bypass import EmaneBypassModel
|
from core.emane.bypass import EmaneBypassModel
|
||||||
from core.emane.nodes import EmaneNode
|
from core.emane.nodes import EmaneNode
|
||||||
from core.emane.rfpipe import EmaneRfPipeModel
|
from core.emane.rfpipe import EmaneRfPipeModel
|
||||||
from core.nodes import ipaddress
|
|
||||||
from core.emulator.session import Session
|
from core.emulator.session import Session
|
||||||
|
from core.nodes import ipaddress
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import emaneeventservice
|
import emaneeventservice
|
||||||
|
@ -416,7 +416,7 @@ class Experiment(object):
|
||||||
# emulated network
|
# emulated network
|
||||||
self.net = self.session.create_node(cls=core.nodes.network.WlanNode, name="wlan1")
|
self.net = self.session.create_node(cls=core.nodes.network.WlanNode, name="wlan1")
|
||||||
prev = None
|
prev = None
|
||||||
for i in xrange(1, numnodes + 1):
|
for i in range(1, numnodes + 1):
|
||||||
addr = "%s/%s" % (prefix.addr(i), 32)
|
addr = "%s/%s" % (prefix.addr(i), 32)
|
||||||
tmp = self.session.create_node(cls=core.nodes.base.CoreNode, _id=i, name="n%d" % i)
|
tmp = self.session.create_node(cls=core.nodes.base.CoreNode, _id=i, name="n%d" % i)
|
||||||
tmp.newnetif(self.net, [addr])
|
tmp.newnetif(self.net, [addr])
|
||||||
|
@ -444,7 +444,7 @@ class Experiment(object):
|
||||||
self.net = self.session.create_node(cls=EmaneNode, _id=numnodes + 1, name="wlan1")
|
self.net = self.session.create_node(cls=EmaneNode, _id=numnodes + 1, name="wlan1")
|
||||||
self.net.verbose = verbose
|
self.net.verbose = verbose
|
||||||
# self.session.emane.addobj(self.net)
|
# self.session.emane.addobj(self.net)
|
||||||
for i in xrange(1, numnodes + 1):
|
for i in range(1, numnodes + 1):
|
||||||
addr = "%s/%s" % (prefix.addr(i), 32)
|
addr = "%s/%s" % (prefix.addr(i), 32)
|
||||||
tmp = self.session.create_node(cls=core.nodes.base.CoreNode, _id=i, name="n%d" % i)
|
tmp = self.session.create_node(cls=core.nodes.base.CoreNode, _id=i, name="n%d" % i)
|
||||||
# tmp.setposition(i * 20, 50, None)
|
# tmp.setposition(i * 20, 50, None)
|
||||||
|
@ -461,7 +461,7 @@ class Experiment(object):
|
||||||
self.info("waiting %s sec (TAP bring-up)" % 2)
|
self.info("waiting %s sec (TAP bring-up)" % 2)
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
for i in xrange(1, numnodes + 1):
|
for i in range(1, numnodes + 1):
|
||||||
tmp = self.nodes[i - 1]
|
tmp = self.nodes[i - 1]
|
||||||
self.session.services.boot_services(tmp)
|
self.session.services.boot_services(tmp)
|
||||||
self.staticroutes(i, prefix, numnodes)
|
self.staticroutes(i, prefix, numnodes)
|
||||||
|
@ -496,7 +496,7 @@ class Experiment(object):
|
||||||
self.warn("failed to add interface route: %s" % cmd)
|
self.warn("failed to add interface route: %s" % cmd)
|
||||||
|
|
||||||
# add static routes to all other nodes via left/right neighbors
|
# add static routes to all other nodes via left/right neighbors
|
||||||
for j in xrange(1, numnodes + 1):
|
for j in range(1, numnodes + 1):
|
||||||
if abs(j - i) < 2:
|
if abs(j - i) < 2:
|
||||||
continue
|
continue
|
||||||
addr = "%s" % prefix.addr(j)
|
addr = "%s" % prefix.addr(j)
|
||||||
|
@ -525,7 +525,7 @@ class Experiment(object):
|
||||||
otachannel=None)
|
otachannel=None)
|
||||||
old = False
|
old = False
|
||||||
|
|
||||||
for i in xrange(1, numnodes + 1):
|
for i in range(1, numnodes + 1):
|
||||||
rxnem = i
|
rxnem = i
|
||||||
# inform rxnem that it can hear node to the left with 10dB noise
|
# inform rxnem that it can hear node to the left with 10dB noise
|
||||||
txnem = rxnem - 1
|
txnem = rxnem - 1
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
enum34==1.1.6
|
enum34==1.1.6
|
||||||
|
future==0.17.1
|
||||||
futures==3.2.0
|
futures==3.2.0
|
||||||
grpcio==1.18.0
|
grpcio==1.18.0
|
||||||
lxml==3.5.0
|
lxml==4.3.3
|
||||||
six==1.12.0
|
six==1.12.0
|
||||||
|
|
|
@ -43,6 +43,7 @@ setup(
|
||||||
packages=find_packages(),
|
packages=find_packages(),
|
||||||
install_requires=[
|
install_requires=[
|
||||||
"enum34",
|
"enum34",
|
||||||
|
"future",
|
||||||
"lxml"
|
"lxml"
|
||||||
],
|
],
|
||||||
tests_require=[
|
tests_require=[
|
||||||
|
|
Loading…
Add table
Reference in a new issue