[aprssig] SATgates ? (again)
John Langner WB2OSZ
wb2osz at comcast.net
Wed Jan 27 08:03:32 CST 2016
The packet filtering capability, built in to the Dire Wolf TNC / Digipeater / Igate, can easily be configured for most of the cases discussed in this thread. The filter expression format is loosely based on the APRS-IS "Server-side Filter Commands" with the addition of logical operators (&, |, ! meaning and, or, not) to combine the filter results.
Suppose you wanted to run a SATgate to forward anything either from some station called "RS0ISS" or anything digipeated by it. That's easy. The filter could look like:
FILTER 0 ig b/RS0ISS | d/RS0ISS
That means when forwarding from RF channel 0, through the IGate function, accept packets that are from RS0ISS or have been digipeated by RS0ISS. The "b" filter matches the source address. The "d" filter only considers digipeater addresses that have already been used.
Consider the case where you want to run a normal terrestrial IGate and a SATgate at the same time. Suppose that some nearby earth station sent a packet via RS0ISS-4. A nearby observer might see something like this:
The first one was heard directly from the source. The second one is the retransmission by the digipeater named RS0ISS-4. In this context, the "*" means that the digipeater address has been used. i.e. We are hearing the digipeater, not the source station directly. If we send both of these to an APRS Internet Server, the second one will be dropped as a duplicate. How could we filter out the first one and let the second through?
One suggestion was to ignore all packets heard directly from the source and process only those which have been digipeated. In this case the filter would be:
FILTER 0 ig d/*
Here "*" is a wildcard meaning match anything. Dropping anything heard directly would interfere with the normal IGate behavior. The "v" filter is useful in this case.
FILTER 0 ig ! v/RS0ISS*/ARISS
"v" also looks at the digipeater addresses but considers only those which have NOT been used. In this example, "v/RS0ISS*/ARISS" produces a match if any UNUSED digipeater address matches RS0ISS (with any SSID, due to wildcard), or exactly ARISS. The "!" inverts the following value.
We end up dropping the first example packet because it is addressed to travel via certain digipeaters but hasn't yet. The second example packet, and other normal terrestrial packets - whether heard directly or via digipeater - are allowed to continue to the APRS Internet Server.
More information about the aprssig