K 10 svn:author V 5 andre K 8 svn:date V 27 2012-10-23T19:26:49.192251Z K 7 svn:log V 1597 Extend PFIL hooks with explicit hook ordering and reinjecting of packets into the chain after a particular hook. Add pfil_add_hook_order() taking a numerical value between 0-255 to specify the relative position of this hook in the list of all hooks. Lower numbers have higher ordering (ie. will run first). Within a particular order value the last added will be the first to run. Three fixed positions are defined: PFIL_ORDER_FIRST 0 PFIL_ORDER_DEFAULT 200 PFIL_ORDER_LAST 255 Previously the order was non-deterministic and dependent on the ordering of the add hook calls. The last added would always become the first to run. Non-ordering aware pfil consumers using the pfil_add_hook() call get PFIL_ORDER_DEFAULT assigned resulting in the previous ordering. The ordering is determined at hookup time by the pfil consumer and no tool for later manual re-ordering is provided. Most well known pfil consumers are expected to have a predetermined preferred position in the order. A tool or sysctl reporting the order of hooked pfil consumers will be provided later. Add pfil_run_inject() taking an opaque cookie value obtained with pfil_get_cookie() after the hook is added. Processing of the hook chain skips all hooks until after the one with the same cookie. The cookie is valid as long as this hook remains hooked. If no cookie is found processing is started with the first hook again. If the cookie is invalid processing of all hooks is effectively skipped. With this pfil hooks consumers can dequeue packets for further processing and later re-inject them with the next hook. END