summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluigi <luigi@FreeBSD.org>2002-08-15 16:53:43 +0000
committerluigi <luigi@FreeBSD.org>2002-08-15 16:53:43 +0000
commit2cf7fe40e756636fd473435f5384d5b289003383 (patch)
tree97b2cb6feae80af918fa72af7390006c5860f8b9
parent1aa234e4f74132cfc11fa0027fb5c74b48611e4c (diff)
downloadFreeBSD-src-2cf7fe40e756636fd473435f5384d5b289003383.zip
FreeBSD-src-2cf7fe40e756636fd473435f5384d5b289003383.tar.gz
Kernel support for a dummynet option:
When a pipe or queue has the "noerror" attribute, do not report drops to the caller (ip_output() and friends). (2 lines to implement it, 2 lines to document it.) This will let you simulate losses on the sender side as if they happened in the middle of the network, i.e. with no explicit feedback to the sender. manpage and ipfw2.c changes to follow shortly, together with other ipfw2 changes. Requested by: silby MFC after: 3 days
-rw-r--r--sys/netinet/ip_dummynet.c2
-rw-r--r--sys/netinet/ip_dummynet.h1
2 files changed, 2 insertions, 1 deletions
diff --git a/sys/netinet/ip_dummynet.c b/sys/netinet/ip_dummynet.c
index 4a407d1..49f58fc 100644
--- a/sys/netinet/ip_dummynet.c
+++ b/sys/netinet/ip_dummynet.c
@@ -1246,7 +1246,7 @@ dropit:
if (q)
q->drops++ ;
m_freem(m);
- return ENOBUFS ;
+ return ( (fs && (fs->flags_fs & DN_NOERROR)) ? 0 : ENOBUFS);
}
/*
diff --git a/sys/netinet/ip_dummynet.h b/sys/netinet/ip_dummynet.h
index 30c5f6f..e8ae0e9 100644
--- a/sys/netinet/ip_dummynet.h
+++ b/sys/netinet/ip_dummynet.h
@@ -259,6 +259,7 @@ struct dn_flow_set {
#define DN_IS_RED 0x0002
#define DN_IS_GENTLE_RED 0x0004
#define DN_QSIZE_IS_BYTES 0x0008 /* queue size is measured in bytes */
+#define DN_NOERROR 0x0010 /* do not report ENOBUFS on drops */
#define DN_IS_PIPE 0x4000
#define DN_IS_QUEUE 0x8000
OpenPOWER on IntegriCloud