[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#606338: ax25ipd transmission bug



> > I'm just wondering why the test isn't (*iframe&  0xf) == 0 which would
> > handle the full number of possible 16 possible TNCs.
> 
> That smells like it's a correct solution to me, given what the spec 
> says.  I will compile it with that test and let you know if I see any 
> issues.

The code does this:
read a kiss frame from tty and pass it to the from_kiss()-multiplexer in process.c.
Primordially, it only transfered data starting with iframe[0] = 0. Everyting else, like kiss commands, was discarded.
Then, due to process.c, VE3DJF and VE3PNX had the idea to support two-port-TNCs. They implemented two-port TNCs the hard way. Not three-port, not 16-port. Two port only:
#define FROM_PORT2(p)   (((*(p+1))&0x10)!=0)
#define FOR_PORT2(p)    (addrmatch(p,mycallsign2) || addrmatch(p,myalias2))
/* ve3djf and ve3pnx addition above 
It's really hard because they decided not to code a mycallsign-list[16] but mycallsign2, myalias2, etc..

They enhanced if (*iframe == '\0') in assemble_kiss() to if (*iframe == '\0' || *iframe == 0x10) in order to support their new feature. The commentary the line above shows the old intended behavior, /* Make sure that the control byte is zero */.

If you patch  it to accept kiss-port-3-to-15-packts, then the frames would be received. But the code for sendig it is not implementet, because there's no FROM_PORT3/mycallsign3,myalias3, FROM_PORT4/mycallsign4,..
You'd have to also implement this (and you'd should do it better).
Also, the brutal check 
                  if (dual_port == 1 && FOR_PORT2(a)) {
                        port = 0x10;
in from_ip() has to be done much more better.

Where comes dual_port > 0 come from?
config.c:
                dual_port = 1;
                if (mycallsign2[0] == '\0') {
                        dual_port = 0;
                }
eh? -- Yes. The ancient patch-submitter sets dual_port to 1 and looks if mycallsign2 is not et and then sets dual_port = 0.
This _is_ ugly.

Please make it better and send patches.

73,
	- Thomas  dl9sau



Reply to: