commit
c44dc521fb
35 changed files with 1070 additions and 703 deletions
20
CHANGELOG.md
20
CHANGELOG.md
|
@ -1,3 +1,23 @@
|
|||
## 2023-03-02 CORE 9.0.2
|
||||
|
||||
* Installation
|
||||
* updated python dependencies, including invoke to resolve python 3.10+ issues
|
||||
* improved example dockerfiles to use less space for built images
|
||||
* Documentation
|
||||
* updated emane install instructions
|
||||
* added Docker related issues to install instructions
|
||||
* core-daemon
|
||||
* fixed issue using invalid device name in sysctl commands
|
||||
* updated PTP nodes to properly disable mac learning for their linux bridge
|
||||
* fixed issue for LXC nodes to properly use a configured image name and write it to XML
|
||||
* \#742 - fixed issue with bad wlan node id being used
|
||||
* \#744 - fixed issue not properly setting broadcast address
|
||||
|
||||
## core-gui
|
||||
* fixed sample1.xml to remove SSH service
|
||||
* fixed emane demo examples
|
||||
* fixed issue displaying emane configs generally configured for a node
|
||||
|
||||
## 2022-11-28 CORE 9.0.1
|
||||
|
||||
* Installation
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
# this defines the CORE version number, must be static for AC_INIT
|
||||
AC_INIT(core, 9.0.1)
|
||||
AC_INIT(core, 9.0.2)
|
||||
|
||||
# autoconf and automake initialization
|
||||
AC_CONFIG_SRCDIR([netns/version.h.in])
|
||||
|
|
|
@ -160,12 +160,12 @@ def throughput_listener(
|
|||
stream: Any, handler: Callable[[wrappers.ThroughputsEvent], None]
|
||||
) -> None:
|
||||
"""
|
||||
Listen for throughput events and provide them to the handler.
|
||||
Listen for throughput events and provide them to the handler.
|
||||
|
||||
:param stream: grpc stream that will provide events
|
||||
:param handler: function that handles an event
|
||||
:return: nothing
|
||||
"""
|
||||
:param stream: grpc stream that will provide events
|
||||
:param handler: function that handles an event
|
||||
:return: nothing
|
||||
"""
|
||||
try:
|
||||
for event_proto in stream:
|
||||
event = wrappers.ThroughputsEvent.from_proto(event_proto)
|
||||
|
|
|
@ -2,7 +2,7 @@ import logging
|
|||
from queue import Empty, Queue
|
||||
from typing import Iterable, Optional
|
||||
|
||||
from core.api.grpc import core_pb2
|
||||
from core.api.grpc import core_pb2, grpcutils
|
||||
from core.api.grpc.grpcutils import convert_link_data
|
||||
from core.emulator.data import (
|
||||
ConfigData,
|
||||
|
@ -17,28 +17,18 @@ from core.emulator.session import Session
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def handle_node_event(node_data: NodeData) -> core_pb2.Event:
|
||||
def handle_node_event(session: Session, node_data: NodeData) -> core_pb2.Event:
|
||||
"""
|
||||
Handle node event when there is a node event
|
||||
|
||||
:param session: session node is from
|
||||
:param node_data: node data
|
||||
:return: node event that contains node id, name, model, position, and services
|
||||
"""
|
||||
node = node_data.node
|
||||
x, y, _ = node.position.get()
|
||||
position = core_pb2.Position(x=x, y=y)
|
||||
lon, lat, alt = node.position.get_geo()
|
||||
geo = core_pb2.Geo(lon=lon, lat=lat, alt=alt)
|
||||
services = [x.name for x in node.services]
|
||||
node_proto = core_pb2.Node(
|
||||
id=node.id,
|
||||
name=node.name,
|
||||
model=node.model,
|
||||
icon=node.icon,
|
||||
position=position,
|
||||
geo=geo,
|
||||
services=services,
|
||||
)
|
||||
emane_configs = grpcutils.get_emane_model_configs_dict(session)
|
||||
node_emane_configs = emane_configs.get(node.id, [])
|
||||
node_proto = grpcutils.get_node_proto(session, node, node_emane_configs)
|
||||
message_type = node_data.message_type.value
|
||||
node_event = core_pb2.NodeEvent(message_type=message_type, node=node_proto)
|
||||
return core_pb2.Event(node_event=node_event, source=node_data.source)
|
||||
|
@ -189,7 +179,7 @@ class EventStreamer:
|
|||
try:
|
||||
data = self.queue.get(timeout=1)
|
||||
if isinstance(data, NodeData):
|
||||
event = handle_node_event(data)
|
||||
event = handle_node_event(self.session, data)
|
||||
elif isinstance(data, LinkData):
|
||||
event = handle_link_event(data)
|
||||
elif isinstance(data, EventData):
|
||||
|
|
|
@ -34,7 +34,7 @@ from core.nodes.base import (
|
|||
)
|
||||
from core.nodes.docker import DockerNode, DockerOptions
|
||||
from core.nodes.interface import CoreInterface
|
||||
from core.nodes.lxd import LxcNode
|
||||
from core.nodes.lxd import LxcNode, LxcOptions
|
||||
from core.nodes.network import CoreNetwork, CtrlNet, PtpNet, WlanNode
|
||||
from core.nodes.wireless import WirelessNode
|
||||
from core.services.coreservices import CoreService
|
||||
|
@ -81,7 +81,7 @@ def add_node_data(
|
|||
options.config_services = node_proto.config_services
|
||||
if isinstance(options, EmaneOptions):
|
||||
options.emane_model = node_proto.emane
|
||||
if isinstance(options, DockerOptions):
|
||||
if isinstance(options, (DockerOptions, LxcOptions)):
|
||||
options.image = node_proto.image
|
||||
position = Position()
|
||||
position.set(node_proto.position.x, node_proto.position.y)
|
||||
|
@ -117,7 +117,7 @@ def link_iface(iface_proto: core_pb2.Interface) -> InterfaceData:
|
|||
|
||||
|
||||
def add_link_data(
|
||||
link_proto: core_pb2.Link
|
||||
link_proto: core_pb2.Link,
|
||||
) -> Tuple[InterfaceData, InterfaceData, LinkOptions]:
|
||||
"""
|
||||
Convert link proto to link interfaces and options data.
|
||||
|
|
|
@ -518,7 +518,7 @@ class Session:
|
|||
self.set_node_pos(node, position.x, position.y)
|
||||
# setup default wlan
|
||||
if isinstance(node, WlanNode):
|
||||
self.mobility.set_model_config(self.id, BasicRangeModel.name)
|
||||
self.mobility.set_model_config(node.id, BasicRangeModel.name)
|
||||
# boot core nodes after runtime
|
||||
is_runtime = self.state == EventTypes.RUNTIME_STATE
|
||||
if is_runtime and isinstance(node, CoreNode):
|
||||
|
@ -1113,7 +1113,12 @@ class Session:
|
|||
:param node: node to boot
|
||||
:return: nothing
|
||||
"""
|
||||
logger.info("booting node(%s): %s", node.name, [x.name for x in node.services])
|
||||
logger.info(
|
||||
"booting node(%s): config services(%s) services(%s)",
|
||||
node.name,
|
||||
", ".join(node.config_services.keys()),
|
||||
", ".join(x.name for x in node.services),
|
||||
)
|
||||
self.services.boot_services(node)
|
||||
node.start_config_services()
|
||||
|
||||
|
|
|
@ -753,7 +753,7 @@ class CoreClient:
|
|||
return self.client.get_config_service_rendered(self.session.id, node_id, name)
|
||||
|
||||
def get_config_service_configs_proto(
|
||||
self
|
||||
self,
|
||||
) -> List[configservices_pb2.ConfigServiceConfig]:
|
||||
config_service_protos = []
|
||||
for node in self.session.nodes.values():
|
||||
|
|
|
@ -1,131 +1,77 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<scenario name="/home/developer/.core/configs/emane-demo-antenna.xml">
|
||||
<scenario name="/tmp/tmpd4t2sxy2">
|
||||
<networks>
|
||||
<network id="5" name="wlan5" model="emane_rfpipe" type="EMANE">
|
||||
<position x="388" y="555" lat="47.57412169587584" lon="-122.12709380504643" alt="2.0"/>
|
||||
<network id="5" name="wlan5" icon="" canvas="0" model="emane_rfpipe" type="EMANE">
|
||||
<position x="388.0" y="555.0" lat="47.574121408201655" lon="-122.12709602379641" alt="2.0"/>
|
||||
</network>
|
||||
</networks>
|
||||
<devices>
|
||||
<device id="1" name="n1" type="mdr" class="" image="">
|
||||
<position x="258" y="147" lat="47.577830502987744" lon="-122.12884551985047" alt="2.0"/>
|
||||
<device id="1" name="n1" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="258.0" y="147.0" lat="47.57783021533393" lon="-122.12884773860046" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
<device id="2" name="n2" type="mdr" class="" image="">
|
||||
<position x="526" y="147" lat="47.577830502987744" lon="-122.12523429240828" alt="2.0"/>
|
||||
<device id="2" name="n2" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="526.0" y="147.0" lat="47.57783021533393" lon="-122.12523651115826" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
<device id="3" name="n3" type="mdr" class="" image="">
|
||||
<position x="241" y="387" lat="47.57564888355958" lon="-122.12907459024791" alt="2.0"/>
|
||||
<device id="3" name="n3" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="241.0" y="387.0" lat="47.575648595893774" lon="-122.1290768089979" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
<device id="4" name="n4" type="mdr" class="" image="">
|
||||
<position x="529" y="385" lat="47.57566706409707" lon="-122.1251938682205" alt="2.0"/>
|
||||
<device id="4" name="n4" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="529.0" y="385.0" lat="47.57566677643136" lon="-122.12519608697049" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
</devices>
|
||||
<links>
|
||||
<link node1="5" node2="1">
|
||||
<iface2 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||
<link node1="1" node2="5">
|
||||
<iface1 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||
</link>
|
||||
<link node1="5" node2="2">
|
||||
<iface2 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||
<link node1="2" node2="5">
|
||||
<iface1 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||
</link>
|
||||
<link node1="5" node2="3">
|
||||
<iface2 nem="3" id="0" name="eth0" mac="02:02:00:00:00:03" ip4="10.0.0.3" ip4_mask="32" ip6="2001::3" ip6_mask="128"/>
|
||||
<link node1="3" node2="5">
|
||||
<iface1 nem="3" id="0" name="eth0" mac="02:02:00:00:00:03" ip4="10.0.0.3" ip4_mask="32" ip6="2001::3" ip6_mask="128"/>
|
||||
</link>
|
||||
<link node1="5" node2="4">
|
||||
<iface2 nem="4" id="0" name="eth0" mac="02:02:00:00:00:04" ip4="10.0.0.4" ip4_mask="32" ip6="2001::4" ip6_mask="128"/>
|
||||
<link node1="4" node2="5">
|
||||
<iface1 nem="4" id="0" name="eth0" mac="02:02:00:00:00:04" ip4="10.0.0.4" ip4_mask="32" ip6="2001::4" ip6_mask="128"/>
|
||||
</link>
|
||||
</links>
|
||||
<emane_global_configuration>
|
||||
<emulator>
|
||||
<configuration name="antennaprofilemanifesturi" value="/tmp/emane/antennaprofile.xml"/>
|
||||
<configuration name="controlportendpoint" value="0.0.0.0:47000"/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</emulator>
|
||||
<core>
|
||||
<configuration name="platform_id_start" value="1"/>
|
||||
<configuration name="nem_id_start" value="1"/>
|
||||
<configuration name="link_enabled" value="1"/>
|
||||
<configuration name="loss_threshold" value="30"/>
|
||||
<configuration name="link_interval" value="1"/>
|
||||
<configuration name="link_timeout" value="4"/>
|
||||
</core>
|
||||
</emane_global_configuration>
|
||||
<emane_configurations>
|
||||
<emane_configuration node="5" model="emane_rfpipe">
|
||||
<mac>
|
||||
<configuration name="datarate" value="1000000"/>
|
||||
<configuration name="delay" value="0.000000"/>
|
||||
<configuration name="enablepromiscuousmode" value="0"/>
|
||||
<configuration name="flowcontrolenable" value="0"/>
|
||||
<configuration name="flowcontroltokens" value="10"/>
|
||||
<configuration name="jitter" value="0.000000"/>
|
||||
<configuration name="neighbormetricdeletetime" value="60.000000"/>
|
||||
<configuration name="pcrcurveuri" value="/usr/share/emane/xml/models/mac/rfpipe/rfpipepcr.xml"/>
|
||||
<configuration name="radiometricenable" value="0"/>
|
||||
<configuration name="radiometricreportinterval" value="1.000000"/>
|
||||
</mac>
|
||||
<phy>
|
||||
<configuration name="bandwidth" value="1000000"/>
|
||||
<configuration name="fading.model" value="none"/>
|
||||
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||
<configuration name="fading.nakagami.m0" value="0.750000"/>
|
||||
<configuration name="fading.nakagami.m1" value="1.000000"/>
|
||||
<configuration name="fading.nakagami.m2" value="200.000000"/>
|
||||
<configuration name="fixedantennagain" value="0.000000"/>
|
||||
<configuration name="fixedantennagainenable" value="1"/>
|
||||
<configuration name="frequency" value="2347000000"/>
|
||||
<configuration name="frequencyofinterest" value="2347000000"/>
|
||||
<configuration name="noisebinsize" value="20"/>
|
||||
<configuration name="noisemaxclampenable" value="0"/>
|
||||
<configuration name="noisemaxmessagepropagation" value="200000"/>
|
||||
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||
<configuration name="noisemode" value="none"/>
|
||||
<configuration name="propagationmodel" value="2ray"/>
|
||||
<configuration name="subid" value="1"/>
|
||||
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||
<configuration name="timesyncthreshold" value="10000"/>
|
||||
<configuration name="txpower" value="0.000000"/>
|
||||
</phy>
|
||||
<external>
|
||||
<configuration name="external" value="0"/>
|
||||
<configuration name="platformendpoint" value="127.0.0.1:40001"/>
|
||||
<configuration name="transportendpoint" value="127.0.0.1:50002"/>
|
||||
</external>
|
||||
</emane_configuration>
|
||||
<emane_configuration node="1" model="emane_rfpipe">
|
||||
<platform>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</platform>
|
||||
<mac>
|
||||
<configuration name="datarate" value="1000000"/>
|
||||
<configuration name="delay" value="0.000000"/>
|
||||
|
@ -140,6 +86,17 @@
|
|||
</mac>
|
||||
<phy>
|
||||
<configuration name="bandwidth" value="1000000"/>
|
||||
<configuration name="compatibilitymode" value="1"/>
|
||||
<configuration name="dopplershiftenable" value="1"/>
|
||||
<configuration name="excludesamesubidfromfilterenable" value="1"/>
|
||||
<configuration name="fading.lognormal.dlthresh" value="0.250000"/>
|
||||
<configuration name="fading.lognormal.dmu" value="5.000000"/>
|
||||
<configuration name="fading.lognormal.dsigma" value="1.000000"/>
|
||||
<configuration name="fading.lognormal.duthresh" value="0.750000"/>
|
||||
<configuration name="fading.lognormal.lmean" value="0.005000"/>
|
||||
<configuration name="fading.lognormal.lstddev" value="0.001000"/>
|
||||
<configuration name="fading.lognormal.maxpathloss" value="100.000000"/>
|
||||
<configuration name="fading.lognormal.minpathloss" value="0.000000"/>
|
||||
<configuration name="fading.model" value="none"/>
|
||||
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||
|
@ -156,7 +113,10 @@
|
|||
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||
<configuration name="noisemode" value="outofband"/>
|
||||
<configuration name="processingpoolsize" value="0"/>
|
||||
<configuration name="propagationmodel" value="precomputed"/>
|
||||
<configuration name="rxsensitivitypromiscuousmodeenable" value="0"/>
|
||||
<configuration name="stats.receivepowertableenable" value="1"/>
|
||||
<configuration name="subid" value="1"/>
|
||||
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||
<configuration name="timesyncthreshold" value="10000"/>
|
||||
|
@ -169,6 +129,23 @@
|
|||
</external>
|
||||
</emane_configuration>
|
||||
<emane_configuration node="2" model="emane_rfpipe">
|
||||
<platform>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</platform>
|
||||
<mac>
|
||||
<configuration name="datarate" value="1000000"/>
|
||||
<configuration name="delay" value="0.000000"/>
|
||||
|
@ -183,6 +160,17 @@
|
|||
</mac>
|
||||
<phy>
|
||||
<configuration name="bandwidth" value="1000000"/>
|
||||
<configuration name="compatibilitymode" value="1"/>
|
||||
<configuration name="dopplershiftenable" value="1"/>
|
||||
<configuration name="excludesamesubidfromfilterenable" value="1"/>
|
||||
<configuration name="fading.lognormal.dlthresh" value="0.250000"/>
|
||||
<configuration name="fading.lognormal.dmu" value="5.000000"/>
|
||||
<configuration name="fading.lognormal.dsigma" value="1.000000"/>
|
||||
<configuration name="fading.lognormal.duthresh" value="0.750000"/>
|
||||
<configuration name="fading.lognormal.lmean" value="0.005000"/>
|
||||
<configuration name="fading.lognormal.lstddev" value="0.001000"/>
|
||||
<configuration name="fading.lognormal.maxpathloss" value="100.000000"/>
|
||||
<configuration name="fading.lognormal.minpathloss" value="0.000000"/>
|
||||
<configuration name="fading.model" value="none"/>
|
||||
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||
|
@ -199,7 +187,10 @@
|
|||
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||
<configuration name="noisemode" value="outofband"/>
|
||||
<configuration name="processingpoolsize" value="0"/>
|
||||
<configuration name="propagationmodel" value="precomputed"/>
|
||||
<configuration name="rxsensitivitypromiscuousmodeenable" value="0"/>
|
||||
<configuration name="stats.receivepowertableenable" value="1"/>
|
||||
<configuration name="subid" value="1"/>
|
||||
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||
<configuration name="timesyncthreshold" value="10000"/>
|
||||
|
@ -212,6 +203,23 @@
|
|||
</external>
|
||||
</emane_configuration>
|
||||
<emane_configuration node="3" model="emane_rfpipe">
|
||||
<platform>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</platform>
|
||||
<mac>
|
||||
<configuration name="datarate" value="1000000"/>
|
||||
<configuration name="delay" value="0.000000"/>
|
||||
|
@ -226,6 +234,17 @@
|
|||
</mac>
|
||||
<phy>
|
||||
<configuration name="bandwidth" value="1000000"/>
|
||||
<configuration name="compatibilitymode" value="1"/>
|
||||
<configuration name="dopplershiftenable" value="1"/>
|
||||
<configuration name="excludesamesubidfromfilterenable" value="1"/>
|
||||
<configuration name="fading.lognormal.dlthresh" value="0.250000"/>
|
||||
<configuration name="fading.lognormal.dmu" value="5.000000"/>
|
||||
<configuration name="fading.lognormal.dsigma" value="1.000000"/>
|
||||
<configuration name="fading.lognormal.duthresh" value="0.750000"/>
|
||||
<configuration name="fading.lognormal.lmean" value="0.005000"/>
|
||||
<configuration name="fading.lognormal.lstddev" value="0.001000"/>
|
||||
<configuration name="fading.lognormal.maxpathloss" value="100.000000"/>
|
||||
<configuration name="fading.lognormal.minpathloss" value="0.000000"/>
|
||||
<configuration name="fading.model" value="none"/>
|
||||
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||
|
@ -242,7 +261,10 @@
|
|||
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||
<configuration name="noisemode" value="outofband"/>
|
||||
<configuration name="processingpoolsize" value="0"/>
|
||||
<configuration name="propagationmodel" value="precomputed"/>
|
||||
<configuration name="rxsensitivitypromiscuousmodeenable" value="0"/>
|
||||
<configuration name="stats.receivepowertableenable" value="1"/>
|
||||
<configuration name="subid" value="1"/>
|
||||
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||
<configuration name="timesyncthreshold" value="10000"/>
|
||||
|
@ -255,6 +277,23 @@
|
|||
</external>
|
||||
</emane_configuration>
|
||||
<emane_configuration node="4" model="emane_rfpipe">
|
||||
<platform>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</platform>
|
||||
<mac>
|
||||
<configuration name="datarate" value="1000000"/>
|
||||
<configuration name="delay" value="0.000000"/>
|
||||
|
@ -269,6 +308,17 @@
|
|||
</mac>
|
||||
<phy>
|
||||
<configuration name="bandwidth" value="1000000"/>
|
||||
<configuration name="compatibilitymode" value="1"/>
|
||||
<configuration name="dopplershiftenable" value="1"/>
|
||||
<configuration name="excludesamesubidfromfilterenable" value="1"/>
|
||||
<configuration name="fading.lognormal.dlthresh" value="0.250000"/>
|
||||
<configuration name="fading.lognormal.dmu" value="5.000000"/>
|
||||
<configuration name="fading.lognormal.dsigma" value="1.000000"/>
|
||||
<configuration name="fading.lognormal.duthresh" value="0.750000"/>
|
||||
<configuration name="fading.lognormal.lmean" value="0.005000"/>
|
||||
<configuration name="fading.lognormal.lstddev" value="0.001000"/>
|
||||
<configuration name="fading.lognormal.maxpathloss" value="100.000000"/>
|
||||
<configuration name="fading.lognormal.minpathloss" value="0.000000"/>
|
||||
<configuration name="fading.model" value="none"/>
|
||||
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||
|
@ -285,7 +335,84 @@
|
|||
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||
<configuration name="noisemode" value="outofband"/>
|
||||
<configuration name="processingpoolsize" value="0"/>
|
||||
<configuration name="propagationmodel" value="precomputed"/>
|
||||
<configuration name="rxsensitivitypromiscuousmodeenable" value="0"/>
|
||||
<configuration name="stats.receivepowertableenable" value="1"/>
|
||||
<configuration name="subid" value="1"/>
|
||||
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||
<configuration name="timesyncthreshold" value="10000"/>
|
||||
<configuration name="txpower" value="0.000000"/>
|
||||
</phy>
|
||||
<external>
|
||||
<configuration name="external" value="0"/>
|
||||
<configuration name="platformendpoint" value="127.0.0.1:40001"/>
|
||||
<configuration name="transportendpoint" value="127.0.0.1:50002"/>
|
||||
</external>
|
||||
</emane_configuration>
|
||||
<emane_configuration node="5" model="emane_rfpipe">
|
||||
<platform>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</platform>
|
||||
<mac>
|
||||
<configuration name="datarate" value="1000000"/>
|
||||
<configuration name="delay" value="0.000000"/>
|
||||
<configuration name="enablepromiscuousmode" value="0"/>
|
||||
<configuration name="flowcontrolenable" value="0"/>
|
||||
<configuration name="flowcontroltokens" value="10"/>
|
||||
<configuration name="jitter" value="0.000000"/>
|
||||
<configuration name="neighbormetricdeletetime" value="60.000000"/>
|
||||
<configuration name="pcrcurveuri" value="/usr/share/emane/xml/models/mac/rfpipe/rfpipepcr.xml"/>
|
||||
<configuration name="radiometricenable" value="0"/>
|
||||
<configuration name="radiometricreportinterval" value="1.000000"/>
|
||||
</mac>
|
||||
<phy>
|
||||
<configuration name="bandwidth" value="1000000"/>
|
||||
<configuration name="compatibilitymode" value="1"/>
|
||||
<configuration name="dopplershiftenable" value="1"/>
|
||||
<configuration name="excludesamesubidfromfilterenable" value="1"/>
|
||||
<configuration name="fading.lognormal.dlthresh" value="0.250000"/>
|
||||
<configuration name="fading.lognormal.dmu" value="5.000000"/>
|
||||
<configuration name="fading.lognormal.dsigma" value="1.000000"/>
|
||||
<configuration name="fading.lognormal.duthresh" value="0.750000"/>
|
||||
<configuration name="fading.lognormal.lmean" value="0.005000"/>
|
||||
<configuration name="fading.lognormal.lstddev" value="0.001000"/>
|
||||
<configuration name="fading.lognormal.maxpathloss" value="100.000000"/>
|
||||
<configuration name="fading.lognormal.minpathloss" value="0.000000"/>
|
||||
<configuration name="fading.model" value="none"/>
|
||||
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||
<configuration name="fading.nakagami.m0" value="0.750000"/>
|
||||
<configuration name="fading.nakagami.m1" value="1.000000"/>
|
||||
<configuration name="fading.nakagami.m2" value="200.000000"/>
|
||||
<configuration name="fixedantennagain" value="0.000000"/>
|
||||
<configuration name="fixedantennagainenable" value="1"/>
|
||||
<configuration name="frequency" value="2347000000"/>
|
||||
<configuration name="frequencyofinterest" value="2347000000"/>
|
||||
<configuration name="noisebinsize" value="20"/>
|
||||
<configuration name="noisemaxclampenable" value="0"/>
|
||||
<configuration name="noisemaxmessagepropagation" value="200000"/>
|
||||
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||
<configuration name="noisemode" value="none"/>
|
||||
<configuration name="processingpoolsize" value="0"/>
|
||||
<configuration name="propagationmodel" value="2ray"/>
|
||||
<configuration name="rxsensitivitypromiscuousmodeenable" value="0"/>
|
||||
<configuration name="stats.receivepowertableenable" value="1"/>
|
||||
<configuration name="subid" value="1"/>
|
||||
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||
<configuration name="timesyncthreshold" value="10000"/>
|
||||
|
@ -298,7 +425,7 @@
|
|||
</external>
|
||||
</emane_configuration>
|
||||
</emane_configurations>
|
||||
<session_origin lat="47.5791667" lon="-122.132322" alt="2.0" scale="150.0"/>
|
||||
<session_origin lat="47.579166412353516" lon="-122.13232421875" alt="2.0" scale="150.0"/>
|
||||
<session_options>
|
||||
<configuration name="controlnet" value="172.16.0.0/24"/>
|
||||
<configuration name="controlnet0" value=""/>
|
||||
|
@ -311,10 +438,19 @@
|
|||
<configuration name="enablesdt" value="0"/>
|
||||
<configuration name="sdturl" value="tcp://127.0.0.1:50000/"/>
|
||||
<configuration name="ovs" value="0"/>
|
||||
<configuration name="platform_id_start" value="1"/>
|
||||
<configuration name="nem_id_start" value="1"/>
|
||||
<configuration name="link_enabled" value="1"/>
|
||||
<configuration name="loss_threshold" value="30"/>
|
||||
<configuration name="link_interval" value="1"/>
|
||||
<configuration name="link_timeout" value="4"/>
|
||||
<configuration name="mtu" value="0"/>
|
||||
</session_options>
|
||||
<session_metadata>
|
||||
<configuration name="canvas c1" value="{name {Canvas1}}"/>
|
||||
<configuration name="global_options" value="interface_names=no ip_addresses=yes ipv6_addresses=yes node_labels=yes link_labels=yes show_api=no background_images=no annotations=yes grid=yes traffic_start=0"/>
|
||||
<configuration name="shapes" value="[]"/>
|
||||
<configuration name="edges" value="[]"/>
|
||||
<configuration name="hidden" value="[]"/>
|
||||
<configuration name="canvas" value="{"gridlines": true, "canvases": [{"id": 1, "wallpaper": null, "wallpaper_style": 1, "fit_image": false, "dimensions": [1000, 750]}]}"/>
|
||||
</session_metadata>
|
||||
<default_services>
|
||||
<node type="mdr">
|
||||
|
|
|
@ -1,66 +1,55 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<scenario name="/home/developer/.core/configs/emane-demo-eel.xml">
|
||||
<scenario name="/tmp/tmp2mkcwn17">
|
||||
<networks>
|
||||
<network id="3" name="wlan3" model="emane_rfpipe" type="EMANE">
|
||||
<position x="282" y="317" lat="47.57628519861569" lon="-122.12852212634816" alt="2.0"/>
|
||||
<network id="3" name="wlan3" icon="" canvas="0" model="emane_rfpipe" type="EMANE">
|
||||
<position x="282.0" y="317.0" lat="47.5762849109534" lon="-122.12852434509814" alt="2.0"/>
|
||||
</network>
|
||||
</networks>
|
||||
<devices>
|
||||
<device id="1" name="n1" type="mdr" class="" image="">
|
||||
<position x="153" y="172" lat="47.57760325520506" lon="-122.13026036642295" alt="2.0"/>
|
||||
<device id="1" name="n1" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="153.0" y="172.0" lat="47.577602967549986" lon="-122.13026258517293" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
<device id="2" name="n2" type="mdr" class="" image="">
|
||||
<position x="393" y="171" lat="47.57761234513531" lon="-122.12702643140011" alt="2.0"/>
|
||||
<device id="2" name="n2" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="393.0" y="171.0" lat="47.57761205748029" lon="-122.1270286501501" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
</devices>
|
||||
<links>
|
||||
<link node1="3" node2="1">
|
||||
<iface2 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||
<link node1="1" node2="3">
|
||||
<iface1 id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||
</link>
|
||||
<link node1="3" node2="2">
|
||||
<iface2 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||
<link node1="2" node2="3">
|
||||
<iface1 id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||
</link>
|
||||
</links>
|
||||
<emane_global_configuration>
|
||||
<emulator>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="controlportendpoint" value="0.0.0.0:47000"/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</emulator>
|
||||
<core>
|
||||
<configuration name="platform_id_start" value="1"/>
|
||||
<configuration name="nem_id_start" value="1"/>
|
||||
<configuration name="link_enabled" value="1"/>
|
||||
<configuration name="loss_threshold" value="30"/>
|
||||
<configuration name="link_interval" value="1"/>
|
||||
<configuration name="link_timeout" value="4"/>
|
||||
</core>
|
||||
</emane_global_configuration>
|
||||
<emane_configurations>
|
||||
<emane_configuration node="3" model="emane_rfpipe">
|
||||
<platform>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</platform>
|
||||
<mac>
|
||||
<configuration name="datarate" value="1000000"/>
|
||||
<configuration name="delay" value="0.000000"/>
|
||||
|
@ -75,6 +64,17 @@
|
|||
</mac>
|
||||
<phy>
|
||||
<configuration name="bandwidth" value="1000000"/>
|
||||
<configuration name="compatibilitymode" value="1"/>
|
||||
<configuration name="dopplershiftenable" value="1"/>
|
||||
<configuration name="excludesamesubidfromfilterenable" value="1"/>
|
||||
<configuration name="fading.lognormal.dlthresh" value="0.250000"/>
|
||||
<configuration name="fading.lognormal.dmu" value="5.000000"/>
|
||||
<configuration name="fading.lognormal.dsigma" value="1.000000"/>
|
||||
<configuration name="fading.lognormal.duthresh" value="0.750000"/>
|
||||
<configuration name="fading.lognormal.lmean" value="0.005000"/>
|
||||
<configuration name="fading.lognormal.lstddev" value="0.001000"/>
|
||||
<configuration name="fading.lognormal.maxpathloss" value="100.000000"/>
|
||||
<configuration name="fading.lognormal.minpathloss" value="0.000000"/>
|
||||
<configuration name="fading.model" value="none"/>
|
||||
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||
|
@ -91,7 +91,10 @@
|
|||
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||
<configuration name="noisemode" value="none"/>
|
||||
<configuration name="processingpoolsize" value="0"/>
|
||||
<configuration name="propagationmodel" value="precomputed"/>
|
||||
<configuration name="rxsensitivitypromiscuousmodeenable" value="0"/>
|
||||
<configuration name="stats.receivepowertableenable" value="1"/>
|
||||
<configuration name="subid" value="1"/>
|
||||
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||
<configuration name="timesyncthreshold" value="10000"/>
|
||||
|
@ -104,7 +107,7 @@
|
|||
</external>
|
||||
</emane_configuration>
|
||||
</emane_configurations>
|
||||
<session_origin lat="47.5791667" lon="-122.132322" alt="2.0" scale="150.0"/>
|
||||
<session_origin lat="47.579166412353516" lon="-122.13232421875" alt="2.0" scale="150.0"/>
|
||||
<session_options>
|
||||
<configuration name="controlnet" value="172.16.0.0/24"/>
|
||||
<configuration name="controlnet0" value=""/>
|
||||
|
@ -117,10 +120,19 @@
|
|||
<configuration name="enablesdt" value="0"/>
|
||||
<configuration name="sdturl" value="tcp://127.0.0.1:50000/"/>
|
||||
<configuration name="ovs" value="0"/>
|
||||
<configuration name="platform_id_start" value="1"/>
|
||||
<configuration name="nem_id_start" value="1"/>
|
||||
<configuration name="link_enabled" value="1"/>
|
||||
<configuration name="loss_threshold" value="30"/>
|
||||
<configuration name="link_interval" value="1"/>
|
||||
<configuration name="link_timeout" value="4"/>
|
||||
<configuration name="mtu" value="0"/>
|
||||
</session_options>
|
||||
<session_metadata>
|
||||
<configuration name="canvas c1" value="{name {Canvas1}}"/>
|
||||
<configuration name="global_options" value="interface_names=no ip_addresses=yes ipv6_addresses=yes node_labels=yes link_labels=yes show_api=no background_images=no annotations=yes grid=yes traffic_start=0"/>
|
||||
<configuration name="shapes" value="[]"/>
|
||||
<configuration name="edges" value="[]"/>
|
||||
<configuration name="hidden" value="[]"/>
|
||||
<configuration name="canvas" value="{"gridlines": true, "canvases": [{"id": 1, "wallpaper": null, "wallpaper_style": 1, "fit_image": false, "dimensions": [1000, 750]}]}"/>
|
||||
</session_metadata>
|
||||
<default_services>
|
||||
<node type="mdr">
|
||||
|
|
|
@ -1,66 +1,55 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<scenario name="/home/developer/.core/configs/emane-demo-files.xml">
|
||||
<scenario name="/tmp/tmpsj4dhmce">
|
||||
<networks>
|
||||
<network id="3" name="wlan3" model="emane_rfpipe" type="EMANE">
|
||||
<position x="282" y="317" lat="47.57628519861569" lon="-122.12852212634816" alt="2.0"/>
|
||||
<network id="3" name="wlan3" icon="" canvas="0" model="emane_rfpipe" type="EMANE">
|
||||
<position x="282.0" y="317.0" lat="47.5762849109534" lon="-122.12852434509814" alt="2.0"/>
|
||||
</network>
|
||||
</networks>
|
||||
<devices>
|
||||
<device id="1" name="n1" type="mdr" class="" image="">
|
||||
<position x="153" y="173" lat="47.57759416527324" lon="-122.13026036642295" alt="2.0"/>
|
||||
<device id="1" name="n1" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="153.0" y="173.0" lat="47.57759387761812" lon="-122.13026258517293" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
<device id="2" name="n2" type="mdr" class="" image="">
|
||||
<position x="393" y="171" lat="47.57761234513531" lon="-122.12702643140011" alt="2.0"/>
|
||||
<device id="2" name="n2" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="393.0" y="171.0" lat="47.57761205748029" lon="-122.1270286501501" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
</devices>
|
||||
<links>
|
||||
<link node1="3" node2="1">
|
||||
<iface2 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||
<link node1="1" node2="3">
|
||||
<iface1 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||
</link>
|
||||
<link node1="3" node2="2">
|
||||
<iface2 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||
<link node1="2" node2="3">
|
||||
<iface1 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||
</link>
|
||||
</links>
|
||||
<emane_global_configuration>
|
||||
<emulator>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="controlportendpoint" value="0.0.0.0:47000"/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</emulator>
|
||||
<core>
|
||||
<configuration name="platform_id_start" value="1"/>
|
||||
<configuration name="nem_id_start" value="1"/>
|
||||
<configuration name="link_enabled" value="1"/>
|
||||
<configuration name="loss_threshold" value="30"/>
|
||||
<configuration name="link_interval" value="1"/>
|
||||
<configuration name="link_timeout" value="4"/>
|
||||
</core>
|
||||
</emane_global_configuration>
|
||||
<emane_configurations>
|
||||
<emane_configuration node="3" model="emane_rfpipe">
|
||||
<platform>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</platform>
|
||||
<mac>
|
||||
<configuration name="datarate" value="1000000"/>
|
||||
<configuration name="delay" value="0.000000"/>
|
||||
|
@ -75,6 +64,17 @@
|
|||
</mac>
|
||||
<phy>
|
||||
<configuration name="bandwidth" value="1000000"/>
|
||||
<configuration name="compatibilitymode" value="1"/>
|
||||
<configuration name="dopplershiftenable" value="1"/>
|
||||
<configuration name="excludesamesubidfromfilterenable" value="1"/>
|
||||
<configuration name="fading.lognormal.dlthresh" value="0.250000"/>
|
||||
<configuration name="fading.lognormal.dmu" value="5.000000"/>
|
||||
<configuration name="fading.lognormal.dsigma" value="1.000000"/>
|
||||
<configuration name="fading.lognormal.duthresh" value="0.750000"/>
|
||||
<configuration name="fading.lognormal.lmean" value="0.005000"/>
|
||||
<configuration name="fading.lognormal.lstddev" value="0.001000"/>
|
||||
<configuration name="fading.lognormal.maxpathloss" value="100.000000"/>
|
||||
<configuration name="fading.lognormal.minpathloss" value="0.000000"/>
|
||||
<configuration name="fading.model" value="none"/>
|
||||
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||
|
@ -91,7 +91,10 @@
|
|||
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||
<configuration name="noisemode" value="none"/>
|
||||
<configuration name="processingpoolsize" value="0"/>
|
||||
<configuration name="propagationmodel" value="2ray"/>
|
||||
<configuration name="rxsensitivitypromiscuousmodeenable" value="0"/>
|
||||
<configuration name="stats.receivepowertableenable" value="1"/>
|
||||
<configuration name="subid" value="1"/>
|
||||
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||
<configuration name="timesyncthreshold" value="10000"/>
|
||||
|
@ -104,7 +107,7 @@
|
|||
</external>
|
||||
</emane_configuration>
|
||||
</emane_configurations>
|
||||
<session_origin lat="47.5791667" lon="-122.132322" alt="2.0" scale="150.0"/>
|
||||
<session_origin lat="47.579166412353516" lon="-122.13232421875" alt="2.0" scale="150.0"/>
|
||||
<session_options>
|
||||
<configuration name="controlnet" value="172.16.0.0/24"/>
|
||||
<configuration name="controlnet0" value=""/>
|
||||
|
@ -117,10 +120,19 @@
|
|||
<configuration name="enablesdt" value="0"/>
|
||||
<configuration name="sdturl" value="tcp://127.0.0.1:50000/"/>
|
||||
<configuration name="ovs" value="0"/>
|
||||
<configuration name="platform_id_start" value="1"/>
|
||||
<configuration name="nem_id_start" value="1"/>
|
||||
<configuration name="link_enabled" value="1"/>
|
||||
<configuration name="loss_threshold" value="30"/>
|
||||
<configuration name="link_interval" value="1"/>
|
||||
<configuration name="link_timeout" value="4"/>
|
||||
<configuration name="mtu" value="0"/>
|
||||
</session_options>
|
||||
<session_metadata>
|
||||
<configuration name="canvas c1" value="{name {Canvas1}}"/>
|
||||
<configuration name="global_options" value="interface_names=no ip_addresses=yes ipv6_addresses=yes node_labels=yes link_labels=yes show_api=no background_images=no annotations=yes grid=yes traffic_start=0"/>
|
||||
<configuration name="shapes" value="[]"/>
|
||||
<configuration name="edges" value="[]"/>
|
||||
<configuration name="hidden" value="[]"/>
|
||||
<configuration name="canvas" value="{"gridlines": true, "canvases": [{"id": 1, "wallpaper": null, "wallpaper_style": 1, "fit_image": false, "dimensions": [1000, 750]}]}"/>
|
||||
</session_metadata>
|
||||
<default_services>
|
||||
<node type="mdr">
|
||||
|
|
|
@ -1,66 +1,55 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<scenario name="/home/developer/.core/configs/emane-demo-gpsd.xml">
|
||||
<scenario name="/tmp/tmp081pn3j9">
|
||||
<networks>
|
||||
<network id="3" name="wlan3" model="emane_rfpipe" type="EMANE">
|
||||
<position x="282" y="317" lat="47.57628519861569" lon="-122.12852212634816" alt="2.0"/>
|
||||
<network id="3" name="wlan3" icon="" canvas="0" model="emane_rfpipe" type="EMANE">
|
||||
<position x="282.0" y="317.0" lat="47.5762849109534" lon="-122.12852434509814" alt="2.0"/>
|
||||
</network>
|
||||
</networks>
|
||||
<devices>
|
||||
<device id="1" name="n1" type="mdr" class="" image="">
|
||||
<position x="153" y="173" lat="47.57759416527324" lon="-122.13026036642295" alt="2.0"/>
|
||||
<device id="1" name="n1" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="153.0" y="173.0" lat="47.57759387761812" lon="-122.13026258517293" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
<device id="2" name="n2" type="mdr" class="" image="">
|
||||
<position x="393" y="171" lat="47.57761234513531" lon="-122.12702643140011" alt="2.0"/>
|
||||
<device id="2" name="n2" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="393.0" y="171.0" lat="47.57761205748029" lon="-122.1270286501501" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
</devices>
|
||||
<links>
|
||||
<link node1="3" node2="1">
|
||||
<iface2 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||
<link node1="1" node2="3">
|
||||
<iface1 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||
</link>
|
||||
<link node1="3" node2="2">
|
||||
<iface2 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||
<link node1="2" node2="3">
|
||||
<iface1 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||
</link>
|
||||
</links>
|
||||
<emane_global_configuration>
|
||||
<emulator>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="controlportendpoint" value="0.0.0.0:47000"/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</emulator>
|
||||
<core>
|
||||
<configuration name="platform_id_start" value="1"/>
|
||||
<configuration name="nem_id_start" value="1"/>
|
||||
<configuration name="link_enabled" value="1"/>
|
||||
<configuration name="loss_threshold" value="30"/>
|
||||
<configuration name="link_interval" value="1"/>
|
||||
<configuration name="link_timeout" value="4"/>
|
||||
</core>
|
||||
</emane_global_configuration>
|
||||
<emane_configurations>
|
||||
<emane_configuration node="3" model="emane_rfpipe">
|
||||
<platform>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</platform>
|
||||
<mac>
|
||||
<configuration name="datarate" value="1000000"/>
|
||||
<configuration name="delay" value="0.000000"/>
|
||||
|
@ -75,6 +64,17 @@
|
|||
</mac>
|
||||
<phy>
|
||||
<configuration name="bandwidth" value="1000000"/>
|
||||
<configuration name="compatibilitymode" value="1"/>
|
||||
<configuration name="dopplershiftenable" value="1"/>
|
||||
<configuration name="excludesamesubidfromfilterenable" value="1"/>
|
||||
<configuration name="fading.lognormal.dlthresh" value="0.250000"/>
|
||||
<configuration name="fading.lognormal.dmu" value="5.000000"/>
|
||||
<configuration name="fading.lognormal.dsigma" value="1.000000"/>
|
||||
<configuration name="fading.lognormal.duthresh" value="0.750000"/>
|
||||
<configuration name="fading.lognormal.lmean" value="0.005000"/>
|
||||
<configuration name="fading.lognormal.lstddev" value="0.001000"/>
|
||||
<configuration name="fading.lognormal.maxpathloss" value="100.000000"/>
|
||||
<configuration name="fading.lognormal.minpathloss" value="0.000000"/>
|
||||
<configuration name="fading.model" value="none"/>
|
||||
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||
|
@ -91,7 +91,10 @@
|
|||
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||
<configuration name="noisemode" value="none"/>
|
||||
<configuration name="processingpoolsize" value="0"/>
|
||||
<configuration name="propagationmodel" value="2ray"/>
|
||||
<configuration name="rxsensitivitypromiscuousmodeenable" value="0"/>
|
||||
<configuration name="stats.receivepowertableenable" value="1"/>
|
||||
<configuration name="subid" value="1"/>
|
||||
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||
<configuration name="timesyncthreshold" value="10000"/>
|
||||
|
@ -104,7 +107,7 @@
|
|||
</external>
|
||||
</emane_configuration>
|
||||
</emane_configurations>
|
||||
<session_origin lat="47.5791667" lon="-122.132322" alt="2.0" scale="150.0"/>
|
||||
<session_origin lat="47.579166412353516" lon="-122.13232421875" alt="2.0" scale="150.0"/>
|
||||
<session_options>
|
||||
<configuration name="controlnet" value="172.16.0.0/24"/>
|
||||
<configuration name="controlnet0" value=""/>
|
||||
|
@ -117,10 +120,19 @@
|
|||
<configuration name="enablesdt" value="0"/>
|
||||
<configuration name="sdturl" value="tcp://127.0.0.1:50000/"/>
|
||||
<configuration name="ovs" value="0"/>
|
||||
<configuration name="platform_id_start" value="1"/>
|
||||
<configuration name="nem_id_start" value="1"/>
|
||||
<configuration name="link_enabled" value="1"/>
|
||||
<configuration name="loss_threshold" value="30"/>
|
||||
<configuration name="link_interval" value="1"/>
|
||||
<configuration name="link_timeout" value="4"/>
|
||||
<configuration name="mtu" value="0"/>
|
||||
</session_options>
|
||||
<session_metadata>
|
||||
<configuration name="canvas c1" value="{name {Canvas1}}"/>
|
||||
<configuration name="global_options" value="interface_names=no ip_addresses=yes ipv6_addresses=yes node_labels=yes link_labels=yes show_api=no background_images=no annotations=yes grid=yes traffic_start=0"/>
|
||||
<configuration name="shapes" value="[]"/>
|
||||
<configuration name="edges" value="[]"/>
|
||||
<configuration name="hidden" value="[]"/>
|
||||
<configuration name="canvas" value="{"gridlines": true, "canvases": [{"id": 1, "wallpaper": null, "wallpaper_style": 1, "fit_image": false, "dimensions": [1000, 750]}]}"/>
|
||||
</session_metadata>
|
||||
<default_services>
|
||||
<node type="mdr">
|
||||
|
|
|
@ -1,66 +1,55 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<scenario name="/home/developer/.core/configs/emane-demo-precomputed.xml">
|
||||
<scenario name="/tmp/tmpfokvqh5k">
|
||||
<networks>
|
||||
<network id="3" name="wlan3" model="emane_rfpipe" type="EMANE">
|
||||
<position x="282" y="317" lat="47.57628519861569" lon="-122.12852212634816" alt="2.0"/>
|
||||
<network id="3" name="wlan3" icon="" canvas="0" model="emane_rfpipe" type="EMANE">
|
||||
<position x="282.0" y="317.0" lat="47.5762849109534" lon="-122.12852434509814" alt="2.0"/>
|
||||
</network>
|
||||
</networks>
|
||||
<devices>
|
||||
<device id="1" name="n1" type="mdr" class="" image="">
|
||||
<position x="153" y="172" lat="47.57760325520506" lon="-122.13026036642295" alt="2.0"/>
|
||||
<device id="1" name="n1" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="153.0" y="172.0" lat="47.577602967549986" lon="-122.13026258517293" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
<device id="2" name="n2" type="mdr" class="" image="">
|
||||
<position x="393" y="171" lat="47.57761234513531" lon="-122.12702643140011" alt="2.0"/>
|
||||
<device id="2" name="n2" icon="" canvas="0" type="mdr" class="" image="">
|
||||
<position x="393.0" y="171.0" lat="47.57761205748029" lon="-122.1270286501501" alt="2.0"/>
|
||||
<services>
|
||||
<service name="zebra"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
<service name="IPForward"/>
|
||||
<service name="OSPFv3MDR"/>
|
||||
</services>
|
||||
</device>
|
||||
</devices>
|
||||
<links>
|
||||
<link node1="3" node2="1">
|
||||
<iface2 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||
<link node1="1" node2="3">
|
||||
<iface1 nem="1" id="0" name="eth0" mac="02:02:00:00:00:01" ip4="10.0.0.1" ip4_mask="32" ip6="2001::1" ip6_mask="128"/>
|
||||
</link>
|
||||
<link node1="3" node2="2">
|
||||
<iface2 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||
<link node1="2" node2="3">
|
||||
<iface1 nem="2" id="0" name="eth0" mac="02:02:00:00:00:02" ip4="10.0.0.2" ip4_mask="32" ip6="2001::2" ip6_mask="128"/>
|
||||
</link>
|
||||
</links>
|
||||
<emane_global_configuration>
|
||||
<emulator>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="controlportendpoint" value="0.0.0.0:47000"/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</emulator>
|
||||
<core>
|
||||
<configuration name="platform_id_start" value="1"/>
|
||||
<configuration name="nem_id_start" value="1"/>
|
||||
<configuration name="link_enabled" value="1"/>
|
||||
<configuration name="loss_threshold" value="30"/>
|
||||
<configuration name="link_interval" value="1"/>
|
||||
<configuration name="link_timeout" value="4"/>
|
||||
</core>
|
||||
</emane_global_configuration>
|
||||
<emane_configurations>
|
||||
<emane_configuration node="3" model="emane_rfpipe">
|
||||
<platform>
|
||||
<configuration name="antennaprofilemanifesturi" value=""/>
|
||||
<configuration name="eventservicedevice" value="ctrl0"/>
|
||||
<configuration name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<configuration name="eventservicettl" value="1"/>
|
||||
<configuration name="otamanagerchannelenable" value="1"/>
|
||||
<configuration name="otamanagerdevice" value="ctrl0"/>
|
||||
<configuration name="otamanagergroup" value="224.1.2.8:45702"/>
|
||||
<configuration name="otamanagerloopback" value="0"/>
|
||||
<configuration name="otamanagermtu" value="0"/>
|
||||
<configuration name="otamanagerpartcheckthreshold" value="2"/>
|
||||
<configuration name="otamanagerparttimeoutthreshold" value="5"/>
|
||||
<configuration name="otamanagerttl" value="1"/>
|
||||
<configuration name="stats.event.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxeventcountrows" value="0"/>
|
||||
<configuration name="stats.ota.maxpacketcountrows" value="0"/>
|
||||
</platform>
|
||||
<mac>
|
||||
<configuration name="datarate" value="1000000"/>
|
||||
<configuration name="delay" value="0.000000"/>
|
||||
|
@ -75,6 +64,17 @@
|
|||
</mac>
|
||||
<phy>
|
||||
<configuration name="bandwidth" value="1000000"/>
|
||||
<configuration name="compatibilitymode" value="1"/>
|
||||
<configuration name="dopplershiftenable" value="1"/>
|
||||
<configuration name="excludesamesubidfromfilterenable" value="1"/>
|
||||
<configuration name="fading.lognormal.dlthresh" value="0.250000"/>
|
||||
<configuration name="fading.lognormal.dmu" value="5.000000"/>
|
||||
<configuration name="fading.lognormal.dsigma" value="1.000000"/>
|
||||
<configuration name="fading.lognormal.duthresh" value="0.750000"/>
|
||||
<configuration name="fading.lognormal.lmean" value="0.005000"/>
|
||||
<configuration name="fading.lognormal.lstddev" value="0.001000"/>
|
||||
<configuration name="fading.lognormal.maxpathloss" value="100.000000"/>
|
||||
<configuration name="fading.lognormal.minpathloss" value="0.000000"/>
|
||||
<configuration name="fading.model" value="none"/>
|
||||
<configuration name="fading.nakagami.distance0" value="100.000000"/>
|
||||
<configuration name="fading.nakagami.distance1" value="250.000000"/>
|
||||
|
@ -91,7 +91,10 @@
|
|||
<configuration name="noisemaxsegmentduration" value="1000000"/>
|
||||
<configuration name="noisemaxsegmentoffset" value="300000"/>
|
||||
<configuration name="noisemode" value="none"/>
|
||||
<configuration name="processingpoolsize" value="0"/>
|
||||
<configuration name="propagationmodel" value="precomputed"/>
|
||||
<configuration name="rxsensitivitypromiscuousmodeenable" value="0"/>
|
||||
<configuration name="stats.receivepowertableenable" value="1"/>
|
||||
<configuration name="subid" value="1"/>
|
||||
<configuration name="systemnoisefigure" value="4.000000"/>
|
||||
<configuration name="timesyncthreshold" value="10000"/>
|
||||
|
@ -104,7 +107,7 @@
|
|||
</external>
|
||||
</emane_configuration>
|
||||
</emane_configurations>
|
||||
<session_origin lat="47.5791667" lon="-122.132322" alt="2.0" scale="150.0"/>
|
||||
<session_origin lat="47.579166412353516" lon="-122.13232421875" alt="2.0" scale="150.0"/>
|
||||
<session_options>
|
||||
<configuration name="controlnet" value="172.16.0.0/24"/>
|
||||
<configuration name="controlnet0" value=""/>
|
||||
|
@ -117,10 +120,19 @@
|
|||
<configuration name="enablesdt" value="0"/>
|
||||
<configuration name="sdturl" value="tcp://127.0.0.1:50000/"/>
|
||||
<configuration name="ovs" value="0"/>
|
||||
<configuration name="platform_id_start" value="1"/>
|
||||
<configuration name="nem_id_start" value="1"/>
|
||||
<configuration name="link_enabled" value="1"/>
|
||||
<configuration name="loss_threshold" value="30"/>
|
||||
<configuration name="link_interval" value="1"/>
|
||||
<configuration name="link_timeout" value="4"/>
|
||||
<configuration name="mtu" value="0"/>
|
||||
</session_options>
|
||||
<session_metadata>
|
||||
<configuration name="canvas c1" value="{name {Canvas1}}"/>
|
||||
<configuration name="global_options" value="interface_names=no ip_addresses=yes ipv6_addresses=yes node_labels=yes link_labels=yes show_api=no background_images=no annotations=yes grid=yes traffic_start=0"/>
|
||||
<configuration name="shapes" value="[]"/>
|
||||
<configuration name="edges" value="[]"/>
|
||||
<configuration name="hidden" value="[]"/>
|
||||
<configuration name="canvas" value="{"gridlines": true, "canvases": [{"id": 1, "wallpaper": null, "wallpaper_style": 1, "fit_image": false, "dimensions": [1000, 750]}]}"/>
|
||||
</session_metadata>
|
||||
<default_services>
|
||||
<node type="mdr">
|
||||
|
|
|
@ -95,10 +95,9 @@
|
|||
<service name="DefaultRoute"/>
|
||||
</services>
|
||||
</device>
|
||||
<device id="14" name="n14" icon="" canvas="0" type="host" class="" image="">
|
||||
<device id="14" name="n14" icon="" canvas="0" type="PC" class="" image="">
|
||||
<position x="348.0" y="228.0" lat="47.57709392893491" lon="-122.12763501296686" alt="2.0"/>
|
||||
<services>
|
||||
<service name="SSH"/>
|
||||
<service name="DefaultRoute"/>
|
||||
</services>
|
||||
</device>
|
||||
|
@ -260,9 +259,5 @@
|
|||
<service name="OSPFv3"/>
|
||||
<service name="IPForward"/>
|
||||
</node>
|
||||
<node type="host">
|
||||
<service name="DefaultRoute"/>
|
||||
<service name="SSH"/>
|
||||
</node>
|
||||
</default_services>
|
||||
</scenario>
|
||||
|
|
|
@ -37,6 +37,8 @@ class EmaneModelDialog(Dialog):
|
|||
self.has_error: bool = False
|
||||
try:
|
||||
config = self.node.emane_model_configs.get((self.model, self.iface_id))
|
||||
if not config:
|
||||
config = self.node.emane_model_configs.get((self.model, None))
|
||||
if not config:
|
||||
config = self.app.core.get_emane_model_config(
|
||||
self.node.id, self.model, self.iface_id
|
||||
|
|
|
@ -56,7 +56,7 @@ def node_label_positions(
|
|||
src_x: int, src_y: int, dst_x: int, dst_y: int
|
||||
) -> Tuple[Tuple[float, float], Tuple[float, float]]:
|
||||
v_x, v_y = dst_x - src_x, dst_y - src_y
|
||||
v_len = math.sqrt(v_x ** 2 + v_y ** 2)
|
||||
v_len = math.sqrt(v_x**2 + v_y**2)
|
||||
if v_len == 0:
|
||||
u_x, u_y = 0.0, 0.0
|
||||
else:
|
||||
|
@ -147,7 +147,7 @@ class Edge:
|
|||
perp_m = -1 / m
|
||||
b = mp_y - (perp_m * mp_x)
|
||||
# get arc x and y
|
||||
offset = math.sqrt(self.arc ** 2 / (1 + (1 / m ** 2)))
|
||||
offset = math.sqrt(self.arc**2 / (1 + (1 / m**2)))
|
||||
arc_x = mp_x
|
||||
if self.arc >= 0:
|
||||
arc_x += offset
|
||||
|
|
|
@ -892,7 +892,7 @@ class CoreNode(CoreNodeBase):
|
|||
for ip in iface.ips():
|
||||
# ipv4 check
|
||||
broadcast = None
|
||||
if netaddr.valid_ipv4(ip):
|
||||
if netaddr.valid_ipv4(str(ip.ip)):
|
||||
broadcast = "+"
|
||||
self.node_net_client.create_address(iface.name, str(ip), broadcast)
|
||||
# configure iface options
|
||||
|
|
|
@ -5,6 +5,7 @@ from typing import Callable
|
|||
|
||||
import netaddr
|
||||
|
||||
from core import utils
|
||||
from core.executables import ETHTOOL, IP, OVS_VSCTL, SYSCTL, TC
|
||||
|
||||
|
||||
|
@ -177,6 +178,7 @@ class LinuxNetClient:
|
|||
if netaddr.valid_ipv6(address.split("/")[0]):
|
||||
# IPv6 addresses are removed by default on interface down.
|
||||
# Make sure that the IPv6 address we add is not removed
|
||||
device = utils.sysctl_devname(device)
|
||||
self.run(f"{SYSCTL} -w net.ipv6.conf.{device}.keep_addr_on_down=1")
|
||||
|
||||
def delete_address(self, device: str, address: str) -> None:
|
||||
|
|
|
@ -647,6 +647,15 @@ class PtpNet(CoreNetwork):
|
|||
raise CoreError("ptp links support at most 2 network interfaces")
|
||||
super().attach(iface)
|
||||
|
||||
def startup(self) -> None:
|
||||
"""
|
||||
Startup for a p2p node, that disables mac learning after normal startup.
|
||||
|
||||
:return: nothing
|
||||
"""
|
||||
super().startup()
|
||||
self.net_client.set_mac_learning(self.brname, LEARNING_DISABLED)
|
||||
|
||||
|
||||
class SwitchNode(CoreNetwork):
|
||||
"""
|
||||
|
|
|
@ -15,7 +15,7 @@ from core.errors import CoreXmlError
|
|||
from core.nodes.base import CoreNodeBase, CoreNodeOptions, NodeBase, Position
|
||||
from core.nodes.docker import DockerNode, DockerOptions
|
||||
from core.nodes.interface import CoreInterface
|
||||
from core.nodes.lxd import LxcNode
|
||||
from core.nodes.lxd import LxcNode, LxcOptions
|
||||
from core.nodes.network import CtrlNet, GreTapBridge, PtpNet, WlanNode
|
||||
from core.nodes.wireless import WirelessNode
|
||||
from core.services.coreservices import CoreService
|
||||
|
@ -825,7 +825,7 @@ class CoreXmlReader:
|
|||
options.config_services.extend(
|
||||
x.get("name") for x in config_service_elements.iterchildren()
|
||||
)
|
||||
if isinstance(options, DockerOptions):
|
||||
if isinstance(options, (DockerOptions, LxcOptions)):
|
||||
options.image = image
|
||||
# get position information
|
||||
position_element = device_element.find("position")
|
||||
|
|
476
daemon/poetry.lock
generated
476
daemon/poetry.lock
generated
|
@ -1,11 +1,3 @@
|
|||
[[package]]
|
||||
name = "appdirs"
|
||||
version = "1.4.4"
|
||||
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "atomicwrites"
|
||||
version = "1.4.1"
|
||||
|
@ -16,17 +8,19 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
|||
|
||||
[[package]]
|
||||
name = "attrs"
|
||||
version = "22.1.0"
|
||||
version = "22.2.0"
|
||||
description = "Classes Without Boilerplate"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.5"
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.extras]
|
||||
dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"]
|
||||
docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"]
|
||||
tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"]
|
||||
tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"]
|
||||
cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"]
|
||||
dev = ["attrs[docs,tests]"]
|
||||
docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"]
|
||||
tests = ["attrs[tests-no-zope]", "zope.interface"]
|
||||
tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=0.971,<0.990)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
|
||||
tests_no_zope = ["cloudpickle", "hypothesis", "mypy (>=0.971,<0.990)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
|
||||
|
||||
[[package]]
|
||||
name = "bcrypt"
|
||||
|
@ -42,24 +36,29 @@ typecheck = ["mypy"]
|
|||
|
||||
[[package]]
|
||||
name = "black"
|
||||
version = "19.3b0"
|
||||
version = "22.12.0"
|
||||
description = "The uncompromising code formatter."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.dependencies]
|
||||
appdirs = "*"
|
||||
attrs = ">=18.1.0"
|
||||
click = ">=6.5"
|
||||
toml = ">=0.9.4"
|
||||
click = ">=8.0.0"
|
||||
mypy-extensions = ">=0.4.3"
|
||||
pathspec = ">=0.9.0"
|
||||
platformdirs = ">=2"
|
||||
tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""}
|
||||
typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}
|
||||
|
||||
[package.extras]
|
||||
d = ["aiohttp (>=3.3.2)", "aiohttp-cors"]
|
||||
colorama = ["colorama (>=0.4.3)"]
|
||||
d = ["aiohttp (>=3.7.4)"]
|
||||
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
|
||||
uvloop = ["uvloop (>=0.15.2)"]
|
||||
|
||||
[[package]]
|
||||
name = "certifi"
|
||||
version = "2022.9.24"
|
||||
version = "2022.12.7"
|
||||
description = "Python package for providing Mozilla's CA Bundle."
|
||||
category = "main"
|
||||
optional = false
|
||||
|
@ -78,34 +77,34 @@ pycparser = "*"
|
|||
|
||||
[[package]]
|
||||
name = "cfgv"
|
||||
version = "3.0.0"
|
||||
version = "3.3.1"
|
||||
description = "Validate configuration and produce human readable error messages."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
python-versions = ">=3.6.1"
|
||||
|
||||
[[package]]
|
||||
name = "click"
|
||||
version = "8.0.4"
|
||||
version = "8.1.3"
|
||||
description = "Composable command line interface toolkit"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.dependencies]
|
||||
colorama = {version = "*", markers = "platform_system == \"Windows\""}
|
||||
|
||||
[[package]]
|
||||
name = "colorama"
|
||||
version = "0.4.5"
|
||||
version = "0.4.6"
|
||||
description = "Cross-platform colored terminal text."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
|
||||
|
||||
[[package]]
|
||||
name = "cryptography"
|
||||
version = "38.0.1"
|
||||
version = "39.0.1"
|
||||
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
|
||||
category = "main"
|
||||
optional = false
|
||||
|
@ -115,12 +114,14 @@ python-versions = ">=3.6"
|
|||
cffi = ">=1.12"
|
||||
|
||||
[package.extras]
|
||||
docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"]
|
||||
docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"]
|
||||
docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"]
|
||||
pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"]
|
||||
pep8test = ["black", "check-manifest", "mypy", "ruff", "types-pytz", "types-requests"]
|
||||
sdist = ["setuptools-rust (>=0.11.4)"]
|
||||
ssh = ["bcrypt (>=3.1.5)"]
|
||||
test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"]
|
||||
test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-shard (>=0.1.2)", "pytest-subtests", "pytest-xdist", "pytz"]
|
||||
test-randomorder = ["pytest-randomly"]
|
||||
tox = ["tox"]
|
||||
|
||||
[[package]]
|
||||
name = "distlib"
|
||||
|
@ -149,15 +150,15 @@ testing = ["mock (>=2.0.0,<3.0)"]
|
|||
|
||||
[[package]]
|
||||
name = "filelock"
|
||||
version = "3.4.1"
|
||||
version = "3.9.0"
|
||||
description = "A platform independent file lock."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.extras]
|
||||
docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"]
|
||||
testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"]
|
||||
docs = ["furo (>=2022.12.7)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"]
|
||||
testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"]
|
||||
|
||||
[[package]]
|
||||
name = "flake8"
|
||||
|
@ -201,26 +202,26 @@ setuptools = "*"
|
|||
|
||||
[[package]]
|
||||
name = "identify"
|
||||
version = "1.6.2"
|
||||
version = "2.5.18"
|
||||
description = "File identification library for Python"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.extras]
|
||||
license = ["editdistance"]
|
||||
license = ["ukkonen"]
|
||||
|
||||
[[package]]
|
||||
name = "iniconfig"
|
||||
version = "1.1.1"
|
||||
description = "iniconfig: brain-dead simple config-ini parsing"
|
||||
version = "2.0.0"
|
||||
description = "brain-dead simple config-ini parsing"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[[package]]
|
||||
name = "invoke"
|
||||
version = "1.4.1"
|
||||
version = "1.7.3"
|
||||
description = "Pythonic task execution"
|
||||
category = "main"
|
||||
optional = false
|
||||
|
@ -272,11 +273,11 @@ testing = ["pytest"]
|
|||
|
||||
[[package]]
|
||||
name = "MarkupSafe"
|
||||
version = "2.0.1"
|
||||
version = "2.1.2"
|
||||
description = "Safely add untrusted strings to HTML/XML markup."
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[[package]]
|
||||
name = "mccabe"
|
||||
|
@ -299,6 +300,14 @@ build = ["blurb", "twine", "wheel"]
|
|||
docs = ["sphinx"]
|
||||
test = ["pytest", "pytest-cov"]
|
||||
|
||||
[[package]]
|
||||
name = "mypy-extensions"
|
||||
version = "1.0.0"
|
||||
description = "Type system extensions for programs checked with the mypy type checker."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.5"
|
||||
|
||||
[[package]]
|
||||
name = "netaddr"
|
||||
version = "0.7.19"
|
||||
|
@ -309,42 +318,40 @@ python-versions = "*"
|
|||
|
||||
[[package]]
|
||||
name = "nodeenv"
|
||||
version = "1.6.0"
|
||||
version = "1.7.0"
|
||||
description = "Node.js virtual environment builder"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*"
|
||||
|
||||
[package.dependencies]
|
||||
setuptools = "*"
|
||||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
version = "21.3"
|
||||
version = "23.0"
|
||||
description = "Core utilities for Python packages"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[[package]]
|
||||
name = "paramiko"
|
||||
version = "3.0.0"
|
||||
description = "SSH2 protocol library"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
|
||||
|
||||
[[package]]
|
||||
name = "paramiko"
|
||||
version = "2.11.0"
|
||||
description = "SSH2 protocol library"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[package.dependencies]
|
||||
bcrypt = ">=3.1.3"
|
||||
cryptography = ">=2.5"
|
||||
pynacl = ">=1.0.1"
|
||||
six = "*"
|
||||
bcrypt = ">=3.2"
|
||||
cryptography = ">=3.3"
|
||||
pynacl = ">=1.5"
|
||||
|
||||
[package.extras]
|
||||
all = ["bcrypt (>=3.1.3)", "gssapi (>=1.4.1)", "invoke (>=1.3)", "pyasn1 (>=0.1.7)", "pynacl (>=1.0.1)", "pywin32 (>=2.1.8)"]
|
||||
ed25519 = ["bcrypt (>=3.1.3)", "pynacl (>=1.0.1)"]
|
||||
all = ["gssapi (>=1.4.1)", "invoke (>=2.0)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"]
|
||||
gssapi = ["gssapi (>=1.4.1)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"]
|
||||
invoke = ["invoke (>=1.3)"]
|
||||
invoke = ["invoke (>=2.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "pathlib2"
|
||||
|
@ -357,6 +364,14 @@ python-versions = "*"
|
|||
[package.dependencies]
|
||||
six = "*"
|
||||
|
||||
[[package]]
|
||||
name = "pathspec"
|
||||
version = "0.11.0"
|
||||
description = "Utility library for gitignore style pattern matching of file paths."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[[package]]
|
||||
name = "Pillow"
|
||||
version = "9.2.0"
|
||||
|
@ -371,15 +386,15 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa
|
|||
|
||||
[[package]]
|
||||
name = "platformdirs"
|
||||
version = "2.4.0"
|
||||
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||
version = "3.0.0"
|
||||
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.extras]
|
||||
docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"]
|
||||
test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"]
|
||||
docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"]
|
||||
test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
|
||||
|
||||
[[package]]
|
||||
name = "pluggy"
|
||||
|
@ -464,17 +479,6 @@ cffi = ">=1.4.1"
|
|||
docs = ["sphinx (>=1.6.5)", "sphinx_rtd_theme"]
|
||||
tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "pyparsing"
|
||||
version = "3.0.7"
|
||||
description = "Python parsing module"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.extras]
|
||||
diagrams = ["jinja2", "railroad-diagrams"]
|
||||
|
||||
[[package]]
|
||||
name = "pyproj"
|
||||
version = "3.3.1"
|
||||
|
@ -517,15 +521,16 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
|
|||
|
||||
[[package]]
|
||||
name = "setuptools"
|
||||
version = "59.6.0"
|
||||
version = "67.4.0"
|
||||
description = "Easily download, build, install, upgrade, and uninstall Python packages"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.extras]
|
||||
docs = ["furo", "jaraco.packaging (>=8.2)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx", "sphinx-inline-tabs", "sphinxcontrib-towncrier"]
|
||||
testing = ["flake8-2020", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "paver", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy", "pytest-virtualenv (>=1.2.7)", "pytest-xdist", "sphinx", "virtualenv (>=13.0.0)", "wheel"]
|
||||
docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
|
||||
testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
|
||||
testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"]
|
||||
|
||||
[[package]]
|
||||
name = "six"
|
||||
|
@ -543,39 +548,51 @@ category = "dev"
|
|||
optional = false
|
||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||
|
||||
[[package]]
|
||||
name = "tomli"
|
||||
version = "2.0.1"
|
||||
description = "A lil' TOML parser"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[[package]]
|
||||
name = "typing-extensions"
|
||||
version = "4.5.0"
|
||||
description = "Backported and Experimental Type Hints for Python 3.7+"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[[package]]
|
||||
name = "virtualenv"
|
||||
version = "20.16.5"
|
||||
version = "20.19.0"
|
||||
description = "Virtual Python Environment builder"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.dependencies]
|
||||
distlib = ">=0.3.5,<1"
|
||||
distlib = ">=0.3.6,<1"
|
||||
filelock = ">=3.4.1,<4"
|
||||
platformdirs = ">=2.4,<3"
|
||||
platformdirs = ">=2.4,<4"
|
||||
|
||||
[package.extras]
|
||||
docs = ["proselint (>=0.13)", "sphinx (>=5.1.1)", "sphinx-argparse (>=0.3.1)", "sphinx-rtd-theme (>=1)", "towncrier (>=21.9)"]
|
||||
testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=21.3)", "pytest (>=7.0.1)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.6.1)", "pytest-randomly (>=3.10.3)", "pytest-timeout (>=2.1)"]
|
||||
docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"]
|
||||
test = ["covdefaults (>=2.2.2)", "coverage (>=7.1)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23)", "pytest (>=7.2.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)"]
|
||||
|
||||
[metadata]
|
||||
lock-version = "1.1"
|
||||
python-versions = "^3.9"
|
||||
content-hash = "c2b34d6cfc645c88a200c8be6ae2e4077ce65947f370df55012b26fbadd645e1"
|
||||
content-hash = "b78118206a714bae7b839da039024e850a1fee06d2768acd6f452490de4abb0e"
|
||||
|
||||
[metadata.files]
|
||||
appdirs = [
|
||||
{file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"},
|
||||
{file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"},
|
||||
]
|
||||
atomicwrites = [
|
||||
{file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"},
|
||||
]
|
||||
attrs = [
|
||||
{file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"},
|
||||
{file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"},
|
||||
{file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"},
|
||||
{file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"},
|
||||
]
|
||||
bcrypt = [
|
||||
{file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"},
|
||||
|
@ -601,12 +618,22 @@ bcrypt = [
|
|||
{file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"},
|
||||
]
|
||||
black = [
|
||||
{file = "black-19.3b0-py36-none-any.whl", hash = "sha256:09a9dcb7c46ed496a9850b76e4e825d6049ecd38b611f1224857a79bd985a8cf"},
|
||||
{file = "black-19.3b0.tar.gz", hash = "sha256:68950ffd4d9169716bcb8719a56c07a2f4485354fec061cdd5910aa07369731c"},
|
||||
{file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"},
|
||||
{file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"},
|
||||
{file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"},
|
||||
{file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"},
|
||||
{file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"},
|
||||
{file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"},
|
||||
{file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"},
|
||||
{file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"},
|
||||
{file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"},
|
||||
{file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"},
|
||||
{file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"},
|
||||
{file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"},
|
||||
]
|
||||
certifi = [
|
||||
{file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"},
|
||||
{file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"},
|
||||
{file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"},
|
||||
{file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"},
|
||||
]
|
||||
cffi = [
|
||||
{file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"},
|
||||
|
@ -675,44 +702,41 @@ cffi = [
|
|||
{file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"},
|
||||
]
|
||||
cfgv = [
|
||||
{file = "cfgv-3.0.0-py2.py3-none-any.whl", hash = "sha256:f22b426ed59cd2ab2b54ff96608d846c33dfb8766a67f0b4a6ce130ce244414f"},
|
||||
{file = "cfgv-3.0.0.tar.gz", hash = "sha256:04b093b14ddf9fd4d17c53ebfd55582d27b76ed30050193c14e560770c5360eb"},
|
||||
{file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
|
||||
{file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
|
||||
]
|
||||
click = [
|
||||
{file = "click-8.0.4-py3-none-any.whl", hash = "sha256:6a7a62563bbfabfda3a38f3023a1db4a35978c0abd76f6c9605ecd6554d6d9b1"},
|
||||
{file = "click-8.0.4.tar.gz", hash = "sha256:8458d7b1287c5fb128c90e23381cf99dcde74beaf6c7ff6384ce84d6fe090adb"},
|
||||
{file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
|
||||
{file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
|
||||
]
|
||||
colorama = [
|
||||
{file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"},
|
||||
{file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"},
|
||||
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
|
||||
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
||||
]
|
||||
cryptography = [
|
||||
{file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-win32.whl", hash = "sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0"},
|
||||
{file = "cryptography-38.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a"},
|
||||
{file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d"},
|
||||
{file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9"},
|
||||
{file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d"},
|
||||
{file = "cryptography-38.0.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818"},
|
||||
{file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6"},
|
||||
{file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750"},
|
||||
{file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013"},
|
||||
{file = "cryptography-38.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5"},
|
||||
{file = "cryptography-38.0.1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61"},
|
||||
{file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac"},
|
||||
{file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb"},
|
||||
{file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a"},
|
||||
{file = "cryptography-38.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b"},
|
||||
{file = "cryptography-38.0.1.tar.gz", hash = "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-macosx_10_12_universal2.whl", hash = "sha256:6687ef6d0a6497e2b58e7c5b852b53f62142cfa7cd1555795758934da363a965"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-macosx_10_12_x86_64.whl", hash = "sha256:706843b48f9a3f9b9911979761c91541e3d90db1ca905fd63fee540a217698bc"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:5d2d8b87a490bfcd407ed9d49093793d0f75198a35e6eb1a923ce1ee86c62b41"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83e17b26de248c33f3acffb922748151d71827d6021d98c70e6c1a25ddd78505"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e124352fd3db36a9d4a21c1aa27fd5d051e621845cb87fb851c08f4f75ce8be6"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:5aa67414fcdfa22cf052e640cb5ddc461924a045cacf325cd164e65312d99502"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:35f7c7d015d474f4011e859e93e789c87d21f6f4880ebdc29896a60403328f1f"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f24077a3b5298a5a06a8e0536e3ea9ec60e4c7ac486755e5fb6e6ea9b3500106"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:f0c64d1bd842ca2633e74a1a28033d139368ad959872533b1bab8c80e8240a0c"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0f8da300b5c8af9f98111ffd512910bc792b4c77392a9523624680f7956a99d4"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-win32.whl", hash = "sha256:fe913f20024eb2cb2f323e42a64bdf2911bb9738a15dba7d3cce48151034e3a8"},
|
||||
{file = "cryptography-39.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:ced4e447ae29ca194449a3f1ce132ded8fcab06971ef5f618605aacaa612beac"},
|
||||
{file = "cryptography-39.0.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:807ce09d4434881ca3a7594733669bd834f5b2c6d5c7e36f8c00f691887042ad"},
|
||||
{file = "cryptography-39.0.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c5caeb8188c24888c90b5108a441c106f7faa4c4c075a2bcae438c6e8ca73cef"},
|
||||
{file = "cryptography-39.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4789d1e3e257965e960232345002262ede4d094d1a19f4d3b52e48d4d8f3b885"},
|
||||
{file = "cryptography-39.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:96f1157a7c08b5b189b16b47bc9db2332269d6680a196341bf30046330d15388"},
|
||||
{file = "cryptography-39.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e422abdec8b5fa8462aa016786680720d78bdce7a30c652b7fadf83a4ba35336"},
|
||||
{file = "cryptography-39.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:b0afd054cd42f3d213bf82c629efb1ee5f22eba35bf0eec88ea9ea7304f511a2"},
|
||||
{file = "cryptography-39.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:6f8ba7f0328b79f08bdacc3e4e66fb4d7aab0c3584e0bd41328dce5262e26b2e"},
|
||||
{file = "cryptography-39.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ef8b72fa70b348724ff1218267e7f7375b8de4e8194d1636ee60510aae104cd0"},
|
||||
{file = "cryptography-39.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:aec5a6c9864be7df2240c382740fcf3b96928c46604eaa7f3091f58b878c0bb6"},
|
||||
{file = "cryptography-39.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fdd188c8a6ef8769f148f88f859884507b954cc64db6b52f66ef199bb9ad660a"},
|
||||
{file = "cryptography-39.0.1.tar.gz", hash = "sha256:d1f6198ee6d9148405e49887803907fe8962a23e6c6f83ea7d98f1c0de375695"},
|
||||
]
|
||||
distlib = [
|
||||
{file = "distlib-0.3.6-py2.py3-none-any.whl", hash = "sha256:f35c4b692542ca110de7ef0bea44d73981caeb34ca0b9b6b2e6d7790dda8f80e"},
|
||||
|
@ -723,8 +747,8 @@ fabric = [
|
|||
{file = "fabric-2.7.1.tar.gz", hash = "sha256:76f8fef59cf2061dbd849bbce4fe49bdd820884385004b0ca59136ac3db129e4"},
|
||||
]
|
||||
filelock = [
|
||||
{file = "filelock-3.4.1-py3-none-any.whl", hash = "sha256:a4bc51381e01502a30e9f06dd4fa19a1712eab852b6fb0f84fd7cce0793d8ca3"},
|
||||
{file = "filelock-3.4.1.tar.gz", hash = "sha256:0f12f552b42b5bf60dba233710bf71337d35494fc8bdd4fd6d9f6d082ad45e06"},
|
||||
{file = "filelock-3.9.0-py3-none-any.whl", hash = "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d"},
|
||||
{file = "filelock-3.9.0.tar.gz", hash = "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de"},
|
||||
]
|
||||
flake8 = [
|
||||
{file = "flake8-3.8.2-py2.py3-none-any.whl", hash = "sha256:ccaa799ef9893cebe69fdfefed76865aeaefbb94cb8545617b2298786a4de9a5"},
|
||||
|
@ -825,17 +849,16 @@ grpcio-tools = [
|
|||
{file = "grpcio_tools-1.49.1-cp39-cp39-win_amd64.whl", hash = "sha256:1efa0c221c719433f441ac0e026fc3c4dbc9a1a08a552ecdc707775e2f2fbbae"},
|
||||
]
|
||||
identify = [
|
||||
{file = "identify-1.6.2-py2.py3-none-any.whl", hash = "sha256:8f9879b5b7cca553878d31548a419ec2f227d3328da92fe8202bc5e546d5cbc3"},
|
||||
{file = "identify-1.6.2.tar.gz", hash = "sha256:1c2014f6985ed02e62b2e6955578acf069cb2c54859e17853be474bfe7e13bed"},
|
||||
{file = "identify-2.5.18-py2.py3-none-any.whl", hash = "sha256:93aac7ecf2f6abf879b8f29a8002d3c6de7086b8c28d88e1ad15045a15ab63f9"},
|
||||
{file = "identify-2.5.18.tar.gz", hash = "sha256:89e144fa560cc4cffb6ef2ab5e9fb18ed9f9b3cb054384bab4b95c12f6c309fe"},
|
||||
]
|
||||
iniconfig = [
|
||||
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
|
||||
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
|
||||
{file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
|
||||
{file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
|
||||
]
|
||||
invoke = [
|
||||
{file = "invoke-1.4.1-py2-none-any.whl", hash = "sha256:93e12876d88130c8e0d7fd6618dd5387d6b36da55ad541481dfa5e001656f134"},
|
||||
{file = "invoke-1.4.1-py3-none-any.whl", hash = "sha256:87b3ef9d72a1667e104f89b159eaf8a514dbf2f3576885b2bbdefe74c3fb2132"},
|
||||
{file = "invoke-1.4.1.tar.gz", hash = "sha256:de3f23bfe669e3db1085789fd859eb8ca8e0c5d9c20811e2407fa042e8a5e15d"},
|
||||
{file = "invoke-1.7.3-py3-none-any.whl", hash = "sha256:d9694a865764dd3fd91f25f7e9a97fb41666e822bbb00e670091e3f43933574d"},
|
||||
{file = "invoke-1.7.3.tar.gz", hash = "sha256:41b428342d466a82135d5ab37119685a989713742be46e42a3a399d685579314"},
|
||||
]
|
||||
isort = [
|
||||
{file = "isort-4.3.21-py2.py3-none-any.whl", hash = "sha256:6e811fcb295968434526407adb8796944f1988c5b65e8139058f2014cbe100fd"},
|
||||
|
@ -918,75 +941,56 @@ Mako = [
|
|||
{file = "Mako-1.2.3.tar.gz", hash = "sha256:7fde96466fcfeedb0eed94f187f20b23d85e4cb41444be0e542e2c8c65c396cd"},
|
||||
]
|
||||
MarkupSafe = [
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"},
|
||||
{file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
|
||||
{file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
|
||||
{file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
|
||||
{file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
|
||||
{file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
|
||||
{file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"},
|
||||
{file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"},
|
||||
{file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"},
|
||||
{file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"},
|
||||
{file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"},
|
||||
{file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"},
|
||||
{file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"},
|
||||
]
|
||||
mccabe = [
|
||||
{file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
|
||||
|
@ -996,26 +1000,34 @@ mock = [
|
|||
{file = "mock-4.0.2-py3-none-any.whl", hash = "sha256:3f9b2c0196c60d21838f307f5825a7b86b678cedc58ab9e50a8988187b4d81e0"},
|
||||
{file = "mock-4.0.2.tar.gz", hash = "sha256:dd33eb70232b6118298d516bbcecd26704689c386594f0f3c4f13867b2c56f72"},
|
||||
]
|
||||
mypy-extensions = [
|
||||
{file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
|
||||
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
|
||||
]
|
||||
netaddr = [
|
||||
{file = "netaddr-0.7.19-py2.py3-none-any.whl", hash = "sha256:56b3558bd71f3f6999e4c52e349f38660e54a7a8a9943335f73dfc96883e08ca"},
|
||||
{file = "netaddr-0.7.19.tar.gz", hash = "sha256:38aeec7cdd035081d3a4c306394b19d677623bf76fa0913f6695127c7753aefd"},
|
||||
]
|
||||
nodeenv = [
|
||||
{file = "nodeenv-1.6.0-py2.py3-none-any.whl", hash = "sha256:621e6b7076565ddcacd2db0294c0381e01fd28945ab36bcf00f41c5daf63bef7"},
|
||||
{file = "nodeenv-1.6.0.tar.gz", hash = "sha256:3ef13ff90291ba2a4a7a4ff9a979b63ffdd00a464dbe04acf0ea6471517a4c2b"},
|
||||
{file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"},
|
||||
{file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"},
|
||||
]
|
||||
packaging = [
|
||||
{file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
|
||||
{file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
|
||||
{file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"},
|
||||
{file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"},
|
||||
]
|
||||
paramiko = [
|
||||
{file = "paramiko-2.11.0-py2.py3-none-any.whl", hash = "sha256:655f25dc8baf763277b933dfcea101d636581df8d6b9774d1fb653426b72c270"},
|
||||
{file = "paramiko-2.11.0.tar.gz", hash = "sha256:003e6bee7c034c21fbb051bf83dc0a9ee4106204dd3c53054c71452cc4ec3938"},
|
||||
{file = "paramiko-3.0.0-py3-none-any.whl", hash = "sha256:6bef55b882c9d130f8015b9a26f4bd93f710e90fe7478b9dcc810304e79b3cd8"},
|
||||
{file = "paramiko-3.0.0.tar.gz", hash = "sha256:fedc9b1dd43bc1d45f67f1ceca10bc336605427a46dcdf8dec6bfea3edf57965"},
|
||||
]
|
||||
pathlib2 = [
|
||||
{file = "pathlib2-2.3.7.post1-py2.py3-none-any.whl", hash = "sha256:5266a0fd000452f1b3467d782f079a4343c63aaa119221fbdc4e39577489ca5b"},
|
||||
{file = "pathlib2-2.3.7.post1.tar.gz", hash = "sha256:9fe0edad898b83c0c3e199c842b27ed216645d2e177757b2dd67384d4113c641"},
|
||||
]
|
||||
pathspec = [
|
||||
{file = "pathspec-0.11.0-py3-none-any.whl", hash = "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229"},
|
||||
{file = "pathspec-0.11.0.tar.gz", hash = "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc"},
|
||||
]
|
||||
Pillow = [
|
||||
{file = "Pillow-9.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:a9c9bc489f8ab30906d7a85afac4b4944a572a7432e00698a7239f44a44e6efb"},
|
||||
{file = "Pillow-9.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:510cef4a3f401c246cfd8227b300828715dd055463cdca6176c2e4036df8bd4f"},
|
||||
|
@ -1077,8 +1089,8 @@ Pillow = [
|
|||
{file = "Pillow-9.2.0.tar.gz", hash = "sha256:75e636fd3e0fb872693f23ccb8a5ff2cd578801251f3a4f6854c6a5d437d3c04"},
|
||||
]
|
||||
platformdirs = [
|
||||
{file = "platformdirs-2.4.0-py3-none-any.whl", hash = "sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d"},
|
||||
{file = "platformdirs-2.4.0.tar.gz", hash = "sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2"},
|
||||
{file = "platformdirs-3.0.0-py3-none-any.whl", hash = "sha256:b1d5eb14f221506f50d6604a561f4c5786d9e80355219694a1b244bcd96f4567"},
|
||||
{file = "platformdirs-3.0.0.tar.gz", hash = "sha256:8a1228abb1ef82d788f74139988b137e78692984ec7b08eaa6c65f1723af28f9"},
|
||||
]
|
||||
pluggy = [
|
||||
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
|
||||
|
@ -1132,10 +1144,6 @@ PyNaCl = [
|
|||
{file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"},
|
||||
{file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"},
|
||||
]
|
||||
pyparsing = [
|
||||
{file = "pyparsing-3.0.7-py3-none-any.whl", hash = "sha256:a6c06a88f252e6c322f65faf8f418b16213b51bdfaece0524c1c1bc30c63c484"},
|
||||
{file = "pyparsing-3.0.7.tar.gz", hash = "sha256:18ee9022775d270c55187733956460083db60b37d0d0fb357445f3094eed3eea"},
|
||||
]
|
||||
pyproj = [
|
||||
{file = "pyproj-3.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:473961faef7a9fd723c5d432f65220ea6ab3854e606bf84b4d409a75a4261c78"},
|
||||
{file = "pyproj-3.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07c9d8d7ec009bbac09e233cfc725601586fe06880e5538a3a44eaf560ba3a62"},
|
||||
|
@ -1191,8 +1199,8 @@ PyYAML = [
|
|||
{file = "PyYAML-5.4.tar.gz", hash = "sha256:3c49e39ac034fd64fd576d63bb4db53cda89b362768a67f07749d55f128ac18a"},
|
||||
]
|
||||
setuptools = [
|
||||
{file = "setuptools-59.6.0-py3-none-any.whl", hash = "sha256:4ce92f1e1f8f01233ee9952c04f6b81d1e02939d6e1b488428154974a4d0783e"},
|
||||
{file = "setuptools-59.6.0.tar.gz", hash = "sha256:22c7348c6d2976a52632c67f7ab0cdf40147db7789f9aed18734643fe9cf3373"},
|
||||
{file = "setuptools-67.4.0-py3-none-any.whl", hash = "sha256:f106dee1b506dee5102cc3f3e9e68137bbad6d47b616be7991714b0c62204251"},
|
||||
{file = "setuptools-67.4.0.tar.gz", hash = "sha256:e5fd0a713141a4a105412233c63dc4e17ba0090c8e8334594ac790ec97792330"},
|
||||
]
|
||||
six = [
|
||||
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
|
||||
|
@ -1202,7 +1210,15 @@ toml = [
|
|||
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
|
||||
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
|
||||
]
|
||||
virtualenv = [
|
||||
{file = "virtualenv-20.16.5-py3-none-any.whl", hash = "sha256:d07dfc5df5e4e0dbc92862350ad87a36ed505b978f6c39609dc489eadd5b0d27"},
|
||||
{file = "virtualenv-20.16.5.tar.gz", hash = "sha256:227ea1b9994fdc5ea31977ba3383ef296d7472ea85be9d6732e42a91c04e80da"},
|
||||
tomli = [
|
||||
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
|
||||
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
|
||||
]
|
||||
typing-extensions = [
|
||||
{file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"},
|
||||
{file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"},
|
||||
]
|
||||
virtualenv = [
|
||||
{file = "virtualenv-20.19.0-py3-none-any.whl", hash = "sha256:54eb59e7352b573aa04d53f80fc9736ed0ad5143af445a1e539aada6eb947dd1"},
|
||||
{file = "virtualenv-20.19.0.tar.gz", hash = "sha256:37a640ba82ed40b226599c522d411e4be5edb339a0c0de030c0dc7b646d61590"},
|
||||
]
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
[tool.poetry]
|
||||
name = "core"
|
||||
version = "9.0.1"
|
||||
version = "9.0.2"
|
||||
description = "CORE Common Open Research Emulator"
|
||||
authors = ["Boeing Research and Technology"]
|
||||
license = "BSD-2-Clause"
|
||||
|
@ -27,7 +27,7 @@ core-cleanup = "core.scripts.cleanup:main"
|
|||
python = "^3.9"
|
||||
fabric = "2.7.1"
|
||||
grpcio = "1.49.1"
|
||||
invoke = "1.4.1"
|
||||
invoke = "1.7.3"
|
||||
lxml = "4.9.1"
|
||||
netaddr = "0.7.19"
|
||||
protobuf = "4.21.9"
|
||||
|
@ -36,17 +36,15 @@ pyyaml = "5.4"
|
|||
Pillow = "9.2.0"
|
||||
Mako = "1.2.3"
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
black = "==19.3b0"
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pytest = "6.2.5"
|
||||
grpcio-tools = "1.49.1"
|
||||
black = "22.12.0"
|
||||
flake8 = "3.8.2"
|
||||
isort = "4.3.21"
|
||||
mock = "4.0.2"
|
||||
pre-commit = "2.1.1"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pytest = "6.2.5"
|
||||
grpcio-tools = "1.49.1"
|
||||
|
||||
[tool.isort]
|
||||
skip_glob = "*_pb2*.py,doc,build"
|
||||
multi_line_output = 3
|
||||
|
|
|
@ -9,7 +9,7 @@ class TestUtils:
|
|||
no_args = "()"
|
||||
one_arg = "('one',)"
|
||||
two_args = "('one', 'two')"
|
||||
unicode_args = u"('one', 'two', 'three')"
|
||||
unicode_args = "('one', 'two', 'three')"
|
||||
|
||||
# when
|
||||
no_args = utils.make_tuple_fromstr(no_args, str)
|
||||
|
|
|
@ -2,40 +2,51 @@
|
|||
FROM centos:7
|
||||
LABEL Description="CORE Docker CentOS Image"
|
||||
|
||||
# define variables
|
||||
ARG PREFIX=/usr
|
||||
ARG BRANCH=master
|
||||
|
||||
# define environment
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV LANG en_US.UTF-8
|
||||
ARG PROTOC_VERSION=3.19.6
|
||||
ARG VENV_PATH=/opt/core/venv
|
||||
ENV PATH="$PATH:${VENV_PATH}/bin"
|
||||
WORKDIR /opt
|
||||
|
||||
# install basic dependencies
|
||||
# install system dependencies
|
||||
RUN yum -y update && \
|
||||
yum install -y git sudo wget tzdata unzip
|
||||
yum install -y \
|
||||
git \
|
||||
sudo \
|
||||
wget \
|
||||
tzdata \
|
||||
unzip \
|
||||
libpcap-devel \
|
||||
libpcre3-devel \
|
||||
libxml2-devel \
|
||||
protobuf-devel \
|
||||
unzip \
|
||||
uuid-devel \
|
||||
tcpdump \
|
||||
make && \
|
||||
yum-builddep -y python3 && \
|
||||
yum autoremove -y
|
||||
|
||||
# install python3.9
|
||||
WORKDIR /opt
|
||||
RUN wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz
|
||||
RUN tar xf Python-3.9.15.tgz
|
||||
RUN yum install -y make && yum-builddep -y python3
|
||||
RUN cd Python-3.9.15 && \
|
||||
./configure --enable-optimizations --with-ensurepip=install && \
|
||||
make -j$(nproc) altinstall
|
||||
RUN python3.9 -m pip install --upgrade pip
|
||||
RUN wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz && \
|
||||
tar xf Python-3.9.15.tgz && \
|
||||
cd Python-3.9.15 && \
|
||||
./configure --enable-optimizations --with-ensurepip=install && \
|
||||
make -j$(nproc) altinstall && \
|
||||
python3.9 -m pip install --upgrade pip && \
|
||||
cd /opt && \
|
||||
rm -rf Python-3.9.15
|
||||
|
||||
# install core
|
||||
WORKDIR /opt
|
||||
RUN git clone https://github.com/coreemu/core
|
||||
WORKDIR /opt/core
|
||||
RUN git checkout ${BRANCH}
|
||||
RUN PYTHON=/usr/local/bin/python3.9 ./setup.sh
|
||||
RUN . /root/.bashrc && PYTHON=/usr/local/bin/python3.9 inv install -v -p ${PREFIX} --no-python
|
||||
ENV PATH "$PATH:/opt/core/venv/bin"
|
||||
RUN git clone https://github.com/coreemu/core && \
|
||||
cd core && \
|
||||
git checkout ${BRANCH} && \
|
||||
PYTHON=/usr/local/bin/python3.9 ./setup.sh && \
|
||||
. /root/.bashrc && PYTHON=/usr/local/bin/python3.9 inv install -v -p ${PREFIX} --no-python
|
||||
|
||||
# install emane
|
||||
RUN yum install -y libpcap-devel libpcre3-devel libxml2-devel protobuf-devel unzip uuid-devel
|
||||
WORKDIR /opt
|
||||
RUN wget -q https://adjacentlink.com/downloads/emane/emane-1.3.3-release-1.el7.x86_64.tar.gz && \
|
||||
tar xf emane-1.3.3-release-1.el7.x86_64.tar.gz && \
|
||||
cd emane-1.3.3-release-1/rpms/el7/x86_64 && \
|
||||
|
@ -45,18 +56,21 @@ RUN wget -q https://adjacentlink.com/downloads/emane/emane-1.3.3-release-1.el7.x
|
|||
rm emane-1.3.3-release-1.el7.x86_64.tar.gz && \
|
||||
rm -rf emane-1.3.3-release-1
|
||||
|
||||
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v3.19.6/protoc-3.19.6-linux-x86_64.zip && \
|
||||
# install emane python bindings
|
||||
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip && \
|
||||
mkdir protoc && \
|
||||
unzip protoc-3.19.6-linux-x86_64.zip -d protoc
|
||||
RUN git clone https://github.com/adjacentlink/emane.git
|
||||
RUN PATH=/opt/protoc/bin:$PATH && \
|
||||
cd emane && \
|
||||
git checkout v1.3.3 && \
|
||||
./autogen.sh && \
|
||||
PYTHON=/opt/core/venv/bin/python ./configure --prefix=/usr && \
|
||||
cd src/python && \
|
||||
make && \
|
||||
/opt/core/venv/bin/python -m pip install .
|
||||
unzip protoc-${PROTOC_VERSION}-linux-x86_64.zip -d protoc && \
|
||||
git clone https://github.com/adjacentlink/emane.git && \
|
||||
cd emane && \
|
||||
git checkout v1.3.3 && \
|
||||
./autogen.sh && \
|
||||
PYTHON=${VENV_PATH}/bin/python ./configure --prefix=/usr && \
|
||||
cd src/python && \
|
||||
PATH=/opt/protoc/bin:$PATH make && \
|
||||
${VENV_PATH}/bin/python -m pip install . && \
|
||||
cd /opt && \
|
||||
rm -rf protoc && \
|
||||
rm -rf emane && \
|
||||
rm -f protoc-${PROTOC_VERSION}-linux-x86_64.zip
|
||||
|
||||
# run daemon
|
||||
CMD ["core-daemon"]
|
||||
WORKDIR /root
|
||||
|
|
|
@ -2,40 +2,64 @@
|
|||
FROM centos:7
|
||||
LABEL Description="CORE CentOS Image"
|
||||
|
||||
ENV LANG en_US.UTF-8
|
||||
ARG PROTOC_VERSION=3.19.6
|
||||
ARG VENV_PATH=/opt/core/venv
|
||||
ENV PATH="$PATH:${VENV_PATH}/bin"
|
||||
WORKDIR /opt
|
||||
|
||||
# install basic dependencies
|
||||
RUN yum update -y && yum install -y wget
|
||||
RUN yum -y update && \
|
||||
yum install -y \
|
||||
git \
|
||||
sudo \
|
||||
wget \
|
||||
tzdata \
|
||||
unzip \
|
||||
libpcap-devel \
|
||||
libpcre3-devel \
|
||||
libxml2-devel \
|
||||
protobuf-devel \
|
||||
unzip \
|
||||
uuid-devel \
|
||||
tcpdump \
|
||||
automake \
|
||||
gawk \
|
||||
libreadline-devel \
|
||||
libtool \
|
||||
pkg-config \
|
||||
make && \
|
||||
yum-builddep -y python3 && \
|
||||
yum autoremove -y
|
||||
|
||||
# install python3.9
|
||||
WORKDIR /opt
|
||||
RUN wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz
|
||||
RUN tar xf Python-3.9.15.tgz
|
||||
RUN yum install -y make && yum-builddep -y python3
|
||||
RUN cd Python-3.9.15 && \
|
||||
./configure --enable-optimizations --with-ensurepip=install && \
|
||||
make -j$(nproc) altinstall
|
||||
RUN python3.9 -m pip install --upgrade pip
|
||||
RUN wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz && \
|
||||
tar xf Python-3.9.15.tgz && \
|
||||
cd Python-3.9.15 && \
|
||||
./configure --enable-optimizations --with-ensurepip=install && \
|
||||
make -j$(nproc) altinstall && \
|
||||
python3.9 -m pip install --upgrade pip && \
|
||||
cd /opt && \
|
||||
rm -rf Python-3.9.15
|
||||
|
||||
# install core
|
||||
WORKDIR /opt/core
|
||||
COPY core_*.rpm .
|
||||
RUN PYTHON=/usr/local/bin/python3.9 yum install -y ./core_*.rpm
|
||||
ENV PATH "$PATH:/opt/core/venv/bin"
|
||||
RUN PYTHON=/usr/local/bin/python3.9 yum install -y ./core_*.rpm && \
|
||||
rm -f core_*.rpm
|
||||
|
||||
# install ospf mdr
|
||||
RUN yum install -y automake gawk git libreadline-devel libtool pkg-config
|
||||
WORKDIR /opt
|
||||
RUN git clone https://github.com/USNavalResearchLaboratory/ospf-mdr.git
|
||||
RUN cd ospf-mdr && \
|
||||
./bootstrap.sh && \
|
||||
./configure --disable-doc --enable-user=root --enable-group=root \
|
||||
--with-cflags=-ggdb --sysconfdir=/usr/local/etc/quagga --enable-vtysh \
|
||||
--localstatedir=/var/run/quagga && \
|
||||
make -j$(nproc) && \
|
||||
make install
|
||||
RUN git clone https://github.com/USNavalResearchLaboratory/ospf-mdr.git && \
|
||||
cd ospf-mdr && \
|
||||
./bootstrap.sh && \
|
||||
./configure --disable-doc --enable-user=root --enable-group=root \
|
||||
--with-cflags=-ggdb --sysconfdir=/usr/local/etc/quagga --enable-vtysh \
|
||||
--localstatedir=/var/run/quagga && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
cd /opt && \
|
||||
rm -rf ospf-mdr
|
||||
|
||||
# install emane
|
||||
RUN yum install -y libpcap-devel libpcre3-devel libxml2-devel protobuf-devel unzip uuid-devel
|
||||
WORKDIR /opt
|
||||
# install emane
|
||||
RUN wget -q https://adjacentlink.com/downloads/emane/emane-1.3.3-release-1.el7.x86_64.tar.gz && \
|
||||
tar xf emane-1.3.3-release-1.el7.x86_64.tar.gz && \
|
||||
cd emane-1.3.3-release-1/rpms/el7/x86_64 && \
|
||||
|
@ -44,15 +68,20 @@ RUN wget -q https://adjacentlink.com/downloads/emane/emane-1.3.3-release-1.el7.x
|
|||
cd ../../../.. && \
|
||||
rm emane-1.3.3-release-1.el7.x86_64.tar.gz && \
|
||||
rm -rf emane-1.3.3-release-1
|
||||
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v3.19.6/protoc-3.19.6-linux-x86_64.zip && \
|
||||
|
||||
# install emane python bindings
|
||||
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip && \
|
||||
mkdir protoc && \
|
||||
unzip protoc-3.19.6-linux-x86_64.zip -d protoc
|
||||
RUN git clone https://github.com/adjacentlink/emane.git
|
||||
RUN PATH=/opt/protoc/bin:$PATH && \
|
||||
cd emane && \
|
||||
git checkout v1.3.3 && \
|
||||
./autogen.sh && \
|
||||
PYTHON=/opt/core/venv/bin/python ./configure --prefix=/usr && \
|
||||
cd src/python && \
|
||||
make && \
|
||||
/opt/core/venv/bin/python -m pip install .
|
||||
unzip protoc-${PROTOC_VERSION}-linux-x86_64.zip -d protoc && \
|
||||
git clone https://github.com/adjacentlink/emane.git && \
|
||||
cd emane && \
|
||||
git checkout v1.3.3 && \
|
||||
./autogen.sh && \
|
||||
PYTHON=${VENV_PATH}/bin/python ./configure --prefix=/usr && \
|
||||
cd src/python && \
|
||||
PATH=/opt/protoc/bin:$PATH make && \
|
||||
${VENV_PATH}/bin/python -m pip install . && \
|
||||
cd /opt && \
|
||||
rm -rf protoc && \
|
||||
rm -rf emane && \
|
||||
rm -f protoc-${PROTOC_VERSION}-linux-x86_64.zip
|
||||
|
|
|
@ -2,43 +2,61 @@
|
|||
FROM ubuntu:22.04
|
||||
LABEL Description="CORE Docker Ubuntu Image"
|
||||
|
||||
# define variables
|
||||
ARG PREFIX=/usr/local
|
||||
ARG BRANCH=master
|
||||
|
||||
# define environment
|
||||
ARG PROTOC_VERSION=3.19.6
|
||||
ARG VENV_PATH=/opt/core/venv
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ENV PATH="$PATH:${VENV_PATH}/bin"
|
||||
WORKDIR /opt
|
||||
|
||||
# install basic dependencies
|
||||
RUN apt-get update && \
|
||||
apt-get install -y git sudo wget tzdata
|
||||
# install system dependencies
|
||||
RUN apt-get update -y && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
git \
|
||||
sudo \
|
||||
wget \
|
||||
tzdata \
|
||||
libpcap-dev \
|
||||
libpcre3-dev \
|
||||
libprotobuf-dev \
|
||||
libxml2-dev \
|
||||
protobuf-compiler \
|
||||
unzip \
|
||||
uuid-dev \
|
||||
iproute2 \
|
||||
iputils-ping \
|
||||
tcpdump && \
|
||||
apt-get autoremove -y
|
||||
|
||||
# install core
|
||||
WORKDIR /opt
|
||||
RUN git clone https://github.com/coreemu/core
|
||||
WORKDIR /opt/core
|
||||
RUN git checkout ${BRANCH}
|
||||
RUN ./setup.sh
|
||||
RUN . /root/.bashrc && inv install -v -p ${PREFIX}
|
||||
ENV PATH "$PATH:/opt/core/venv/bin"
|
||||
RUN git clone https://github.com/coreemu/core && \
|
||||
cd core && \
|
||||
git checkout ${BRANCH} && \
|
||||
./setup.sh && \
|
||||
. /root/.bashrc && \
|
||||
inv install -v -p ${PREFIX} && \
|
||||
cd /opt && \
|
||||
rm -rf ospf-mdr
|
||||
|
||||
# install emane
|
||||
RUN apt-get install -y libpcap-dev libpcre3-dev libprotobuf-dev libxml2-dev protobuf-compiler unzip uuid-dev
|
||||
WORKDIR /opt
|
||||
RUN git clone https://github.com/adjacentlink/emane.git
|
||||
RUN cd emane && \
|
||||
./autogen.sh && \
|
||||
./configure --prefix=/usr && \
|
||||
make -j$(nproc) && \
|
||||
make install
|
||||
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v3.19.6/protoc-3.19.6-linux-x86_64.zip && \
|
||||
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip && \
|
||||
mkdir protoc && \
|
||||
unzip protoc-3.19.6-linux-x86_64.zip -d protoc
|
||||
RUN PATH=/opt/protoc/bin:$PATH && \
|
||||
cd emane/src/python && \
|
||||
make clean && \
|
||||
make
|
||||
RUN /opt/core/venv/bin/python -m pip install emane/src/python
|
||||
unzip protoc-${PROTOC_VERSION}-linux-x86_64.zip -d protoc && \
|
||||
git clone https://github.com/adjacentlink/emane.git && \
|
||||
cd emane && \
|
||||
./autogen.sh && \
|
||||
./configure --prefix=/usr && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
cd src/python && \
|
||||
make clean && \
|
||||
PATH=/opt/protoc/bin:$PATH make && \
|
||||
${VENV_PATH}/bin/python -m pip install . && \
|
||||
cd /opt && \
|
||||
rm -rf protoc && \
|
||||
rm -rf emane && \
|
||||
rm -f protoc-${PROTOC_VERSION}-linux-x86_64.zip
|
||||
|
||||
# run daemon
|
||||
CMD ["core-daemon"]
|
||||
WORKDIR /root
|
||||
|
|
|
@ -2,45 +2,74 @@
|
|||
FROM ubuntu:22.04
|
||||
LABEL Description="CORE Docker Ubuntu Image"
|
||||
|
||||
# define environment
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
ARG PROTOC_VERSION=3.19.6
|
||||
ARG VENV_PATH=/opt/core/venv
|
||||
ENV PATH="$PATH:${VENV_PATH}/bin"
|
||||
WORKDIR /opt
|
||||
|
||||
# install basic dependencies
|
||||
RUN apt-get update && apt-get install -y python3 python3-tk python3-pip python3-venv
|
||||
RUN python3 -m pip install --upgrade pip
|
||||
RUN apt-get update -y && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
python3 \
|
||||
python3-tk \
|
||||
python3-pip \
|
||||
python3-venv \
|
||||
libpcap-dev \
|
||||
libpcre3-dev \
|
||||
libprotobuf-dev \
|
||||
libxml2-dev \
|
||||
protobuf-compiler \
|
||||
unzip \
|
||||
uuid-dev \
|
||||
automake \
|
||||
gawk \
|
||||
git \
|
||||
wget \
|
||||
libreadline-dev \
|
||||
libtool \
|
||||
pkg-config \
|
||||
g++ \
|
||||
make \
|
||||
iputils-ping \
|
||||
tcpdump && \
|
||||
apt-get autoremove -y
|
||||
|
||||
# install core
|
||||
WORKDIR /opt/core
|
||||
COPY core_*.deb .
|
||||
RUN apt-get install -y ./core_*.deb
|
||||
ENV PATH "$PATH:/opt/core/venv/bin"
|
||||
RUN apt-get install -y ./core_*.deb && \
|
||||
rm -f core_*.deb
|
||||
|
||||
# install ospf mdr
|
||||
RUN apt-get install -y automake gawk git libreadline-dev libtool pkg-config
|
||||
WORKDIR /opt
|
||||
RUN git clone https://github.com/USNavalResearchLaboratory/ospf-mdr.git
|
||||
RUN cd ospf-mdr && \
|
||||
./bootstrap.sh && \
|
||||
./configure --disable-doc --enable-user=root --enable-group=root \
|
||||
--with-cflags=-ggdb --sysconfdir=/usr/local/etc/quagga --enable-vtysh \
|
||||
--localstatedir=/var/run/quagga && \
|
||||
make -j$(nproc) && \
|
||||
make install
|
||||
RUN git clone https://github.com/USNavalResearchLaboratory/ospf-mdr.git && \
|
||||
cd ospf-mdr && \
|
||||
./bootstrap.sh && \
|
||||
./configure --disable-doc --enable-user=root --enable-group=root \
|
||||
--with-cflags=-ggdb --sysconfdir=/usr/local/etc/quagga --enable-vtysh \
|
||||
--localstatedir=/var/run/quagga && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
cd /opt && \
|
||||
rm -rf ospf-mdr
|
||||
|
||||
# install emane
|
||||
RUN apt-get install -y libpcap-dev libpcre3-dev libprotobuf-dev libxml2-dev protobuf-compiler unzip uuid-dev
|
||||
WORKDIR /opt
|
||||
RUN git clone https://github.com/adjacentlink/emane.git
|
||||
RUN cd emane && \
|
||||
./autogen.sh && \
|
||||
./configure --prefix=/usr && \
|
||||
make -j$(nproc) && \
|
||||
make install
|
||||
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v3.19.6/protoc-3.19.6-linux-x86_64.zip && \
|
||||
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip && \
|
||||
mkdir protoc && \
|
||||
unzip protoc-3.19.6-linux-x86_64.zip -d protoc
|
||||
RUN PATH=/opt/protoc/bin:$PATH && \
|
||||
cd emane/src/python && \
|
||||
make clean && \
|
||||
make
|
||||
RUN /opt/core/venv/bin/python -m pip install emane/src/python
|
||||
unzip protoc-${PROTOC_VERSION}-linux-x86_64.zip -d protoc && \
|
||||
git clone https://github.com/adjacentlink/emane.git && \
|
||||
cd emane && \
|
||||
./autogen.sh && \
|
||||
./configure --prefix=/usr && \
|
||||
make -j$(nproc) && \
|
||||
make install && \
|
||||
cd src/python && \
|
||||
make clean && \
|
||||
PATH=/opt/protoc/bin:$PATH make && \
|
||||
${VENV_PATH}/bin/python -m pip install . && \
|
||||
cd /opt && \
|
||||
rm -rf protoc && \
|
||||
rm -rf emane && \
|
||||
rm -f protoc-${PROTOC_VERSION}-linux-x86_64.zip
|
||||
|
||||
WORKDIR /root
|
||||
|
|
|
@ -54,9 +54,6 @@ conveniently run tests, etc.
|
|||
# run core-daemon
|
||||
sudo core-daemon
|
||||
|
||||
# run python gui
|
||||
core-pygui
|
||||
|
||||
# run gui
|
||||
core-gui
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ You can find more detailed tutorials and examples at the
|
|||
|
||||
Every topic below assumes CORE, EMANE, and OSPF MDR have been installed.
|
||||
|
||||
> **WARNING:** demo files will be found within the new `core-pygui`
|
||||
> **WARNING:** demo files will be found within the new `core-gui`
|
||||
|
||||
| Topic | Model | Description |
|
||||
|--------------------------------------|---------|-----------------------------------------------------------|
|
||||
|
|
|
@ -391,7 +391,7 @@ file_configs[file_name] = "echo hello world"
|
|||
## File Examples
|
||||
|
||||
File versions of the network examples can be found
|
||||
[here](https://github.com/coreemu/core/tree/master/daemon/examples/grpc).
|
||||
[here](https://github.com/coreemu/core/tree/master/package/examples/grpc).
|
||||
These examples will create a session using the gRPC API when the core-daemon is running.
|
||||
|
||||
You can then switch to and attach to these sessions using either of the CORE GUIs.
|
||||
|
|
|
@ -62,7 +62,7 @@ The GUI will create a directory in your home directory on first run called
|
|||
## Modes of Operation
|
||||
|
||||
The CORE GUI has two primary modes of operation, **Edit** and **Execute**
|
||||
modes. Running the GUI, by typing **core-pygui** with no options, starts in
|
||||
modes. Running the GUI, by typing **core-gui** with no options, starts in
|
||||
Edit mode. Nodes are drawn on a blank canvas using the toolbar on the left
|
||||
and configured from right-click menus or by double-clicking them. The GUI
|
||||
does not need to be run as root.
|
||||
|
|
|
@ -265,15 +265,59 @@ information can be found [here](https://github.com/adjacentlink/emane/wiki/Insta
|
|||
There is an invoke task to help install the EMANE bindings into the CORE virtual
|
||||
environment, when needed. An example for running the task is below and the version
|
||||
provided should match the version of the packages installed.
|
||||
|
||||
You will also need to make sure, you are providing the correct python binary where CORE
|
||||
is being used.
|
||||
|
||||
Also, these EMANE bindings need to be built using `protoc` 3.19+. So make sure
|
||||
that is available and being picked up on PATH properly.
|
||||
|
||||
Examples for building and installing EMANE python bindings for use in CORE:
|
||||
```shell
|
||||
# if your system does not have protoc 3.19+
|
||||
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.19.6/protoc-3.19.6-linux-x86_64.zip
|
||||
mkdir protoc
|
||||
unzip protoc-3.19.6-linux-x86_64.zip -d protoc
|
||||
git clone https://github.com/adjacentlink/emane.git
|
||||
cd emane
|
||||
git checkout v1.3.3
|
||||
./autogen.sh
|
||||
PYTHON=/opt/core/venv/bin/python ./configure --prefix=/usr
|
||||
cd src/python
|
||||
PATH=/opt/protoc/bin:$PATH make
|
||||
/opt/core/venv/bin/python -m pip install .
|
||||
|
||||
# when your system has protoc 3.19+
|
||||
cd <CORE_REPO>
|
||||
# example version tag v1.3.3
|
||||
inv install-emane -e <emane version tag>
|
||||
# overriding python used to leverage the default virtualenv install
|
||||
PYTHON=/opt/core/venv/bin/python inv install-emane -e <version tag>
|
||||
# local install that uses whatever python3 refers to
|
||||
inv install-emane -e <version tag>
|
||||
```
|
||||
|
||||
## Post Install
|
||||
After installation completes you are now ready to run CORE.
|
||||
|
||||
### Resolving Docker Issues
|
||||
If you have Docker installed, by default it will change the iptables
|
||||
forwarding chain to drop packets, which will cause issues for CORE traffic.
|
||||
|
||||
You can temporarily resolve the issue with the following command:
|
||||
```shell
|
||||
sudo iptables --policy FORWARD ACCEPT
|
||||
```
|
||||
Alternatively, you can configure Docker to avoid doing this, but will likely
|
||||
break normal Docker networking usage. Using the setting below will require
|
||||
a restart.
|
||||
|
||||
Place the file contents below in **/etc/docker/docker.json**
|
||||
```json
|
||||
{
|
||||
"iptables": false
|
||||
}
|
||||
```
|
||||
|
||||
### Resolving Path Issues
|
||||
One problem running CORE you may run into, using the virtual environment or locally
|
||||
can be issues related to your path.
|
||||
|
|
|
@ -414,7 +414,7 @@ session.services.set_service_file(
|
|||
## File Examples
|
||||
|
||||
File versions of the network examples can be found
|
||||
[here](https://github.com/coreemu/core/tree/master/daemon/examples/python).
|
||||
[here](https://github.com/coreemu/core/tree/master/package/examples/python).
|
||||
|
||||
## Executing Scripts from GUI
|
||||
|
||||
|
@ -435,6 +435,6 @@ The example below has a fallback to a new CoreEmu object, in the case you would
|
|||
like to run the script standalone, outside of the core-daemon.
|
||||
|
||||
```python
|
||||
coreemu = globals().get("coreemu", CoreEmu())
|
||||
coreemu = globals().get("coreemu") or CoreEmu()
|
||||
session = coreemu.create_session()
|
||||
```
|
||||
|
|
|
@ -5,9 +5,20 @@
|
|||
|
||||
## Overview
|
||||
|
||||
The [BIRD Internet Routing Daemon](https://bird.network.cz/) is a routing daemon; i.e., a software responsible for managing kernel packet forwarding tables. It aims to develop a dynamic IP routing daemon with full support of all modern routing protocols, easy to use configuration interface and powerful route filtering language, primarily targeted on (but not limited to) Linux and other UNIX-like systems and distributed under the GNU General Public License. BIRD has a free implementation of several well known and common routing and router-supplemental protocols, namely RIP, RIPng, OSPFv2, OSPFv3, BGP, BFD, and NDP/RA. BIRD supports IPv4 and IPv6 address families, Linux kernel and several BSD variants (tested on FreeBSD, NetBSD and OpenBSD). BIRD consists of bird daemon and birdc interactive CLI client used for supervision.
|
||||
The [BIRD Internet Routing Daemon](https://bird.network.cz/) is a routing
|
||||
daemon; i.e., a software responsible for managing kernel packet forwarding
|
||||
tables. It aims to develop a dynamic IP routing daemon with full support of
|
||||
all modern routing protocols, easy to use configuration interface and powerful
|
||||
route filtering language, primarily targeted on (but not limited to) Linux and
|
||||
other UNIX-like systems and distributed under the GNU General Public License.
|
||||
BIRD has a free implementation of several well known and common routing and
|
||||
router-supplemental protocols, namely RIP, RIPng, OSPFv2, OSPFv3, BGP, BFD,
|
||||
and NDP/RA. BIRD supports IPv4 and IPv6 address families, Linux kernel and
|
||||
several BSD variants (tested on FreeBSD, NetBSD and OpenBSD). BIRD consists
|
||||
of bird daemon and birdc interactive CLI client used for supervision.
|
||||
|
||||
In order to be able to use the BIRD Internet Routing Protocol, you must first install the project on your machine.
|
||||
In order to be able to use the BIRD Internet Routing Protocol, you must first
|
||||
install the project on your machine.
|
||||
|
||||
## BIRD Package Install
|
||||
|
||||
|
@ -17,7 +28,8 @@ sudo apt-get install bird
|
|||
|
||||
## BIRD Source Code Install
|
||||
|
||||
You can download BIRD source code from it's [official repository.](https://gitlab.labs.nic.cz/labs/bird/)
|
||||
You can download BIRD source code from its
|
||||
[official repository.](https://gitlab.labs.nic.cz/labs/bird/)
|
||||
```shell
|
||||
./configure
|
||||
make
|
||||
|
@ -25,6 +37,10 @@ su
|
|||
make install
|
||||
vi /etc/bird/bird.conf
|
||||
```
|
||||
The installation will place the bird directory inside */etc* where you will also find its config file.
|
||||
The installation will place the bird directory inside */etc* where you will
|
||||
also find its config file.
|
||||
|
||||
In order to be able to do use the Bird Internet Routing Protocol, you must modify *bird.conf* due to the fact that the given configuration file is not configured beyond allowing the bird daemon to start, which means that nothing else will happen if you run it. Keeran Marquis has a very detailed example on [Configuring BGP using Bird on Ubuntu](https://blog.marquis.co/configuring-bgp-using-bird-on-ubuntu-14-04lts/) which can be used as a building block to implement your custom routing daemon.
|
||||
In order to be able to do use the Bird Internet Routing Protocol, you must
|
||||
modify *bird.conf* due to the fact that the given configuration file is not
|
||||
configured beyond allowing the bird daemon to start, which means that nothing
|
||||
else will happen if you run it.
|
||||
|
|
|
@ -71,7 +71,7 @@ sudo cp pki/dh.pem $KEYDIR/dh1024.pem
|
|||
|
||||
Add VPNServer service to nodes desired for running an OpenVPN server.
|
||||
|
||||
Modify [sampleVPNServer](../../daemon/examples/services/sampleVPNServer) for the following
|
||||
Modify [sampleVPNServer](https://github.com/coreemu/core/blob/master/package/examples/services/sampleVPNServer) for the following
|
||||
* Edit keydir key/cert directory
|
||||
* Edit keyname to use generated server name above
|
||||
* Edit vpnserver to match an address that the server node will have
|
||||
|
@ -80,7 +80,7 @@ Modify [sampleVPNServer](../../daemon/examples/services/sampleVPNServer) for the
|
|||
|
||||
Add VPNClient service to nodes desired for acting as an OpenVPN client.
|
||||
|
||||
Modify [sampleVPNClient](../../daemon/examples/services/sampleVPNClient) for the following
|
||||
Modify [sampleVPNClient](https://github.com/coreemu/core/blob/master/package/examples/services/sampleVPNClient) for the following
|
||||
* Edit keydir key/cert directory
|
||||
* Edit keyname to use generated client name above
|
||||
* Edit vpnserver to match the address a server was configured to use
|
||||
|
|
3
tasks.py
3
tasks.py
|
@ -216,7 +216,7 @@ def install_poetry(c: Context, dev: bool, local: bool, hide: bool) -> None:
|
|||
c.run("poetry build -f wheel", hide=hide)
|
||||
c.run(f"sudo {python_bin} -m pip install dist/*")
|
||||
else:
|
||||
args = "" if dev else "--no-dev"
|
||||
args = "" if dev else "--only main"
|
||||
with c.cd(DAEMON_DIR):
|
||||
c.run("sudo mkdir -p /opt/core", hide=hide)
|
||||
c.run(f"sudo {python_bin} -m venv {VENV_PATH}")
|
||||
|
@ -310,7 +310,6 @@ def install_core_files(c, local=False, verbose=False, prefix=DEFAULT_PREFIX):
|
|||
|
||||
@task(
|
||||
help={
|
||||
"dev": "install development mode",
|
||||
"verbose": "enable verbose",
|
||||
"install-type": "used to force an install type, "
|
||||
"can be one of the following (redhat, debian)",
|
||||
|
|
Loading…
Reference in a new issue