6 * Data transfer interface opening
11 #include <gpxe/tables.h>
12 #include <gpxe/socket.h>
14 struct xfer_interface
;
21 * Parameter list for open() is:
26 /** Location is a URI string
28 * Parameter list for open() is:
30 * const char *uri_string;
33 /** Location is a socket
35 * Parameter list for open() is:
38 * struct sockaddr *peer;
39 * struct sockaddr *local;
48 * This is the "scheme" portion of the URI, e.g. "http" or
54 * @v xfer Data transfer interface
56 * @ret rc Return status code
58 int ( * open
) ( struct xfer_interface
*xfer
, struct uri
*uri
);
61 /** Register a URI opener */
62 #define __uri_opener __table ( struct uri_opener, uri_openers, 01 )
64 /** A socket opener */
65 struct socket_opener
{
66 /** Communication semantics (e.g. SOCK_STREAM) */
68 /** Address family (e.g. AF_INET) */
72 * @v xfer Data transfer interface
73 * @v peer Peer socket address
74 * @v local Local socket address, or NULL
75 * @ret rc Return status code
77 int ( * open
) ( struct xfer_interface
*xfer
, struct sockaddr
*peer
,
78 struct sockaddr
*local
);
81 /** Register a socket opener */
82 #define __socket_opener __table ( struct socket_opener, socket_openers, 01 )
84 extern int xfer_open_uri ( struct xfer_interface
*xfer
, struct uri
*uri
);
85 extern int xfer_open_uri_string ( struct xfer_interface
*xfer
,
86 const char *uri_string
);
87 extern int xfer_open_named_socket ( struct xfer_interface
*xfer
,
88 int semantics
, struct sockaddr
*peer
,
89 const char *name
, struct sockaddr
*local
);
90 extern int xfer_open_socket ( struct xfer_interface
*xfer
, int semantics
,
91 struct sockaddr
*peer
, struct sockaddr
*local
);
92 extern int xfer_vopen ( struct xfer_interface
*xfer
, int type
, va_list args
);
93 extern int xfer_open ( struct xfer_interface
*xfer
, int type
, ... );
95 #endif /* _GPXE_OPEN_H */