summaryrefslogtreecommitdiff
path: root/src/lib/dev.c
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2021-12-27 12:57:52 +0100
committerSander Vrijders <sander@ouroboros.rocks>2021-12-29 09:12:39 +0100
commit80f6513802c56480582c8b5baa2168b9e5268aaa (patch)
tree69753cef02ba43ca4dec30feb4ee6f6a09f47b58 /src/lib/dev.c
parent98cd70a4b2358d8dd1c3b6e4a061d7eaadcb3bd1 (diff)
downloadouroboros-80f6513802c56480582c8b5baa2168b9e5268aaa.tar.gz
ouroboros-80f6513802c56480582c8b5baa2168b9e5268aaa.zip
lib: Don't use pointer to set FRCT flags
The fccntl call FRCTSFLAGS was using a pointer to a flags so set flags, which should just be a regular uint16_t. For instance, the FRCTLINGER flags can now be turned off using fccntl(fd, FRCTSFLAGS, FRCTFRESCNTL | FRCTFRTX) leaving only resource control (flow control, FRCTFRESCNTL) and retransmission enabled. Note that retransmission (FRCTFRTX) can't be enabled or disabled on a live flow, it will be set on flow allocation. Updates the man page for fccntl to add these FRCT options. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/lib/dev.c')
-rw-r--r--src/lib/dev.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/lib/dev.c b/src/lib/dev.c
index c8b7d93b..4416a03e 100644
--- a/src/lib/dev.c
+++ b/src/lib/dev.c
@@ -853,6 +853,7 @@ int fccntl(int fd,
{
uint32_t * fflags;
uint16_t * cflags;
+ uint16_t csflags;
va_list l;
struct timespec * timeo;
qosspec_t * qs;
@@ -963,15 +964,13 @@ int fccntl(int fd,
*fflags = flow->oflags;
break;
case FRCTSFLAGS:
- cflags = va_arg(l, uint16_t *);
- if (cflags == NULL)
- goto einval;
+ csflags = (uint16_t) va_arg(l, uint32_t);
if (flow->frcti == NULL)
goto eperm;
- frcti_setflags(flow->frcti, *cflags);
+ frcti_setflags(flow->frcti, csflags);
break;
case FRCTGFLAGS:
- cflags = (uint16_t *) va_arg(l, int *);
+ cflags = (uint16_t *) va_arg(l, uint32_t *);
if (cflags == NULL)
goto einval;
if (flow->frcti == NULL)