summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/man/fccntl.319
-rw-r--r--doc/man/flow_alloc.33
-rw-r--r--src/lib/dev.c9
3 files changed, 18 insertions, 13 deletions
diff --git a/doc/man/fccntl.3 b/doc/man/fccntl.3
index 492cff46..c4706708 100644
--- a/doc/man/fccntl.3
+++ b/doc/man/fccntl.3
@@ -40,8 +40,8 @@ disables the timeout.
\fBFLOWGQOSSPEC\fR - retrieve the current QoS specification of the
flow. Takes a \fBqosspec_t * \fIqs\fR as third argument.
-\fBFLOWSFLAGS\fR - set flow flags. Takes flow flags as third
-argument. Supported flags are:
+\fBFLOWSFLAGS\fR - set flow flags. Takes flow \fBuint32_t\fR
+\fIflags\fR as third argument. Supported flags are:
.RS 8
\fIFLOWFRDONLY\fR - set flow to read-only.
@@ -67,25 +67,30 @@ no partial writes).
.RE
-\fBFLOWGFLAGS\fR - get the current flow flags. Takes an \fBuint32_t
+\fBFLOWGFLAGS\fR - get the current flow flags. Takes an \fBuint32_t *
\fIflags\fR as third argument.
\fBFLOWGRXQLEN\fR - get the current number of packets in the receive
-buffer. Takes a \fBsize_t \fIqlen\fR as third argument.
+buffer. Takes a \fBsize_t \fIqlen\fR * as third argument.
\fBFLOWGTXQLEN\fR - get the current number of packets in the transmit
-buffer. Takes a \fBsize_t \fIqlen\fR as third argument.
+buffer. Takes a \fBsize_t \fIqlen\fR * as third argument.
-\fBFRCTGFLAGS\fR - get the current flow flags. Takes an \fBuint16_t
+\fBFRCTSFLAGS\fR - set the current flow flags. Takes an \fBuint16_t
\fIflags\fR as third argument. Supported flags are:
.RS 8
\fIFRCTFRESCNTRL\fR - resource control enabled.
-\fIFRCTFRTX\fR - retransmission enabled.
+\fIFRCTFRTX\fR - retransmission enabled. Cannot be modified and will
+be ignored on set.
+
+\fIFRCTFLINGER\fR - finish connection on flow deallocation.
.RE
+\fBFRCTGFLAGS\fR - get the current flow flags. Takes an \fBuint16_t *
+\fIflags\fR as third argument.
.SH RETURN VALUE
diff --git a/doc/man/flow_alloc.3 b/doc/man/flow_alloc.3
index a357ee19..f67bf97a 100644
--- a/doc/man/flow_alloc.3
+++ b/doc/man/flow_alloc.3
@@ -59,7 +59,8 @@ The \fBflow_join\fR() function allows applications to join a broadcast
flow provided by a broadcast layer. The dst is the layer name.
The \fBflow_dealloc\fR() function will release any resources
-associated with the flow.
+associated with the flow. This call may block and keep reliable flows
+active until all packets are acknowledged.
A \fBqosspec_t\fR specifies the following QoS characteristics of a
flow:
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)