diff options
author | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-12-12 13:24:17 +0100 |
---|---|---|
committer | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2016-12-12 15:10:30 +0100 |
commit | f8c14e0246a6c9cb5e8ff47869b5968abb63f010 (patch) | |
tree | d91c005451a74822516669f3f7cc3ade34971abb /include | |
parent | b731adbf7b6fa16490f7abf94e2662d82d76cce0 (diff) | |
download | ouroboros-f8c14e0246a6c9cb5e8ff47869b5968abb63f010.tar.gz ouroboros-f8c14e0246a6c9cb5e8ff47869b5968abb63f010.zip |
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.
Diffstat (limited to 'include')
-rw-r--r-- | include/ouroboros/dev.h | 10 | ||||
-rw-r--r-- | include/ouroboros/fcntl.h | 19 | ||||
-rw-r--r-- | include/ouroboros/ipcp-dev.h | 7 | ||||
-rw-r--r-- | include/ouroboros/qos.h | 4 |
4 files changed, 24 insertions, 16 deletions
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 <sys/time.h> + /* 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 <unistd.h> -#include <time.h> - -#include <ouroboros/qos.h> #include <ouroboros/shm_rdrbuff.h> #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 <stdint.h> /* FIXME: may need revision */ -struct qos_spec { +typedef struct qos_spec { uint32_t delay; uint32_t jitter; -}; +} qosspec_t; #endif |