net: Refactor to separate the UDP handler from the ARP handler

Call a built-in dummy if none is registered... don't require
protocols to register a handler (eliminating dummies)
NetConsole now uses the ARP handler when waiting on arp
(instead of needing a #define hack in arp.c)
Clear handlers at the end of net loop

Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>
Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Joe Hershberger 2012-05-23 07:59:15 +00:00
parent 22f6e99d5b
commit ece223b52a
10 changed files with 80 additions and 56 deletions

View file

@ -460,8 +460,10 @@ extern int NetCksumOk(uchar *, int); /* Return true if cksum OK */
extern uint NetCksum(uchar *, int); /* Calculate the checksum */
/* Callbacks */
extern rxhand_f *NetGetHandler(void); /* Get RX packet handler */
extern void NetSetHandler(rxhand_f *); /* Set RX packet handler */
extern rxhand_f *net_get_udp_handler(void); /* Get UDP RX packet handler */
extern void net_set_udp_handler(rxhand_f *); /* Set UDP RX packet handler */
extern rxhand_f *net_get_arp_handler(void); /* Get ARP RX packet handler */
extern void net_set_arp_handler(rxhand_f *); /* Set ARP RX packet handler */
extern void net_set_icmp_handler(rxhand_icmp_f *f); /* Set ICMP RX handler */
extern void NetSetTimeout(ulong, thand_f *);/* Set timeout handler */
@ -487,6 +489,7 @@ static inline void NetSendPacket(uchar *pkt, int len)
/*
* Transmit UDP packet, performing ARP request if needed
* (ether will be populated)
*
* @param ether Raw packet buffer
* @param dest IP address to send the datagram to