Cort N0MJS <n0mjs@...>
Everyone following this thread…
First off – I have found the best technical way to match against socket address for validation instead of radio id. Making it efficient as possible involves saving the socket address as a tuple since on incoming packet, that requires no transformations. I looked at ways to optimize the client socket address lookup list and nothing really stood out as much different – all around 3.6uS (relative to my test system). String transformation on the other hand was about 12us.
Second off – looking through hblink.py and the applications… wow. This is going to be a pretty major PITA. To date, the primary mechanism for matching a source has been radio_id. The internal data structure that holds clients keys off of the radio_id. My choices are, change everything to key off of socket address instead, or build a second data structure with socket addresses.
The problem with changing it all to key on socket address instead of radio id is that this permeates EVERYTHING. It’s a major change, every application is affected, and the hbmonitor I was just getting off the ground is pretty much just going to be trashed.
The problem with creating a second structure to key on socket address is that there’s a lot of places where that’d still have to be correlated back to the radio ID structure – which is a time intensive process each time. And the biggest part of that is logging and debugging, where “Radio ID” no longer tells you the “source peer” in the system, which really is a deal-breaker to not have.
I’m going to hold off on changes for a while to see if a better method presents itself. Right now it looks like re-building it all with socket address as the peer identifier is the way to go…. and actually creates some nice efficiencies in processing I do not have now. The downside is that’s a “metric shit-ton” of re-writing. If I do that, I’ll need many iterations and a lot of testing, so I’ll create a branch to do it with and ask for volunteers to connect the “new” version with the “old version”, to BM, to MMDVMs, etc. and find problems.
0x49 DE N0MJS