diff --git a/examples/babel_test.mmss b/examples/babel_test.mmss index 7002fb1..fad6f0a 100644 --- a/examples/babel_test.mmss +++ b/examples/babel_test.mmss @@ -1,63 +1,28 @@ protocol "babel" load "./libmmss_proto_babel.so" default; -/* topology: - - C - D - / \ -A - B G - H - \ / - E - F - -*/ - - -network "net_A_B"; -network "net_B_C"; -network "net_B_E"; -network "net_C_D" { etx min 1.0 max 5.0 sine period 20 m; } -network "net_D_G"; -network "net_E_F" { etx min 1.0 max 5.0 sine period 20 m phase 10 m; } -network "net_F_G"; -network "net_G_H"; - - -#network "net1" { -# etx min 1.0 max 5.0 sine period 15 m phase 5 m; -#} - -#network "net2" { -# etx min 1.0 max 5.0 sine period 15 m phase 10 m; -#} - -node "A" { - interface "mmss_A_B" network "net_A_B" address 00:00:00:00:00:00:01:02; +network "net0" { + etx min 1.0 max 5.0 sine period 15 m; } -node "B" { - interface "mmss_B_A" network "net_A_B" address 00:00:00:00:00:00:02:01; - interface "mmss_B_C" network "net_B_C" address 00:00:00:00:00:00:02:03; - interface "mmss_B_E" network "net_B_E" address 00:00:00:00:00:00:02:05; + +network "net1" { + etx min 1.0 max 5.0 sine period 15 m phase 5 m; } -node "C" { - interface "mmss_C_B" network "net_B_C" address 00:00:00:00:00:00:03:02; - interface "mmss_C_D" network "net_C_D" address 00:00:00:00:00:00:03:04; + +network "net2" { + etx min 1.0 max 5.0 sine period 15 m phase 10 m; } -node "D" { - interface "mmss_D_C" network "net_C_D" address 00:00:00:00:00:00:04:03; - interface "mmss_D_G" network "net_D_G" address 00:00:00:00:00:00:04:07; + +node "node1" { + interface "mmss1.0" network "net0" address 00:00:00:00:00:00:00:10; + interface "mmss1.1" network "net1" address 00:00:00:00:00:00:00:11; } -node "E" { - interface "mmss_E_B" network "net_B_E" address 00:00:00:00:00:00:05:02; - interface "mmss_E_F" network "net_E_F" address 00:00:00:00:00:00:05:06; + +node "node2" { + interface "mmss2.1" network "net1" address 00:00:00:00:00:00:00:21; + interface "mmss2.2" network "net2" address 00:00:00:00:00:00:00:22; } -node "F" { - interface "mmss_F_E" network "net_E_F" address 00:00:00:00:00:00:06:05; - interface "mmss_F_G" network "net_F_G" address 00:00:00:00:00:00:06:07; -} -node "G" { - interface "mmss_G_D" network "net_D_G" address 00:00:00:00:00:00:07:04; - interface "mmss_G_F" network "net_F_G" address 00:00:00:00:00:00:07:06; - interface "mmss_G_H" network "net_G_H" address 00:00:00:00:00:00:07:08; -} -node "H" { - interface "mmss_H_G" network "net_G_H" address 00:00:00:00:00:00:08:07; + +node "node3" { + interface "mmss3.2" network "net2" address 00:00:00:00:00:00:00:32; + interface "mmss3.0" network "net0" address 00:00:00:00:00:00:00:30; } diff --git a/include/gmrf/gmrf.h b/include/gmrf/gmrf.h index 7fc1535..54e9e90 100644 --- a/include/gmrf/gmrf.h +++ b/include/gmrf/gmrf.h @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/include/mmss/protocol.h b/include/mmss/protocol.h index b0c6286..277e325 100644 --- a/include/mmss/protocol.h +++ b/include/mmss/protocol.h @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss-protocol/mmss_protocol.c b/mmss-protocol/mmss_protocol.c index 3ee8a2f..16f10e4 100644 --- a/mmss-protocol/mmss_protocol.c +++ b/mmss-protocol/mmss_protocol.c @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/CMakeLists.txt b/mmss/CMakeLists.txt index 9f586c0..694a49d 100644 --- a/mmss/CMakeLists.txt +++ b/mmss/CMakeLists.txt @@ -11,10 +11,7 @@ add_executable(mmss iface.cpp lex.cpp mmss.cpp - monitor_file.cpp - monitor_log.cpp network.cpp - node.cpp protocol.cpp ${BISON_mmss_config_parse_OUTPUTS} ) diff --git a/mmss/config.cpp b/mmss/config.cpp index befbecf..394ca5b 100644 --- a/mmss/config.cpp +++ b/mmss/config.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/config.hpp b/mmss/config.hpp index 9c6ca28..dc21bff 100644 --- a/mmss/config.hpp +++ b/mmss/config.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/config.y b/mmss/config.y index 90b2a9e..4b4647a 100644 --- a/mmss/config.y +++ b/mmss/config.y @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without @@ -97,7 +97,7 @@ config: config statement | ; -statement: TOK_NETWORK network network_tail +statement: TOK_NETWORK network '{' network_config '}' | TOK_PROTOCOL protocol ';' | TOK_NODE node '{' node_config '}' ; @@ -108,10 +108,6 @@ network: TOK_STRING { } ; -network_tail: - '{' network_config '}' - | ';' - network_config: network_config network_statement | ; diff --git a/mmss/context.cpp b/mmss/context.cpp index 656299a..b4d001d 100644 --- a/mmss/context.cpp +++ b/mmss/context.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without @@ -29,9 +29,6 @@ #include "network.hpp" #include "node.hpp" -#include "monitor_file.hpp" -#include "monitor_log.hpp" - #include #include #include @@ -68,30 +65,34 @@ static inline const char* get_log_prefix(int log_level) { } -void context_t::logf(int priority, const char *format, ...) { +void context_t::vlogf_orig(const node_t *orig, int priority, const char *format, std::va_list ap) { char buf[1024]; size_t pos; - pos = snprintf_safe(buf, sizeof(buf), "[% 6u.%03u] %s", now()/1000, now()%1000, get_log_prefix(priority)); + if (orig) + pos = snprintf_safe(buf, sizeof(buf), "[% 6u.%03u] %s: %s", now()/1000, now()%1000, orig->get_name().c_str(), get_log_prefix(priority)); + else + pos = snprintf_safe(buf, sizeof(buf), "[% 6u.%03u] %s", now()/1000, now()%1000, get_log_prefix(priority)); - std::va_list ap; - va_start(ap, format); std::vsnprintf(buf+pos, sizeof(buf)-pos, format, ap); - va_end(ap); std::fprintf(stderr, "%s\n", buf); } +void context_t::logf(int priority, const char *format, ...) { + std::va_list ap; + va_start(ap, format); + vlogf_orig(nullptr, priority, format, ap); + va_end(ap); +} + void context_t::run(int argc, char *argv[]) { - if (argc != 3) { - std::fprintf(stderr, "usage: %s config logfile\n", argv[0]); + if (argc != 2) { + std::fprintf(stderr, "usage: %s config\n", argv[0]); std::exit(1); } - attach_monitor(std::make_shared()); - attach_monitor(std::make_shared(argv[2])); - std::shared_ptr conf = config_t::read(this, argv[1]); if (!conf) diff --git a/mmss/context.hpp b/mmss/context.hpp index 90ffea1..8282c77 100644 --- a/mmss/context.hpp +++ b/mmss/context.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without @@ -27,7 +27,6 @@ #pragma once #include "event.hpp" -#include "monitor.hpp" #include "queue.hpp" #include @@ -40,7 +39,6 @@ namespace MMSS { class context_t : public now_t, public nocopy_t { private: timeout_queue_t event_queue; - std::list> monitors; public: context_t() : event_queue(this) {} @@ -49,50 +47,7 @@ public: event_queue.put(std::move(data), timeout); } - void attach_monitor(std::shared_ptr &&monitor) { - monitors.emplace_back(std::move(monitor)); - } - - void node_log(node_t *node, int priority, const std::string &message) { - for (auto monitor : monitors) - monitor->handle_log(node, priority, message); - } - - void node_init(node_t *node, const uint8_t *node_id, size_t len) { - for (auto monitor : monitors) - monitor->handle_init(node, node_id, len); - } - - void network(network_t *net) { - for (auto monitor : monitors) - monitor->handle_network(net); - } - - void node_iface(node_t *node, iface_t *iface) { - for (auto monitor : monitors) - monitor->handle_iface(node, iface); - } - - void node_neigh(node_t *node, iface_t *iface, const gmrf_addr_t *addr, float rxcost, float txcost) { - for (auto monitor : monitors) - monitor->handle_neigh(node, iface, addr, rxcost, txcost); - } - - void node_neigh_lost(node_t *node, iface_t *iface, const gmrf_addr_t *addr) { - for (auto monitor : monitors) - monitor->handle_neigh_lost(node, iface, addr); - } - - void node_route(node_t *node, const uint8_t *node_id, size_t len, iface_t *iface, const gmrf_addr_t *addr, int metric) { - for (auto monitor : monitors) - monitor->handle_route(node, node_id, len, iface, addr, metric); - } - - void node_route_lost(node_t *node, const uint8_t *node_id, size_t len) { - for (auto monitor : monitors) - monitor->handle_route_lost(node, node_id, len); - } - + void vlogf_orig(const node_t *orig, int priority, const char *format, std::va_list ap); void logf(int priority, const char *format, ...); void run(int argc, char *argv[]); diff --git a/mmss/event.cpp b/mmss/event.cpp index a4b783e..94aefac 100644 --- a/mmss/event.cpp +++ b/mmss/event.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/event.hpp b/mmss/event.hpp index 62e26f6..c346781 100644 --- a/mmss/event.hpp +++ b/mmss/event.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/gmrf.cpp b/mmss/gmrf.cpp index e8bbffb..c7b2fbc 100644 --- a/mmss/gmrf.cpp +++ b/mmss/gmrf.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without @@ -29,8 +29,6 @@ #include "iface.hpp" #include "node.hpp" -#include - using namespace MMSS; @@ -84,39 +82,23 @@ void gmrf_logf(gmrf_t *gmrf, int priority, const char *format, ...) { va_list ap; va_start(ap, format); - - char *message; - if (vasprintf(&message, format, ap) >= 0) { - node->get_context()->node_log(node, priority, std::string(message)); - std::free(message); - } - + node->get_context()->vlogf_orig(node, priority, format, ap); va_end(ap); } -void gmrf_debug_init(gmrf_t *gmrf, const uint8_t *node_id, size_t len) { - node_t *node = static_cast(gmrf); - node->get_context()->node_init(node, node_id, len); +void gmrf_debug_init(gmrf_t *gmrf UNUSED, const uint8_t *node_id UNUSED, size_t len UNUSED) { } -void gmrf_debug_neigh(gmrf_t *gmrf, gmrf_iface_t *iface, const gmrf_addr_t *addr, float rxcost, float txcost) { - node_t *node = static_cast(gmrf); - node->get_context()->node_neigh(node, static_cast(iface), addr, rxcost, txcost); +void gmrf_debug_neigh(gmrf_t *gmrf UNUSED, gmrf_iface_t *iface UNUSED, const gmrf_addr_t *addr UNUSED, float rxcost UNUSED, float txcost UNUSED) { } -void gmrf_debug_neigh_lost(gmrf_t *gmrf, gmrf_iface_t *iface, const gmrf_addr_t *addr) { - node_t *node = static_cast(gmrf); - node->get_context()->node_neigh_lost(node, static_cast(iface), addr); +void gmrf_debug_neigh_lost(gmrf_t *gmrf UNUSED, gmrf_iface_t *iface UNUSED, const gmrf_addr_t *addr UNUSED) { } -void gmrf_debug_route(gmrf_t *gmrf, const uint8_t *node_id, size_t len, gmrf_iface_t *iface, const gmrf_addr_t *addr, int metric) { - node_t *node = static_cast(gmrf); - node->get_context()->node_route(node, node_id, len, static_cast(iface), addr, metric); +void gmrf_debug_route(gmrf_t *gmrf UNUSED, const uint8_t *node_id UNUSED, size_t len UNUSED, gmrf_iface_t *iface UNUSED, const gmrf_addr_t *addr UNUSED, int metric UNUSED) { } -void gmrf_debug_route_lost(gmrf_t *gmrf, const uint8_t *node_id, size_t len) { - node_t *node = static_cast(gmrf); - node->get_context()->node_route_lost(node, node_id, len); +void gmrf_debug_route_lost(gmrf_t *gmrf UNUSED, const uint8_t *node_id UNUSED, size_t len UNUSED) { } } diff --git a/mmss/iface.cpp b/mmss/iface.cpp index 502312c..77b5872 100644 --- a/mmss/iface.cpp +++ b/mmss/iface.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/iface.hpp b/mmss/iface.hpp index 040e271..3b8cc0b 100644 --- a/mmss/iface.hpp +++ b/mmss/iface.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/lex.cpp b/mmss/lex.cpp index 61eed16..3eb6e24 100644 --- a/mmss/lex.cpp +++ b/mmss/lex.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2012-2014, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without @@ -123,7 +123,7 @@ int lex_t::io_error(YYSTYPE *yylval) { } int lex_t::syntax_error(YYSTYPE *yylval) { - if (std::ferror(file)) + if (ferror(file)) return io_error(yylval); yylval->error = "syntax error"; @@ -143,7 +143,7 @@ int lex_t::consume_comment(YYSTYPE *yylval, YYLTYPE *yylloc) { prev = current(); } - if (std::ferror(file)) + if (ferror(file)) return io_error(yylval); yylval->error = "unterminated block comment"; @@ -170,7 +170,7 @@ int lex_t::parse_string(YYSTYPE *yylval, YYLTYPE *yylloc) { while (true) { if (!next(yylloc, true)) { - std::free(buf); + free(buf); return unterminated_string(yylval); } @@ -250,7 +250,7 @@ int lex_t::parse_float(YYSTYPE *yylval, YYLTYPE *yylloc) { yylval->fnum = std::strtof(token, &endptr); bool ok = !*endptr; - std::free(token); + free(token); if (!ok) return syntax_error(yylval); diff --git a/mmss/lex.hpp b/mmss/lex.hpp index 8289748..19bbd4d 100644 --- a/mmss/lex.hpp +++ b/mmss/lex.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2012-2014, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/mmss.cpp b/mmss/mmss.cpp index 14a6781..846d79b 100644 --- a/mmss/mmss.cpp +++ b/mmss/mmss.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/monitor.hpp b/mmss/monitor.hpp deleted file mode 100644 index bfe43bb..0000000 --- a/mmss/monitor.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - Copyright (c) 2013-2014, Matthias Schiffer - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#pragma once - -#include "types.hpp" - -#include - - -namespace MMSS { - -class monitor_t : public nocopy_t { -public: - virtual ~monitor_t() {} - - virtual void handle_log(node_t *node, int priority, const std::string &message) = 0; - - virtual void handle_init(node_t *node, const uint8_t *node_id, size_t len) = 0; - - virtual void handle_network(network_t *net) = 0; - virtual void handle_iface(node_t *node, iface_t *iface) = 0; - - virtual void handle_neigh(node_t *node, iface_t *iface, const gmrf_addr_t *addr, float rxcost, float txcost) = 0; - virtual void handle_neigh_lost(node_t *node, iface_t *iface, const gmrf_addr_t *addr) = 0; - - virtual void handle_route(node_t *node, const uint8_t *node_id, size_t len, iface_t *iface, const gmrf_addr_t *addr, int metric) = 0; - virtual void handle_route_lost(node_t *node, const uint8_t *node_id, size_t len) = 0; -}; - -} diff --git a/mmss/monitor_file.cpp b/mmss/monitor_file.cpp deleted file mode 100644 index 0de8a92..0000000 --- a/mmss/monitor_file.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/* - Copyright (c) 2013-2014, Matthias Schiffer - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "monitor_file.hpp" -#include "context.hpp" -#include "node.hpp" - - -namespace MMSS { - -monitor_file_t::monitor_file_t(const std::string &filename) { - file = std::fopen(filename.c_str(), "w"); - - if (!file) { - std::fprintf(stderr, "monitor_file: unable to open output file\n"); - std::exit(1); - } -} - -monitor_file_t::~monitor_file_t() { - std::fclose(file); -} - -void monitor_file_t::handle_log(node_t *node, int priority, const std::string &message) { - std::fprintf(file, "%llu LOG %s %i %s\n", (unsigned long long)node->get_context()->now(), node->get_name().c_str(), priority, message.c_str()); -} - -void monitor_file_t::handle_init(node_t *node, const uint8_t *node_id, size_t len) { - std::fprintf(file, "%llu INIT %s ", (unsigned long long)node->get_context()->now(), node->get_name().c_str()); - for (size_t i = 0; i < len; i++) - std::fprintf(file, "%02x", node_id[i]); - std::fprintf(file, "\n"); -} - -void monitor_file_t::handle_network(network_t *net) { - std::fprintf(file, "%llu NETWORK %s\n", (unsigned long long)net->get_context()->now(), net->get_name().c_str()); -} - -void monitor_file_t::handle_iface(node_t *node, iface_t *iface) { - std::fprintf(file, "%llu IFACE %s %s %s ", (unsigned long long)node->get_context()->now(), node->get_name().c_str(), iface->get_name().c_str(), iface->get_network()->get_name().c_str()); - - const gmrf_addr_t *addr = iface->get_address(); - for (size_t i = 0; i < GMRF_ADDR_LEN; i++) - std::fprintf(file, "%02x", addr->d[i]); - - std::fprintf(file, "\n"); -} - -void monitor_file_t::handle_neigh(node_t *node, iface_t *iface, const gmrf_addr_t *addr, float rxcost, float txcost) { - std::fprintf(file, "%llu NEIGH %s %s ", (unsigned long long)node->get_context()->now(), node->get_name().c_str(), iface->get_name().c_str()); - for (size_t i = 0; i < GMRF_ADDR_LEN; i++) - std::fprintf(file, "%02x", addr->d[i]); - std::fprintf(file, " %f %f\n", rxcost, txcost); -} - -void monitor_file_t::handle_neigh_lost(node_t *node, iface_t *iface, const gmrf_addr_t *addr) { - std::fprintf(file, "%llu NEIGH %s %s ", (unsigned long long)node->get_context()->now(), node->get_name().c_str(), iface->get_name().c_str()); - for (size_t i = 0; i < GMRF_ADDR_LEN; i++) - std::fprintf(file, "%02x", addr->d[i]); - std::fprintf(file, " LOST\n"); -} - -void monitor_file_t::handle_route(node_t *node, const uint8_t *node_id, size_t len, iface_t *iface, const gmrf_addr_t *addr, int metric) { - std::fprintf(file, "%llu ROUTE %s ", (unsigned long long)node->get_context()->now(), node->get_name().c_str()); - for (size_t i = 0; i < len; i++) - std::fprintf(file, "%02x", node_id[i]); - std::fprintf(file, " %s ", iface->get_name().c_str()); - for (size_t i = 0; i < GMRF_ADDR_LEN; i++) - std::fprintf(file, "%02x", addr->d[i]); - std::fprintf(file, " %i\n", metric); -} - -void monitor_file_t::handle_route_lost(node_t *node, const uint8_t *node_id, size_t len) { - std::fprintf(file, "%llu ROUTE %s ", (unsigned long long)node->get_context()->now(), node->get_name().c_str()); - for (size_t i = 0; i < len; i++) - std::fprintf(file, "%02x", node_id[i]); - std::fprintf(file, " LOST\n"); -} - -} diff --git a/mmss/monitor_file.hpp b/mmss/monitor_file.hpp deleted file mode 100644 index 37c018c..0000000 --- a/mmss/monitor_file.hpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - Copyright (c) 2013-2014, Matthias Schiffer - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#pragma once - -#include "monitor.hpp" - -#include - - -namespace MMSS { - -class monitor_file_t : public monitor_t { -private: - std::FILE *file; - -public: - monitor_file_t(const std::string &filename); - virtual ~monitor_file_t(); - - virtual void handle_log(node_t *node, int priority, const std::string &message); - - virtual void handle_init(node_t *node, const uint8_t *node_id, size_t len); - - virtual void handle_network(network_t *net); - virtual void handle_iface(node_t *node, iface_t *iface); - - virtual void handle_neigh(node_t *node, iface_t *iface, const gmrf_addr_t *addr, float rxcost, float txcost); - virtual void handle_neigh_lost(node_t *node, iface_t *iface, const gmrf_addr_t *addr); - - virtual void handle_route(node_t *node, const uint8_t *node_id, size_t len, iface_t *iface, const gmrf_addr_t *addr, int metric); - virtual void handle_route_lost(node_t *node, const uint8_t *node_id, size_t len); -}; - -} diff --git a/mmss/monitor_log.cpp b/mmss/monitor_log.cpp deleted file mode 100644 index 9a21e03..0000000 --- a/mmss/monitor_log.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - Copyright (c) 2013-2014, Matthias Schiffer - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "monitor_log.hpp" -#include "context.hpp" -#include "node.hpp" - - -namespace MMSS { - -void monitor_log_t::handle_log(node_t *node, int priority, const std::string &message) { - if (priority < LOG_DEBUG) - node->get_context()->logf(priority, "%s: %s", node->get_name().c_str(), message.c_str()); -} - -void monitor_log_t::handle_init(node_t *node UNUSED, const uint8_t *node_id UNUSED, size_t len UNUSED) { -} - -void monitor_log_t::handle_network(network_t *net UNUSED) { -} - -void monitor_log_t::handle_iface(node_t *node UNUSED, iface_t *iface UNUSED) { -} - -void monitor_log_t::handle_neigh(node_t *node UNUSED, iface_t *iface UNUSED, const gmrf_addr_t *addr UNUSED, float rxcost UNUSED, float txcost UNUSED) { -} - -void monitor_log_t::handle_neigh_lost(node_t *node UNUSED, iface_t *iface UNUSED, const gmrf_addr_t *addr UNUSED) { -} - -void monitor_log_t::handle_route(node_t *node UNUSED, const uint8_t *node_id UNUSED, size_t len UNUSED, iface_t *iface UNUSED, const gmrf_addr_t *addr UNUSED, int metric UNUSED) { -} - -void monitor_log_t::handle_route_lost(node_t *node UNUSED, const uint8_t *node_id UNUSED, size_t len UNUSED) { -} - -} diff --git a/mmss/monitor_log.hpp b/mmss/monitor_log.hpp deleted file mode 100644 index 262dd2d..0000000 --- a/mmss/monitor_log.hpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - Copyright (c) 2013-2014, Matthias Schiffer - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#pragma once - -#include "monitor.hpp" - -namespace MMSS { - -class monitor_log_t : public monitor_t { -public: - virtual void handle_log(node_t *node, int priority, const std::string &message); - - virtual void handle_init(node_t *node, const uint8_t *node_id, size_t len); - - virtual void handle_network(network_t *net); - virtual void handle_iface(node_t *node, iface_t *iface); - - virtual void handle_neigh(node_t *node, iface_t *iface, const gmrf_addr_t *addr, float rxcost, float txcost); - virtual void handle_neigh_lost(node_t *node, iface_t *iface, const gmrf_addr_t *addr); - - virtual void handle_route(node_t *node, const uint8_t *node_id, size_t len, iface_t *iface, const gmrf_addr_t *addr, int metric); - virtual void handle_route_lost(node_t *node, const uint8_t *node_id, size_t len); -}; - -} diff --git a/mmss/network.cpp b/mmss/network.cpp index 6e47240..9eb3b3a 100644 --- a/mmss/network.cpp +++ b/mmss/network.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without @@ -34,11 +34,6 @@ namespace MMSS { -network_t::network_t(context_t *mmss0, const std::string &name0, unsigned rand_seed0) - : mmss(mmss0), name(name0), mtu(1500), rand_seed(rand_seed0), etx_min(1), etx_max(1) { - mmss->network(this); -} - float network_t::get_etx() const { if (etx_min == etx_max) return etx_min; diff --git a/mmss/network.hpp b/mmss/network.hpp index 54e3f77..8ae72f3 100644 --- a/mmss/network.hpp +++ b/mmss/network.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without @@ -57,7 +57,8 @@ private: void enqueue(const void *data, size_t len, const iface_t *src_iface, const std::shared_ptr &dest_iface); public: - network_t(context_t *mmss0, const std::string &name0, unsigned rand_seed0); + network_t(context_t *mmss0, const std::string &name0, unsigned rand_seed0) + : mmss(mmss0), name(name0), mtu(1500), rand_seed(rand_seed0), etx_min(1), etx_max(1) {} void set_packet_loss(float etx) { etx_min = etx_max = etx; diff --git a/mmss/node.cpp b/mmss/node.cpp deleted file mode 100644 index 41461f5..0000000 --- a/mmss/node.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* - Copyright (c) 2013-2014, Matthias Schiffer - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -#include "node.hpp" -#include "context.hpp" - - -namespace MMSS { - -gmrf_iface_state_t * node_t::add_iface(const std::shared_ptr &iface) { - interfaces.insert(iface); - mmss->node_iface(this, iface.get()); - return proto->add_iface(gmrf_ctx, iface.get()); -} - -} diff --git a/mmss/node.hpp b/mmss/node.hpp index adebcf2..feb20c2 100644 --- a/mmss/node.hpp +++ b/mmss/node.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without @@ -59,7 +59,10 @@ public: return node; } - gmrf_iface_state_t* add_iface(const std::shared_ptr &iface); + gmrf_iface_state_t* add_iface(const std::shared_ptr &iface) { + interfaces.insert(iface); + return proto->add_iface(gmrf_ctx, iface.get()); + } context_t* get_context() const { return mmss; diff --git a/mmss/now.hpp b/mmss/now.hpp index 8da3fa7..9b14127 100644 --- a/mmss/now.hpp +++ b/mmss/now.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/protocol.cpp b/mmss/protocol.cpp index 8134eb8..8dcc49d 100644 --- a/mmss/protocol.cpp +++ b/mmss/protocol.cpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/protocol.hpp b/mmss/protocol.hpp index 341a028..0bdc60b 100644 --- a/mmss/protocol.hpp +++ b/mmss/protocol.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/queue.hpp b/mmss/queue.hpp index a0dd0e5..16051ee 100644 --- a/mmss/queue.hpp +++ b/mmss/queue.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/mmss/types.hpp b/mmss/types.hpp index b649849..bf95437 100644 --- a/mmss/types.hpp +++ b/mmss/types.hpp @@ -1,5 +1,5 @@ /* - Copyright (c) 2013-2014, Matthias Schiffer + Copyright (c) 2013, Matthias Schiffer All rights reserved. Redistribution and use in source and binary forms, with or without @@ -56,7 +56,6 @@ private: class context_t; class config_t; class iface_t; -class monitor_t; class network_t; class node_t; class now_t;