From 806629e64e8231d0c57a80d3b6584094cd6c89bd Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 21 Jun 2017 11:50:19 +0200 Subject: lib, ipcpd, irmd: Add full-fledged QoS This adds more Quality of Service support to Ouroboros. One part is the network specific characteristics such as bandwidth, delay, ... The other part is end-to-end QoS like reliability, window based flow control, ... --- src/ipcpd/normal/dt_pci.h | 2 +- src/ipcpd/normal/fa.h | 2 +- src/ipcpd/normal/neighbors.c | 2 +- src/ipcpd/normal/pol/complete.c | 8 ++------ src/ipcpd/shim-data.h | 2 +- src/ipcpd/shim-eth-llc/main.c | 2 +- src/ipcpd/shim-udp/main.c | 14 +++++--------- 7 files changed, 12 insertions(+), 20 deletions(-) (limited to 'src/ipcpd') diff --git a/src/ipcpd/normal/dt_pci.h b/src/ipcpd/normal/dt_pci.h index ddcf9066..2291329a 100644 --- a/src/ipcpd/normal/dt_pci.h +++ b/src/ipcpd/normal/dt_pci.h @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include diff --git a/src/ipcpd/normal/fa.h b/src/ipcpd/normal/fa.h index a77dc723..929c0623 100644 --- a/src/ipcpd/normal/fa.h +++ b/src/ipcpd/normal/fa.h @@ -23,7 +23,7 @@ #ifndef OUROBOROS_IPCPD_NORMAL_FA_H #define OUROBOROS_IPCPD_NORMAL_FA_H -#include +#include #include int fa_init(void); diff --git a/src/ipcpd/normal/neighbors.c b/src/ipcpd/normal/neighbors.c index 0dbc22f2..0fb721c2 100644 --- a/src/ipcpd/normal/neighbors.c +++ b/src/ipcpd/normal/neighbors.c @@ -23,7 +23,7 @@ #define OUROBOROS_PREFIX "neighbors" #include -#include +#include #include #include #include diff --git a/src/ipcpd/normal/pol/complete.c b/src/ipcpd/normal/pol/complete.c index 732556c6..74848a1f 100644 --- a/src/ipcpd/normal/pol/complete.c +++ b/src/ipcpd/normal/pol/complete.c @@ -23,7 +23,7 @@ #define OUROBOROS_PREFIX "complete" #include -#include +#include #include #include #include @@ -92,11 +92,7 @@ static void * allocator(void * o) complete = (struct complete *) o; - qs.delay = 0; - qs.jitter = 0; - - /* FIXME: implement QoS specs */ - qs.cube = QOS_CUBE_BE; + qosspec_init(&qs); while (true) { len = rib_children(MEMBERS_PATH, &children); diff --git a/src/ipcpd/shim-data.h b/src/ipcpd/shim-data.h index d53373df..1951fa9d 100644 --- a/src/ipcpd/shim-data.h +++ b/src/ipcpd/shim-data.h @@ -23,7 +23,7 @@ #ifndef IPCPD_IPCP_DATA_H #define IPCPD_IPCP_DATA_H -#include +#include #include #include diff --git a/src/ipcpd/shim-eth-llc/main.c b/src/ipcpd/shim-eth-llc/main.c index 971eeb49..99d46a1d 100644 --- a/src/ipcpd/shim-eth-llc/main.c +++ b/src/ipcpd/shim-eth-llc/main.c @@ -979,7 +979,7 @@ static int eth_llc_ipcp_flow_alloc(int fd, assert(hash); - if (cube != QOS_CUBE_BE && cube != QOS_CUBE_FRC) { + if (cube != QOS_CUBE_BE) { log_dbg("Unsupported QoS requested."); return -1; } diff --git a/src/ipcpd/shim-udp/main.c b/src/ipcpd/shim-udp/main.c index 892334b2..b793c414 100644 --- a/src/ipcpd/shim-udp/main.c +++ b/src/ipcpd/shim-udp/main.c @@ -196,10 +196,10 @@ static int send_shim_udp_msg(shim_udp_msg_t * msg, return 0; } -static int ipcp_udp_port_alloc(uint32_t dst_ip_addr, - uint16_t src_udp_port, +static int ipcp_udp_port_alloc(uint32_t dst_ip_addr, + uint16_t src_udp_port, const uint8_t * dst, - qoscube_t cube) + qoscube_t cube) { shim_udp_msg_t msg = SHIM_UDP_MSG__INIT; @@ -899,7 +899,7 @@ static int ipcp_udp_flow_alloc(int fd, assert(dst); - if (cube != QOS_CUBE_BE && cube != QOS_CUBE_FRC) { + if (cube != QOS_CUBE_BE) { log_dbg("Unsupported QoS requested."); return -1; } @@ -923,7 +923,6 @@ static int ipcp_udp_flow_alloc(int fd, return -1; } - if (!shim_data_dir_has(ipcpi.shim_data, dst)) { log_dbg("Could not resolve destination."); close(skfd); @@ -952,10 +951,7 @@ static int ipcp_udp_flow_alloc(int fd, pthread_rwlock_unlock(&udp_data.flows_lock); - if (ipcp_udp_port_alloc(ip_addr, - f_saddr.sin_port, - dst, - cube) < 0) { + if (ipcp_udp_port_alloc(ip_addr, f_saddr.sin_port, dst, cube) < 0) { pthread_rwlock_wrlock(&udp_data.flows_lock); udp_data.fd_to_uf[fd].udp = -1; -- cgit v1.2.3