Upcoming Features
Gog
GogExtra's On=...;
Gog****Extra must have an On=...; avp to tell which gop type the avps are to be copied from
GogIdleTimeout
A Gog should be released after a while if its Gops do not get any more pdus assigned to them.
GogAbsoluteTimeout
A Gop should autorelease itself after a certain time has passed since it has been created.
merge Gogs with common keys
Whenever a gog changes and some of its keys happen to match another gog(s) merge all the gogs into a single gog.
Gop
FullStop={TRUE|FALSE}
Attribute to GopDef, GopStop, and GopExtra to indicate that the key should be removed once the GopStop arrives, that way no more Gop****Key matching Pdus will be assigned to the Gop.
Pre-Started Gops
TO DO: These Gops should have the lifetime of the Gog they belong to, not infinite.
Transform
Transform's Mode=Map;
A Mapped version of transforms should exist where a fixed set of matching keys maps using a hash a fixed set of AVPLs to either be Inserted or Replace the matching set. This will save a lot of time for very long sequences of transformations.
Transformation AVP Operations
Create a set of operations for the insert/replace part of a Transform.
-
append
.operand>str;
-
prepend
.operand<str;
-
insert
.operand^pos^string;
-
slice
.operand[-pos1,pos2-pos3,pos4,pos5-];
-
replace
.operand~str1~str2;
-
convert to number and operate
.operand(+5,*8,-attr_a);
-- (integer only and RPN) -
"rename" AVP
.new$old;
Internal Features
avp_subscribe, avp_unsubscribe
internal optimization to save space and accelerate avpl ops. It eases memory management as well.
- use hash to hold avp2strs
- avp_hash and avp_equal
avpl to string to use a static buffer
- a static buffers should speed up avpl key matching
Memory management
There should be a limit in the amount of memory mate is allowed to use, once mate reaches the limit it should start to destroy the oldest items as newer items are created. This is essential to be able to use mate in long running tshark sniffs, but it could be a killer if using it interactivelly with wireshark.
Known Bugs
Those that are there to stay
There cannot be two identical AVPs in the same AVPL
This is not really a BUG. It is a deliberate choice taken in the very beginning in order to avoid AVPL match operations becoming too complex. This might become obnoxious. But that's how it is. If it is a problem not having more than one copy, your configuration must workaround it.
Example Workaround: add port=0;
when both ports are equal and only one port;
is inserted into the AVPL.
# transformations stop at the fisrt good match
# do nothing (insert an empty avpl) if both ports are defined
Action=Transform; Name=Fix_same_port; Mode=Insert; Match=Strict; port; port;
# insert a port=0; so that both ports are defined
Action=Transform; Name=Fix_same_port; Mode=Insert; Match=Every; port; .port=0;
Action=PduTransform; For=xxx_pdu; Name=Fix_same_port;
Those that have to go
The Gog Mechanism does not get properly reinitialized
It works OK at the first run it doesn't in the following ones.
Workarround: Restart wireshark.
Some AVPL operations make wireshark crash when the operand avpl is empty
In some ocasions an operation on an empty AVPL might cause wireshark to crash.
Workarround: Avoid empty AVPLs as operations the configuration. (Insert an empty AVPL works OK)
Fix: We need to be able to reproduce the condition (used config & capture file).
Some incorrect/incomplete GoG configurations cause wireshark to crash
It works fine if the config is correct. But in some cases You'll get a crash report instead of an error message.
Workarround: None Known. You got to fix that config anyway, don't you?
Gops with no GopStart might be or not be created
After reinitialization Gops with no GopStart might be or not be created, this happens in an apparently random fashion (some get created some don't, not always the same though)
Workarround: None Known.
Fix: none yet.
Imported from https://wiki.wireshark.org/Mate/Discussion on 2020-08-11 23:16:30 UTC