[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cipe
Subject:    Re: packet flow through CIPE.
From:       Olaf Titz <olaf () bigred ! inka ! de>
Date:       1998-11-08 15:43:26
[Download RAW message or body]

> Can someone explain the flow of a message through CIPE from the time it
> hits the computer until it's before your eyes?

In short:

1. Interrupt handler of NIC (or serial, whatever)
Hardware driver picks up data and queues it up internally.
Bottom half is activated.

2. Bottom half handler
Hardware driver queues packet:
 netif_rx() (net/core/dev.c)
Packet gets injected into IP engine:
 ip_rcv() (net/ipv4/ip_input.c)
Packet gets distributed to UDP
 (this is handled in different ways in 2.0 and 2.1)
Packet is queued to the UDP socket:
 udp_rcv() (net/ipv4/udp.c)
 sock_queue_rcv_skb() (include/net/sock.h)
ciped process is woken up:
 sock_def_wakeup() (net/core/sock.c)

3. CIPE's replaced UDP recvmsg routine, called from user mode
 cipe_recvmsg() (cipe/sock.c)
Packet is dequeued:
 skb_recv_datagram() (net/core/datagram.c)
Packet gets decrypted:
 cipe_decrypt_skb() (cipe/sock.c)
If it is a data packet, it is re-injected into the kernel IP engine:
 netif_rx()
Otherwise, it gets passed to ciped:
 return from cipe_recvmsg()
which then processes it as a key exchange packet.

Olaf


--
-Message sent by the cipe-l mailing list. To unsubscribe mail majordomo@inka.de

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic