When using the high-level FUSE API, the filesystem may choose between
two modes of operation when implementing readdir().
1) The readdir implementation ignores the offset parameter, and
passes zero to the filler function's offset. The filler function
will not return '1' (unless an error happens), so the whole
directory is read in a single readdir operation.
2) The readdir implementation keeps track of the offsets of the
directory entries. It uses the offset parameter and always passes
non-zero offset to the filler function. When the buffer is full
(or an error happens) the filler function will return '1'.
We currently don't support 1) and instead implement an alternative
mode that is stateless but emulates the behaviour. For each
FUSE_READDIR received from the kernel, it will invoke the file
system's readdir() callback and ask it to completely fill the buffer
again, but ignore any entries that are before the given offset or
exceed the size of the buffer. This of course has a performance
[11 lines not shown]
Do not attempt to drain write buffer on stuck clients, since it requires
a weird dance to make libevent do it. Instead, just ignore the client
and destroy the buffer normally if not drained in 10 seconds.
Incorporate new RTR v2 error codes from draft-ietf-sidrops-8210bis-26
RTR v2 introduces additional error codes:
9: ASPA Provider List Error (fatal): The received ASPA PDU has an
incorrect list of Provider Autonomous System Numbers.
10: Transport Error (fatal): An error such as a stall or other transport
layer failure occurred.
11: Ordering Error (fatal): The received PDU does not conform with the
specification defined ordering.
12: Cache Restart (non-fatal): The cache is restarting.
13: Cache Shutdown (fatal): The cache has shut down deliberately.
OK claudio@