RAW Sockets - HDLC or Ethernet

Russell McGuire rmcguire at videopresence.com
Thu Mar 6 20:24:30 EST 2008


Anyone,

Yet another mysterious question, at least to me.

I have written to simple utilities to send and receive a file / data through
a newly created driver, HDLC using an MPC8360E. 
Though I doubt this question is limited to that specific HW.

The main question is that everything I send though device HDLC0 I can
immediately read from HDLC0 even though logically there is no connection
there. It as if the kernel is immediately allowing me to read from the same
device, what a separate application just wrote.???
HOW CAN THIS BE?

Details:
I have two applications: send and receive.  (pseudo code as follows)

Send opens a socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)).
And binds it (AF_PACKET, ETH_P_HLDC, if_index(hdlc0))

Receive opens a socket to the same device 
socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))
bind(AF_PACKET, ETH_P_ALL, if_index(hdlc0)

Note they are opening the same device.

Now if I send anything through the send application, I immediately receive
it via the receive application??
Note, entirely separate processes!

Note, there is NO hardware loopback, this should be a dead end, and I should
get nothing back at least as far as HW is concerned.

What am I missing, that causes all my TX data to show up immediately in the
RX app? Note I have verified my HDLC drier is not actually receiving
anything, so is there something in the kernel that is bridging the TX / RX
paths, or am I just missing the function of this? If so how can I use RAW
mode, while not mixing this, or at least keeping them separate in the
applications?

-Russ
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://ozlabs.org/pipermail/linuxppc-embedded/attachments/20080306/1f717a71/attachment.htm 


More information about the Linuxppc-embedded mailing list