~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to Documentation/networking/tc-actions-env-rules.txt

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
The "environmental" rules for authors of any new tc actions are:
 
3
 
 
4
1) If you stealeth or borroweth any packet thou shalt be branching
 
5
from the righteous path and thou shalt cloneth.
 
6
 
 
7
For example if your action queues a packet to be processed later,
 
8
or intentionally branches by redirecting a packet, then you need to
 
9
clone the packet.
 
10
 
 
11
There are certain fields in the skb tc_verd that need to be reset so we
 
12
avoid loops, etc.  A few are generic enough that skb_act_clone()
 
13
resets them for you, so invoke skb_act_clone() rather than skb_clone().
 
14
 
 
15
2) If you munge any packet thou shalt call pskb_expand_head in the case
 
16
someone else is referencing the skb. After that you "own" the skb.
 
17
You must also tell us if it is ok to munge the packet (TC_OK2MUNGE),
 
18
this way any action downstream can stomp on the packet.
 
19
 
 
20
3) Dropping packets you don't own is a no-no. You simply return
 
21
TC_ACT_SHOT to the caller and they will drop it.
 
22
 
 
23
The "environmental" rules for callers of actions (qdiscs etc) are:
 
24
 
 
25
*) Thou art responsible for freeing anything returned as being
 
26
TC_ACT_SHOT/STOLEN/QUEUED. If none of TC_ACT_SHOT/STOLEN/QUEUED is
 
27
returned, then all is great and you don't need to do anything.
 
28
 
 
29
Post on netdev if something is unclear.
 
30