-
Notifications
You must be signed in to change notification settings - Fork 103
Filter Architecture
###Overview These define filters that takes place in the code on the BBB, a particular implementation can certainly be talking to a different device which is making the actual decisions over TCP/IP, and it certainly doesn't stop something w/in the device or host implementation adding it's own filtering.
###Filter function
Each packet filter will consist of a filter function that accepts a packet, optionally modifies it, then sets one or more flags on it.
transmit: true by default, this controls whether the packet is passed on to the host/device or is dropped after filtering.
filter: true by default, this controls whether the packet is subject to subsequent filtering
###Filter endpoint criteria
These control which endpoints a filter is attached to during relaying setup.
These all default to match any endpoint if not set, so some criteria could be:
*any endpoint
*only interrupt IN endpoints
*only endpoints on a certain device
*General *min/max: a minimum and maximum value can be set for this value (or they can be equal to require an exact match) *mask: a bitmask is used in addition to the value to control which bits are signficant when matching *Endpoint attributes *Endpoint Address (mask) *Attributes (mask): the type of endpoint e.g. interrupt/bulk/etc *PacketSize min/max *Interval min/max *Interface attributes *Number *Alternate *Class *SubClass *Protocol *Configuration attributes *Number *Attributes (mask) *high speed: whether this is a high speed configuration *Device attributes *Class *SubClass *Protocol *EP0 packetsize min/max *Vendor *Product *Release
###Filter Packet criteria Rules can also be applied as the packets are received. An 8 byte value can be supplied as well as an 8 byte mask. The callback will only be called for a packet if the bits marked as significant by the mask match the 1st 8 bytes of a packet (for a setup packet it will match against the setup packet itself, rather than the data portion). NB: if the packet size is smaller than the significant bits defined in the mask it will not match.
- log traffic (TCP/IP or locally)
- modify traffic on the fly
- block certain requests