From f8c14e0246a6c9cb5e8ff47869b5968abb63f010 Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Mon, 12 Dec 2016 13:24:17 +0100 Subject: src, tools: Set/get timeout and get qos for flows Receiver timeouts can now be set on a flow using the flow_set_timeout function. Specifying NULL disables the timeout. The flow_get_timeout function gets the value for the timeout. This commit also deprecates fcntl in favor of flow_get_flags and flow_set_flags functions. struct qos_spec is typedef'd as a qosspec_t. The tools and cdap.c are updated to use the new API. Fixes a bug in operf client where the client's writer thread wouldn't cancel on SIGINT. --- include/ouroboros/dev.h | 10 +++++----- include/ouroboros/fcntl.h | 19 ++++++++++++++----- include/ouroboros/ipcp-dev.h | 7 +++---- include/ouroboros/qos.h | 4 ++-- 4 files changed, 24 insertions(+), 16 deletions(-) (limited to 'include') diff --git a/include/ouroboros/dev.h b/include/ouroboros/dev.h index f2e42d03..47665ca4 100644 --- a/include/ouroboros/dev.h +++ b/include/ouroboros/dev.h @@ -35,8 +35,8 @@ int ap_init(char * ap_name); void ap_fini(void); /* Returns flow descriptor (> 0), client AE name and qos spec. */ -int flow_accept(char ** ae_name, - struct qos_spec * qos); +int flow_accept(char ** ae_name, + qosspec_t * qos); int flow_alloc_resp(int fd, int response); @@ -45,9 +45,9 @@ int flow_alloc_resp(int fd, * Returns flow descriptor (> 0). * On returning, qos will contain the actual supplied QoS. */ -int flow_alloc(char * dst_name, - char * src_ae_name, - struct qos_spec * qos); +int flow_alloc(char * dst_name, + char * src_ae_name, + qosspec_t * qos); int flow_alloc_res(int fd); diff --git a/include/ouroboros/fcntl.h b/include/ouroboros/fcntl.h index ccb45996..3ad3ccac 100644 --- a/include/ouroboros/fcntl.h +++ b/include/ouroboros/fcntl.h @@ -23,6 +23,8 @@ #ifndef OUROBOROS_FCNTL_H #define OUROBOROS_FCNTL_H +#include + /* same values as fcntl.h */ #define FLOW_O_RDONLY 00000000 #define FLOW_O_WRONLY 00000001 @@ -34,11 +36,18 @@ #define FLOW_O_INVALID (FLOW_O_WRONLY | FLOW_O_RDWR) -#define FLOW_F_GETFL 00000001 -#define FLOW_F_SETFL 00000002 +int flow_set_flags(int fd, + int flags); + +int flow_get_flags(int fd); + +int flow_set_timeout(int fd, + struct timespec * to); + +int flow_get_timeout(int fd, + struct timespec * to); -int flow_cntl(int fd, - int cmd, - int oflags); +int flow_get_qosspec(int fd, + qosspec_t * spec); #endif /* OUROBOROS_FCNTL_H */ diff --git a/include/ouroboros/ipcp-dev.h b/include/ouroboros/ipcp-dev.h index ee7c83ad..19a66762 100644 --- a/include/ouroboros/ipcp-dev.h +++ b/include/ouroboros/ipcp-dev.h @@ -21,10 +21,6 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include -#include - -#include #include #ifndef OUROBOROS_IPCP_DEV_H @@ -49,4 +45,7 @@ void ipcp_flow_fini(int fd); void ipcp_flow_del(struct shm_du_buff * sdb); +int ipcp_flow_get_qoscube(int fd, + enum qos_cube * cube); + #endif /* OUROBOROS_IPCP_DEV_H */ diff --git a/include/ouroboros/qos.h b/include/ouroboros/qos.h index 8f573b7d..047e6288 100644 --- a/include/ouroboros/qos.h +++ b/include/ouroboros/qos.h @@ -26,9 +26,9 @@ #include /* FIXME: may need revision */ -struct qos_spec { +typedef struct qos_spec { uint32_t delay; uint32_t jitter; -}; +} qosspec_t; #endif -- cgit v1.2.3