APRS Digipeatersoftware DIGI_NED
-
Bookmark This site

Preempt commands

"Preempt:" enables you to take packets you hear although there are unused digipeaters before you in the via-list.

Example.

Say you receive a packet with the following path: A>B,C*,D,E,F

Assume you are digi 'E' but you happen to hear the packet from 'C' directly. Normally the digi would not do anything because the next digi due is 'D'. If you specify a "preempt:" rule like this:

preempt: all E

Then packets received from "all" ports will be searched for the occurrence of unused digi-call "E". When found the received packet will be changed by removing all unused digipeater calls before the call you searched. If there are no unused digipeaters before the call you searched then preempt will do nothing. So with the example A>B,C*,D,E,F and the above "preempt:" rule, the packet will be modified to: A>B,C*,E,F

So the next unused digipeater is now 'E'. Further processing of the packet is done by applying the normal digipeat:" rules to the modified packet. So "preempt" is a kind of pre-processing.

So the unused calls are just removed from the digi-list. In some cases you want to keep a call. This can be achieved by the "preempt_keep:" rule. All digipeaters in the "preempt_keep" rules are relocated in the via-list.

Assume you have this:

preempt_keep: D

In this case digipeater D will remain in the via-list after preempting. So with the example A>B,C*,D,E,F and the previously described "preempt:" rule, the packet will be modified to: A>B,C*,E,D,F

So all unused digipeater calls are removed but the ones defined in "preempt_keep:" are inserted again after the preempted call. The kept digis will remain in sequence.

Example:

preempt: all H
preempt_keep: D,E,G

Packet A>B,C*,D,E,F,G,H,I will be modified to A>B,C*,H,D,E,G,I

WARNING: Never use generic calls like "RELAY" or "WIDE" in "preempt_keep:" unless you really want to get yourself into trouble...

"preempt_keep:" can take wildcards. For example to keep all Dutch, German and Belgian calls you can specify:

preempt_keep: P*,D*,O*

To prevent that generic calls are also kept there is another rule called "preempt_never_keep:". With "preempt_never_keep:" calls are specified that shall never be kept on preempting, regardless if the call matches with "preempt_never_keep:". This is useful to avoid re-insertion of generic calls when wild-cards are used in the "preempt_never_keep:" rule. Example:

preempt_keep: *
preempt_never_keep: RELAY*,WIDE*,TRACE*

In this example all calls are kept in the via-list when preempting, except all calls that start with RELAY, WIDE or TRACE.

One advanced feature is that the preempted call can be exchanged for a new call during the preempt preprocessing.

Example:

preempt: 1 E Z

Then packets received from port "1" ports will be searched for the occurrence of unused digi-call "E". When found the received packet will be changed by removing all unused digipeater calls before the call you searched. If there are no unused digipeaters before the call you searched then preempt will do nothing. The digipeater call E will be replaced by Z. So with the example A>B,C*,D,E,F and the above "preempt:" rule, the packet will be modified to: A>B,C*,Z,F

One of the tricks you can do with this is to have a rule like:

preempt: all RELAY IGNORE

Inbound packets will be searched for RELAY. Since preempting is only done when there are unused digipeaters before the searched call, this means that this preempting only takes place when RELAY is not the first digipeater!

Example:

Inbound packet: A>B,WIDE,RELAY,WIDE3-3
is preempted to: A>B,IGNORE,WIDE3-3

Now make sure there is no "digipeat:" rule for a digipeater called "IGNORE" and none of the digipeating rules will match. Result: the frame is not digipeated...

powered by cmsimple.dk | cmsimple-styles.com template modified by PE1MEW