diff options
author | Thomas Osterried <ax25@x-berg.in-berlin.de> | 2016-03-12 14:10:55 +0100 |
---|---|---|
committer | Thomas Osterried <ax25@x-berg.in-berlin.de> | 2016-03-12 14:10:55 +0100 |
commit | a0477a6737dd0012cadb88cebcc746d1c03c4fd0 (patch) | |
tree | 8d73fd0d79e5ae65a16472a9813799bfd76cdd72 /call/crc.h | |
parent | 11c04b0da3684b8922a094dd293773de3214f876 (diff) |
listen -a shows on segmented packets ok, but shows also the defragmented,
packet, but garbled:
bpq2: fm DL9SAU to DL9SAU-15 ctl I00+ pid=8(segment) len 4 remain 0
0000 E2 E3 E4 | ...
Reason:
the defragmented packet is passed to netif_rx(skb).
It has skb->protocol = htons(ETH_P_IP), but still belongs to
ifr.ifr_hwaddr.sa_family == AF_AX25.
listen -a looks for every iface with like ifr.ifr_hwaddr.sa_family == AF_AX25
and thus gets the desegmented packet. This desegmented packet has already
lost his ax25 header information (it's the IP datagram that netif_rx sees),
prefixed by AX25_P_IP = 0xcc:
strace:
recvfrom(3, "\0\210\230r\246\202\252\340\210\230r\246\202\252\177\314\10\201\314E\0\1\1\0\32\0\0?\1!\327,\200\200\n,\200\200\1\0\0\347\300\21\6\0\1\26\23\303V..
recvfrom(3, "\314E\0\1\1\0\32\0\0?\1!\327,\200\200\n,\200\200\1\0\0\347\300\21\6\0\1\26\23\303V..
\314 == 0xcc == AX25_P_IP
We can make safely make the assumption for first byte == 0xcc and length > 2,
that we safeley can detect those IP frames, and then ignore it.
Signed-off-by: Thomas Osterried <ax25@x-berg.in-berlin.de>
Diffstat (limited to 'call/crc.h')
0 files changed, 0 insertions, 0 deletions