From ff847419e54f283872d883a85ecea082e2c98790 Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Mon, 8 Oct 2018 21:41:03 +0200 Subject: lib: Define QoS specs inside header file The QoS specs were defined in the source file instead of in the header file, which resulted in uninitialized structs being used, which gave rise to weird behavior in the library. Signed-off-by: Sander Vrijders Signed-off-by: Dimitri Staessens --- CMakeLists.txt | 2 +- include/ouroboros/qos.h | 65 ++++++++++++++++++++++++++++++++---- src/lib/CMakeLists.txt | 1 - src/lib/qos.c | 88 ------------------------------------------------- 4 files changed, 60 insertions(+), 96 deletions(-) delete mode 100644 src/lib/qos.c diff --git a/CMakeLists.txt b/CMakeLists.txt index bda0aff9..a42813cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ include(GNUInstallDirs) set(PACKAGE_VERSION_MAJOR 0) set(PACKAGE_VERSION_MINOR 12) -set(PACKAGE_VERSION_PATCH 0) +set(PACKAGE_VERSION_PATCH 1) set(PACKAGE_NAME "${CMAKE_PROJECT_NAME}") set(PACKAGE_DESCRIPTION "The Ouroboros prototype") diff --git a/include/ouroboros/qos.h b/include/ouroboros/qos.h index 2b93f1d0..3475b086 100644 --- a/include/ouroboros/qos.h +++ b/include/ouroboros/qos.h @@ -36,11 +36,64 @@ typedef struct qos_spec { uint32_t max_gap; /* In ms */ } qosspec_t; -qosspec_t qos_raw; -qosspec_t qos_raw_no_errors; -qosspec_t qos_best_effort; -qosspec_t qos_video; -qosspec_t qos_voice; -qosspec_t qos_data; +static const qosspec_t qos_raw = { + .delay = UINT32_MAX, + .bandwidth = 0, + .availability = 0, + .loss = 1, + .ber = 1, + .in_order = 0, + .max_gap = UINT32_MAX +}; + +static const qosspec_t qos_raw_no_errors = { + .delay = UINT32_MAX, + .bandwidth = 0, + .availability = 0, + .loss = 1, + .ber = 0, + .in_order = 0, + .max_gap = UINT32_MAX +}; + +static const qosspec_t qos_best_effort = { + .delay = UINT32_MAX, + .bandwidth = 0, + .availability = 0, + .loss = 1, + .ber = 0, + .in_order = 1, + .max_gap = UINT32_MAX +}; + +static const qosspec_t qos_video = { + .delay = 100, + .bandwidth = UINT64_MAX, + .availability = 3, + .loss = 1, + .ber = 0, + .in_order = 1, + .max_gap = 100 +}; + +static const qosspec_t qos_voice = { + .delay = 50, + .bandwidth = 100000, + .availability = 5, + .loss = 1, + .ber = 0, + .in_order = 1, + .max_gap = 50 +}; + +static const qosspec_t qos_data = { + .delay = 1000, + .bandwidth = 0, + .availability = 0, + .loss = 0, + .ber = 0, + .in_order = 1, + .max_gap = 2000 +}; #endif /* OUROBOROS_QOS_H */ diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index f66e7ab9..414a7203 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -201,7 +201,6 @@ set(SOURCE_FILES_COMMON logs.c md5.c notifier.c - qos.c qoscube.c random.c rib.c diff --git a/src/lib/qos.c b/src/lib/qos.c deleted file mode 100644 index 8607031e..00000000 --- a/src/lib/qos.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Ouroboros - Copyright (C) 2016 - 2018 - * - * Quality of Service cube specifications - * - * Dimitri Staessens - * Sander Vrijders - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * version 2.1 as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., http://www.fsf.org/about/contact/. - */ - -#include -#include - -#include -#include -#include - -qosspec_t qos_raw = { - .delay = UINT32_MAX, - .bandwidth = 0, - .availability = 0, - .loss = 1, - .ber = 1, - .in_order = 0, - .max_gap = UINT32_MAX -}; - -qosspec_t qos_raw_no_errors = { - .delay = UINT32_MAX, - .bandwidth = 0, - .availability = 0, - .loss = 1, - .ber = 0, - .in_order = 0, - .max_gap = UINT32_MAX -}; - -qosspec_t qos_best_effort = { - .delay = UINT32_MAX, - .bandwidth = 0, - .availability = 0, - .loss = 1, - .ber = 0, - .in_order = 1, - .max_gap = UINT32_MAX -}; - -qosspec_t qos_video = { - .delay = 100, - .bandwidth = UINT64_MAX, - .availability = 3, - .loss = 1, - .ber = 0, - .in_order = 1, - .max_gap = 100 -}; - -qosspec_t qos_voice = { - .delay = 50, - .bandwidth = 100000, - .availability = 5, - .loss = 1, - .ber = 0, - .in_order = 1, - .max_gap = 50 -}; - -qosspec_t qos_data = { - .delay = 1000, - .bandwidth = 0, - .availability = 0, - .loss = 0, - .ber = 0, - .in_order = 1, - .max_gap = 2000 -}; -- cgit v1.2.3