Protocols also take a pointer to a sockaddr_in.
[people/lynusvaz/gpxe.git] / src / include / proto.h
1 #ifndef PROTO_H
2 #define PROTO_H
3
4 #include "tables.h"
5
6 struct protocol {
7         char *name;
8         int ( * load ) ( char *url,
9                          struct sockaddr_in *server,
10                          int ( * process ) ( unsigned char *data,
11                                              unsigned int blocknum,
12                                              unsigned int len,
13                                              int eof ) );
14 };
15
16 /*
17  * Protocols that should be used if no explicit protocol is specified
18  * (i.e. tftp) should use __default_protocol; all other protocols
19  * should use __protocol.
20  *
21  */
22 #define __protocol_start                __table_start(protocol)
23 #define __protocol                      __table(protocol,01)
24 #define __default_protocol_start        __table(protocol,02)
25 #define __default_protocol              __table(protocol,03)
26 #define __protocol_end                  __table_end(protocol)
27
28 /*
29  * Functions in proto.c
30  *
31  */
32 extern struct protocol * identify_protocol ( const char *name );
33
34 #endif /* PROTO_H */