Commit graph

342 commits

Author SHA1 Message Date
Blake J. Harnden
8f45e5c4da core test cleanup, conslidating network creation for link modification testing 2017-04-27 14:49:51 -07:00
Blake J. Harnden
14cb7dc251 caught up with latest gitlab commits, added a new tests directory leveraging pytest based tests for testing core functionality 2017-04-27 13:34:23 -07:00
Blake J. Harnden
2fc6345138 catching up with commits: daemon: Add an instantiation-complete CORE API event type 2017-04-25 11:38:53 -07:00
Blake J. Harnden
00f4ebf5a9 initial commit after bringing over cleaned up code and testing some examples 2017-04-25 08:45:34 -07:00
Jeff Ahrenholz
0b0557e008 fix /var/run/quagga permissions for Ubuntu 16.04 2017-03-31 10:59:58 -07:00
lbaumgaertner
e665a122b6 fix to add correct broadcast address for ipv4 interfaces with netns backend 2017-03-28 12:00:24 +02:00
Tom Goff
67117a3af3 daemon: Improve importing custom services.
This should help avoid python module name conflicts.
2017-02-24 01:02:08 +00:00
adamson
56896bddd1 fixed issue with indexing EMANE RJ45 objects 2017-02-23 18:40:54 -05:00
Gabriel Somlo
b1ea0574e5 daemon: start Quagga with default user/group names
Allow native distribution packages to run with their default user
and group names by no longer forcing "-u root -g root" on any of
the Quagga daemons' command lines.

This should continue to allow hand-compiled and/or "side-loaded"
Quagga software to run as root, if configured to do so at build
time.

Signed-off-by: Gabriel Somlo <glsomlo@cert.org>
2017-02-02 11:25:53 -05:00
Gabriel Somlo
33906aae9f daemon: remove Quagga 'vtysh' service
Since all Quagga daemons are configured from a consolidated
location (the 'zebra' service), there is nothing left to do
for a dedicated service such as 'vtysh'. This patch removes
the service, along with all references to it from the rest
of the source tree (sample *.imn files, examples, etc.)

Signed-off-by: Gabriel Somlo <glsomlo@cert.org>
2017-02-01 09:55:58 -05:00
Gabriel Somlo
6609d2c394 daemon: streamline Quagga startup
Currently, all Quagga daemons are started concurrently by their
respective CORE services, using "quaggaboot.sh" generated by the
'zebra' service. However, all routing services depend on 'zebra'
already running, and 'vtysh' depends on ALL other Quagga services
before it can push configuration from the common "Quagga.conf" to
all running daemons (see "waitforvtyfiles()" in "quaggaboot.sh").

The spinwait+timeout based implementation of "waitforvtyfiles()"
may, depending on load, give up too early and fail to configure
all Quagga daemons.

This patch streamlines the way Quagga daemons are started, by
launching them all from the 'zebra' service. The correct sequence
is to first launch the 'zebra' daemon itself, then proceed with
all routing daemons, and finish with a call to "vtysh -b" which
configures all running daemons.

The list of all applicable daemons to launch is obtained using
'grep' from Quagga.conf, in the same way "waitforvtyfiles()" used
to discover which *.vty files to look for in /var/run/quagga/.

The startup command for all services other than 'zebra' becomes
empty, and "quaggaboot.sh" issues a warning on attempts to have
it launch any other daemon.

Signed-off-by: Gabriel Somlo <glsomlo@cert.org>
2017-01-12 16:40:45 -05:00
Tom Goff
cec880e6e2 daemon: Add the EMANE TDMA model to the list of an available models. 2016-12-22 10:53:23 -05:00
Rod A Santiago
6e610f4309 ensured the shutdown event doesn't get sent until all node delete replies have been sent 2016-12-14 17:24:21 -08:00
Tom Goff
7bbc2aef0e daemon: Remove the SIGPIPE signal handler.
Python installs a default signal handler for SIGPIPE that raises an
exception.  Let core-daemon handle the exception instead of exiting.
2016-10-20 18:10:41 -04:00
Rod A Santiago
3f6040a0f3 Merge branch 'master' of https://github.com/coreemu/core 2016-10-19 16:21:10 -07:00
Rod A Santiago
d17ed889d2 remerged with git pending fix to distributed configuration problem 2016-10-19 16:21:06 -07:00
Tom Goff
c01d1226c3 daemon: Fix determining when to handle API messages locally.
This fixes distributed wired scenarios.

The problem was introduced by commit 42b1771.
2016-10-19 18:49:34 -04:00
Rod A Santiago
5d0aa4ac1a Reverted changes due to merge with github commits made on Oct 12. An issue with distributed deployment seem to have been introduced in those commits. 2016-10-19 13:09:21 -07:00
Rod A Santiago
35356dc9c8 Merge branch 'master' of https://github.com/coreemu/core 2016-10-18 16:40:47 -07:00
Tom Goff
5ec7e39a28 daemon: Sort EMANE servers so NEM ids are deterministic. 2016-10-12 17:37:40 +00:00
Tom Goff
b1beff1eba daemon: Wait longer for EMANE network interfaces to exist.
When EMANE is still running.
2016-10-12 17:37:27 +00:00
Tom Goff
6d1b5d28a1 daemon: Remove tracking remote node boot status.
The instantiation-complete status of remote servers should indicate
when all nodes are running.
2016-10-12 17:37:13 +00:00
Tom Goff
d33147154c daemon: Add an instantiation-complete CORE API event type.
Have CORE servers send an instantiation-complete event after a session
has completed instantiating.  Only enter the runtime state after
instantiation-complete events have been received form all servers.
2016-10-12 17:36:59 +00:00
Tom Goff
42b1771dcb daemon: Create a CoreServer class to represent CORE servers.
Includes related changes and refactoring.
2016-10-12 17:36:42 +00:00
Tom Goff
8479ccd2c5 daemon: Use a set to store the broker node map. 2016-10-12 17:36:30 +00:00
Tom Goff
6494605298 daemon: Use a set to store broker physical nodes. 2016-10-12 17:36:16 +00:00
Tom Goff
4662164ece daemon: Use a set to store broker networks. 2016-10-12 17:35:18 +00:00
Tom Goff
31a9f6fb34 daemon: Use a set to store broker handlers. 2016-10-12 15:55:30 +00:00
Rod A Santiago
b12c795aa8 removed modules that are currently in the API_2.0 repo 2016-09-23 09:04:01 -07:00
Tom Goff
e1aec0ea1d daemon/examples: Update the distributed netns example.
The number of nodes used can depend on a command-line argument, but
node one should always exist.
2016-09-16 10:48:22 -04:00
Rod A Santiago
2d745c339f Moved classes CoreRequestHandler, CoreDatagramRequestHandler, CoreServer, CoreUdpServer to a separate core.coreserver module. This will allow future definition of auxiliary request handlers for providing alternative interfaces with CORE. 2016-09-14 18:06:19 -07:00
Rod A Santiago
9913168896 Fixed sendnodeemuid to use the handler's sendall() method instead of BaseRequestHandler's request.sendall(). Added a method to retrieve a configuration item by key. 2016-09-14 18:05:52 -07:00
Rod A Santiago
520dce894a New file from NRL 2016-09-14 17:15:43 -07:00
Rod A Santiago
b239b906bd Cleaned up for checking in to NRL repo 2016-09-14 17:15:16 -07:00
Rod A Santiago
ae4a4b903e Merged with new version from NRL 2016-09-14 17:13:46 -07:00
Rod A Santiago
928617e613 Merged new versions from NRL 2016-09-14 17:12:25 -07:00
Rod A Santiago
65803f9334 Last cleanup prior to merging with changes in proteanforge 2016-09-13 17:46:39 -07:00
Rod A Santiago
7991cba55e removed import of apibridge 2016-09-08 17:53:20 -07:00
Rod A Santiago
ebd931d2ec added methods for adding node/device specific fileds 2016-09-08 17:52:08 -07:00
Rod A Santiago
fa1b79fe68 minor update to start message 2016-09-06 15:48:41 -07:00
Rod A Santiago
3ea417b855 moved servers and request handlers to separate module. added support for auxiliary server with configurable request handlers 2016-09-06 15:46:54 -07:00
Tom Goff
c0a9c6c9af daemon: Remove unused variable. 2016-09-06 10:38:38 -04:00
adamson
f8da9334d8 fix to EMANE TDMA XML generation 2016-09-06 10:16:31 -04:00
Tom Goff
e5e75756ea daemon: Remove session-related changes introduced by 68532cb. 2016-09-05 17:12:16 -04:00
Tom Goff
1c91f41742 daemon: Remove unused traceback code introduced by 68532cb. 2016-09-05 17:09:49 -04:00
adamson
d270da8f41 added daemon/core/emane/tdma.py module to support EMANE 1.0.1 TDMA model 2016-09-05 17:06:31 -04:00
Tom Goff
f03311b50a daemon: Add support for EMANE 1.0.1. 2016-09-05 17:02:59 -04:00
Rod A Santiago
5934b23b18 enabled trace messages only when debugging 2016-08-22 16:45:50 -07:00
Rod A Santiago
695da8a153 Fixed assignment of the session clientId and port_num fields. 2016-08-22 16:10:48 -07:00
Rod A Santiago
1dfacdbaea handled config messages from the daemon;handled link messages from the daemon; handled modified session message from an api2 client to connect with an experiment that has already been added by other clients 2016-08-22 15:33:50 -07:00
Rod A Santiago
a6e7c0da7e added methods getDeviceInterfaceByIdx and getNodeInterfaceByIdx 2016-08-22 15:23:18 -07:00
Rod A Santiago
e45a83143f Added method getsession to CoreApi2Server 2016-08-22 15:22:25 -07:00
Rod A Santiago
96af8a439c started adding server code for joining experiments 2016-08-19 16:58:03 -07:00
Rod A Santiago
1a249fe1ec some refactoring. added mappings of legacy node types to Node and Device types and emulation types 2016-08-19 15:29:07 -07:00
Rod A Santiago
71c2dcf0af returned a list of experiments on session establishment including legacy core sessions 2016-08-12 16:54:24 -07:00
Rod A Santiago
ad0b45c8f3 added method getitem() to the SessionMetaData class 2016-08-12 16:53:01 -07:00
Rod A Santiago
36c82d1960 moved apibridge to misc 2016-08-12 11:58:30 -07:00
Rod A Santiago
3359aeb323 moved from api to misc directory 2016-08-12 10:35:12 -07:00
Rod A Santiago
ea3becb38b convenience module for the python module generated from the core.proto IDL file. 2016-08-12 10:34:32 -07:00
Rod A Santiago
3cf9c80d15 moved as much api2 handling as possible into apibridge.py 2016-08-11 16:51:46 -07:00
Rod A Santiago
cf2912e8a4 API2 add/modify experiment support. 2016-08-10 17:27:15 -07:00
Rod A Santiago
3ba2b685b6 Initial commit of data store for API2 experiments 2016-08-10 17:24:56 -07:00
Rod A Santiago
2f7c337b02 translated events, node updates to api2 2016-08-02 14:33:24 -07:00
Rod A Santiago
4c4a44777b remove trace logs 2016-08-02 14:32:05 -07:00
Rod A Santiago
8a9d4e7216 renamed coreapi2 to apibridge 2016-08-02 14:31:24 -07:00
Rod A Santiago
3cb41c0e03 renamed coreapi2 to apibridge 2016-08-02 14:31:03 -07:00
Rod A Santiago
dfd643789c removed because core_pb2.py is a generated file. added an install option instead from the API_2.0 root. 2016-08-02 10:33:23 -07:00
Rod A Santiago
cb73e6225d updated Node message class with new fields 2016-08-01 17:25:07 -07:00
Rod A Santiago
4acb9f5359 Handled transitions to runtime state 2016-08-01 17:19:23 -07:00
Rod A Santiago
2bf3594cd1 sent node emulation updates via handler sendall method, instead of directly via handler.request.sendall. 2016-08-01 16:07:40 -07:00
Rod A Santiago
39fc11c8fd synced with API2 repo 2016-07-29 15:53:19 -07:00
Rod A Santiago
35141b130c separated legacy API wrapper. added ipv4 addresses to interfaces 2016-07-29 15:52:56 -07:00
Rod A Santiago
864b869526 separated legacy API wrapper. added ipv4 addresses to interfaces 2016-07-29 15:52:32 -07:00
Rod A Santiago
05683bb232 separated legacy API wrapper. added ipv4 addresses to interfaces 2016-07-29 15:52:00 -07:00
Rod A Santiago
2a8eb823ca basic api2 experiment is loadable 2016-07-28 16:47:14 -07:00
Rod A Santiago
36390cbba6 removed stack trace 2016-07-28 16:45:52 -07:00
Rod A Santiago
6538490c41 progressing .... 2016-07-27 17:37:55 -07:00
Rod A Santiago
821d78dfb5 Fixed typo in dispatchReplies argument. 2016-07-27 10:02:35 -07:00
Rod A Santiago
d710eb3734 initial coreapi2 specification and legacy to api2 translation 2016-07-26 17:55:29 -07:00
Rod A Santiago
e9c0730c12 added api2 handler and server 2016-07-26 17:54:11 -07:00
Rod A Santiago
e4cd3b064f added api2port 2016-07-26 17:53:37 -07:00
Rod A Santiago
88e285f016 daemon: added option API TLVs so that per-interface parameters are kept for EMANE models when a single node has multiple interfaces of the same EMANE model type but different model parameters 2016-04-20 08:45:16 -07:00
Rod A Santiago
68532cb818 daemon: added option API TLVs so that per-interface parameters are kept for EMANE models when a single node has multiple interfaces of the same EMANE model type but different model parameters 2016-04-20 08:43:39 -07:00
Rod A Santiago
46cd65c821 daemon: added support to set <address> 'iface' attribute with interface name in XML written by CORE so different interface addresses can be discriminated on <testHost> instances 2016-04-20 08:41:59 -07:00
Rod A Santiago
139b495982 examples: added option API TLVs so that per-interface parameters are kept for EMANE models when a single node has multiple interfaces of the same EMANE model type but different model parameters 2016-04-20 08:38:10 -07:00
Rod A Santiago
b91b5125f2 daemon: changes to support optional retainment of per-interface parameters for EMANE models when multiple EMANE models of the same type are used as interfaces for a node 2016-04-20 08:36:58 -07:00
Rod A Santiago
c66914ec21 daemon: added option API TLVs so that per-interface parameters are kept for EMANE models when a single node has multiple interfaces of the same EMANE model type but different model parameters 2016-04-20 08:33:58 -07:00
Rod A Santiago
5895ba2d20 fixed issue with wlan objects from previous sessions lingering in EbtablesQueue and causing the daemon to hang. 2016-04-19 14:10:03 -07:00
Tom Goff
76bf200f41 daemon: Explicitly close EMANE event service files. 2016-03-04 16:57:56 -05:00
Tom Goff
d681534b17 daemon: Minor code reorganization. 2016-03-04 16:57:46 -05:00
Tom Goff
6f77086540 daemon: Remove __del__() methods.
This simplifies Python garbage collection.
2016-03-04 16:57:29 -05:00
Tom Goff
ef85995cc6 daemon: Explicitly close vnode clients at shutdown. 2016-03-04 16:57:17 -05:00
Tom Goff
5a58978f79 netns: Add a close() method to VCmd objects. 2016-03-04 16:56:56 -05:00
Tom Goff
b1de00be1a netns: Remove the explicit client connected flag.
Use the client variable directly.
2016-03-04 16:56:29 -05:00
Tom Goff
73b14f17b8 netns: Delete the associated client if an I/O error occurs. 2016-03-04 16:56:09 -05:00
Tom Goff
d40dae4e1c netns: Change the argument passed to client delete requests.
Directly pass a pointer to the containing VCmd struct.
2016-03-04 16:55:42 -05:00
Tom Goff
b86881aba9 netns: Add a kill() method to VCmdWait objects. 2016-02-23 17:33:05 -05:00
Tom Goff
d7bce43e42 netns: Have VCmdWait objects hold a reference to the corresponding Vcmd.
Also have VCmdWait methods check if the object is associated with an
actual command.
2016-02-23 17:33:05 -05:00
Tom Goff
d42d54a477 netns: Trivial code reorganization. 2016-02-19 17:57:21 -05:00
Tom Goff
d4d2f36481 daemon: Fix typo. 2016-02-18 17:23:10 -05:00