summaryrefslogtreecommitdiff
path: root/fw/man
diff options
context:
space:
mode:
Diffstat (limited to 'fw/man')
-rw-r--r--fw/man/fw46
1 files changed, 45 insertions, 1 deletions
diff --git a/fw/man/fw b/fw/man/fw
index 5a7f592..1b6b1d3 100644
--- a/fw/man/fw
+++ b/fw/man/fw
@@ -126,6 +126,39 @@ A refused write fails, and the diagnostic is what
.IR dial (2)
reports to the program that tried it.
.PP
+The
+.B /net
+it serves is named rather than filtered: protocol directories and their
+conversations, plus
+.BR cs ,
+.BR dns ,
+.BR arp ,
+.BR bootp ,
+.BR iproute ,
+.B ipselftab
+and
+.BR ndb ,
+of which only
+.B cs
+and
+.B dns
+may be written.
+Nothing else is there at all - not a card, not
+.BR ipmux ,
+not
+.BR log ,
+not a protocol's
+.B trans
+file, and not an interface's
+.B data
+or
+.B snoop
+file, each of which is a wire.
+A protocol
+.I fw
+has not been told about is one nobody in the namespace can reach, which
+is the safe way for this list to be out of date.
+.PP
Because the policy lives in a namespace, each program can have its own.
Filtering a program's requests is not a boundary by itself - see
.B CONTAINMENT
@@ -441,7 +474,18 @@ IPv6 extension headers are not walked; such packets are matched on their
addresses and next-header protocol alone.
ICMP has no type or code matching.
.PP
-Taking a card is destructive and is not undone reliably.
+A fragmented datagram does not cross.
+Only the first fragment carries the transport header, so the rest match
+no port, and a rule set written in ports - which is every rule set worth
+writing - denies them.
+The first fragment arrives and the receiver waits for the others until
+it gives up.
+Reading ports out of a later fragment, which is what
+.I fw
+did before, is worse: a fragment whose payload bytes happen to match an
+open connection is then let through.
+.PP
+Taking a card is destructive and is not undone.
The interface that replaces it is unbound when
.I fw
stops, and the address goes with it, so a