[tables] Incorporate table data type information into table definition
[people/sha0/gpxe.git] / src / include / gpxe / arp.h
1 #ifndef _GPXE_ARP_H
2 #define _GPXE_ARP_H
3
4 /** @file
5  *
6  * Address Resolution Protocol
7  *
8  */
9
10 #include <gpxe/tables.h>
11
12 struct net_device;
13 struct net_protocol;
14
15 /** A network-layer protocol that relies upon ARP */
16 struct arp_net_protocol {
17         /** Network-layer protocol */
18         struct net_protocol *net_protocol;
19         /** Check existence of address
20          *
21          * @v netdev    Network device
22          * @v net_addr  Network-layer address
23          * @ret rc      Return status code
24          */
25         int ( * check ) ( struct net_device *netdev,
26                           const void *net_addr );
27 };
28
29 /** ARP protocol table */
30 #define ARP_NET_PROTOCOLS \
31         __table ( struct arp_net_protocol, "arp_net_protocols" )
32
33 /** Declare an ARP protocol */
34 #define __arp_net_protocol __table_entry ( ARP_NET_PROTOCOLS, 01 )
35
36 extern struct net_protocol arp_protocol;
37
38 extern int arp_resolve ( struct net_device *netdev,
39                          struct net_protocol *net_protocol,
40                          const void *dest_net_addr,
41                          const void *source_net_addr,
42                          void *dest_ll_addr );
43
44 #endif /* _GPXE_ARP_H */