open.h
Go to the documentation of this file.00001 #ifndef _GPXE_OPEN_H
00002 #define _GPXE_OPEN_H
00003
00004
00005
00006
00007
00008
00009
00010 FILE_LICENCE ( GPL2_OR_LATER );
00011
00012 #include <stdarg.h>
00013 #include <gpxe/tables.h>
00014 #include <gpxe/socket.h>
00015
00016 struct xfer_interface;
00017 struct uri;
00018
00019
00020 enum {
00021
00022
00023
00024
00025
00026
00027 LOCATION_URI = 1,
00028
00029
00030
00031
00032
00033
00034 LOCATION_URI_STRING,
00035
00036
00037
00038
00039
00040
00041
00042
00043 LOCATION_SOCKET,
00044 };
00045
00046
00047 struct uri_opener {
00048
00049
00050
00051
00052
00053 const char *scheme;
00054
00055
00056
00057
00058
00059
00060 int ( * open ) ( struct xfer_interface *xfer, struct uri *uri );
00061 };
00062
00063
00064 #define URI_OPENERS __table ( struct uri_opener, "uri_openers" )
00065
00066
00067 #define __uri_opener __table_entry ( URI_OPENERS, 01 )
00068
00069
00070 struct socket_opener {
00071
00072 int semantics;
00073
00074 int family;
00075
00076
00077
00078
00079
00080
00081
00082 int ( * open ) ( struct xfer_interface *xfer, struct sockaddr *peer,
00083 struct sockaddr *local );
00084 };
00085
00086
00087 #define SOCKET_OPENERS __table ( struct socket_opener, "socket_openers" )
00088
00089
00090 #define __socket_opener __table_entry ( SOCKET_OPENERS, 01 )
00091
00092 extern int xfer_open_uri ( struct xfer_interface *xfer, struct uri *uri );
00093 extern int xfer_open_uri_string ( struct xfer_interface *xfer,
00094 const char *uri_string );
00095 extern int xfer_open_named_socket ( struct xfer_interface *xfer,
00096 int semantics, struct sockaddr *peer,
00097 const char *name, struct sockaddr *local );
00098 extern int xfer_open_socket ( struct xfer_interface *xfer, int semantics,
00099 struct sockaddr *peer, struct sockaddr *local );
00100 extern int xfer_vopen ( struct xfer_interface *xfer, int type, va_list args );
00101 extern int xfer_open ( struct xfer_interface *xfer, int type, ... );
00102 extern int xfer_vreopen ( struct xfer_interface *xfer, int type,
00103 va_list args );
00104
00105 #endif